Vendredi dernier, j'ai mis à niveau mon serveur Ubuntu vers 11.10, qui fonctionne maintenant avec un noyau 3.0.0-12-server. Depuis lors, les performances globales ont chuté de façon spectaculaire. Avant la mise à niveau, la charge du système était d'environ 0,3, mais elle est actuellement de 22 à 30 sur un système à 8 cœurs avec 16 Go de RAM (10 Go gratuits, aucun échange utilisé).
J'allais blâmer le pilote du système de fichiers BTRFS et le tableau MD sous-jacent, car [md1_raid1] et [btrfs-transacti] consommaient beaucoup de ressources. Mais tous les [kworker / *: *] consomment beaucoup plus.
sar
a produit quelque chose de similaire constamment depuis vendredi:
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
Et iostat
confirme un taux d'écriture très faible:
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 question est: comment savoir pourquoi les threads kworker consomment autant de ressources (et laquelle)? Ou mieux: est-ce un problème connu avec le noyau 3.0, et puis-je le modifier avec les paramètres du noyau?
Éditer:
J'ai mis à jour le noyau vers la toute nouvelle version 3.1 comme recommandé par les développeurs BTRFS. Mais malheureusement, cela n'a rien changé.
pcie_ports=compat
ou pcie_ports=native
. (Essayez d'abord «natif». Il est moins susceptible de résoudre le problème mais moins susceptible de causer d'autres problèmes.)