Na última sexta-feira, atualizei meu servidor Ubuntu para 11.10, que agora roda com um kernel 3.0.0-12. Desde então, o desempenho geral caiu drasticamente. Antes da atualização, a carga do sistema era de cerca de 0,3, mas atualmente é de 22 a 30 em um sistema de CPU de 8 núcleos com 16 GB de RAM (10 GB gratuitos, sem troca usada).
Eu culparia o driver do sistema de arquivos BTRFS e a matriz MD subjacente, porque [md1_raid1] e [btrfs-transacti] consumiram muitos recursos. Mas todo o [kworker / *: *] consome muito mais.
sar
produziu algo semelhante a isso constantemente desde sexta-feira:
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
confirma uma taxa de gravação muito ruim:
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
A pergunta é: como rastrear por que os threads do kworker consomem tantos recursos (e qual)? Ou melhor: esse é um problema conhecido do kernel 3.0 e posso ajustá-lo com os parâmetros do kernel?
Editar:
Atualizei o Kernel para a nova versão 3.1, conforme recomendado pelos desenvolvedores do BTRFS. Mas, infelizmente, isso não mudou nada.
pcie_ports=compat
ou pcie_ports=native
. (Tente 'nativo' primeiro É menos provável para corrigir o problema, mas menos provável de causar outros problemas..)