Venerdì scorso ho aggiornato il mio server Ubuntu a 11.10, che ora funziona con un kernel 3.0.0-12-server. Da allora le prestazioni complessive sono diminuite drasticamente. Prima dell'aggiornamento il carico di sistema era di circa 0,3, ma attualmente è a 22-30 su un sistema CPU a 8 core con 16 GB di RAM (10 GB gratuiti, nessuno scambio utilizzato).
Stavo incolpando il driver del file system BTRFS e l'array MD sottostante, perché [md1_raid1] e [btrfs-transacti] hanno consumato molte risorse. Ma tutti i [kworker / *: *] consumano molto di più.
sar
ha emesso qualcosa di simile a questo costantemente da venerdì:
11:25:01 CPU %user %nice %system %iowait %steal %idle
11:35:01 all 1,55 0,00 70,98 8,99 0,00 18,48
11:45:01 all 1,51 0,00 68,29 10,67 0,00 19,53
11:55:01 all 1,40 0,00 65,52 13,53 0,00 19,55
12:05:01 all 0,95 0,00 66,23 10,73 0,00 22,10
E iostat
conferma un tasso di scrittura molto scarso:
sda 129,26 3059,12 614,31 258226022 51855269
sdb 98,78 24,28 3495,05 2049471 295023077
md1 191,96 202,63 611,95 17104003 51656068
md0 0,01 0,02 0,00 1980 109
La domanda è: come posso rintracciare perché i thread di kworker consumano così tante risorse (e quale)? O meglio: si tratta di un problema noto con il kernel 3.0 e posso modificarlo con i parametri del kernel?
Modificare:
Ho aggiornato il kernel alla nuovissima versione 3.1 come raccomandato dagli sviluppatori BTRFS. Ma sfortunatamente questo non ha cambiato nulla.
pcie_ports=compat
o pcie_ports=native
. (Prova prima "nativo". È meno probabile che risolva il problema ma meno probabilità di causare altri problemi.)