Letzten Freitag habe ich meinen Ubuntu-Server auf 11.10 aktualisiert, der jetzt mit einem 3.0.0-12-Server-Kernel läuft. Seitdem ist die Gesamtleistung dramatisch gesunken. Vor dem Upgrade betrug die Systemlast ca. 0,3, auf einem 8-Kern-CPU-System mit 16 GB RAM (10 GB frei, kein Swap verwendet) liegt sie derzeit bei 22-30.
Ich wollte den BTRFS-Dateisystemtreiber und das darunterliegende MD-Array beschuldigen, da [md1_raid1] und [btrfs-transacti] eine Menge Ressourcen verbraucht haben. Aber alle [kworker / *: *] verbrauchen viel mehr.
sar
hat seit Freitag ständig etwas Ähnliches ausgegeben:
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
Und iostat
bestätigt eine sehr schlechte Schreibrate:
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
Die Frage ist: Wie kann ich herausfinden, warum die kworker-Threads so viele Ressourcen verbrauchen (und welche)? Oder besser: Ist dies ein bekanntes Problem mit dem 3.0-Kernel und kann ich es mit Kernel-Parametern optimieren?
Bearbeiten:
Ich habe den Kernel auf die brandneue Version 3.1 aktualisiert, wie von den BTRFS-Entwicklern empfohlen. Daran hat sich leider nichts geändert.
quelle
pcie_ports=compat
oder zu bootenpcie_ports=native
. (Versuchen Sie zuerst "native". Es ist weniger wahrscheinlich, das Problem zu beheben, aber weniger wahrscheinlich, andere Probleme zu verursachen.)Antworten:
Ich habe diesen Thread auf lkml gefunden , der Ihre Frage ein wenig beantwortet. (Es scheint, als wäre sogar Linus selbst verwirrt, wie er den Ursprung dieser Fäden herausfinden könnte.)
Grundsätzlich gibt es zwei Möglichkeiten:
Dafür benötigen Sie ftrace , um in Ihrem Kernel kompiliert zu werden und um es zu aktivieren mit:
Weitere Informationen zu den Funktionen des Function Tracers von Linux finden Sie in der Dokumentation zu ftrace.txt .
Dies gibt aus, was alle Threads tun, und ist nützlich, um mehrere kleine Jobs zu verfolgen.
Dadurch wird der Stapel eines einzelnen Threads ausgegeben, der viel Arbeit leistet. Hier können Sie möglicherweise herausfinden, warum dieser bestimmte Thread (zum Beispiel) die CPU blockiert hat.
THE_OFFENDING_KWORKER
ist die pid des kworkers in der prozessliste.quelle
-E
Option zum Schlafen zu nutzen, und die CPU-Auslastung verschwand!Die Lösung lautet: Ich weiß nicht, wie ich die Ursache finden soll. Bisher hat mir noch niemand davon erzählt.
Im Gespräch mit den BTRFS-Entwicklern wurde jedoch ein Fehler in den btrfs-Treibern entdeckt, als viele kleine Dateien in sehr kurzer Zeit geschrieben wurden. Dies ist ein Problem bei Kerneln von 3.0 bis 3.1. Vielleicht wird es in 3.2 behoben.
In der Zwischenzeit habe ich einen Patch für den aktuellen Kernel bekommen, der das Problem behoben hat.
quelle
Ich hatte ein ähnliches Problem. Blick auf den Thread-Stack des Arbeiters:
Ich dachte, es sind die USB-Module. Ich hatte zuvor auf einem anderen Rechner mühelos alle USB- und [uex] HCI-Module modifiziert, als mir klar wurde, dass ich die Tastatur ausgeschaltet hatte (nicht einmal Strg-Umschalt-Sysrq-U!), Also endete ich damit:
hat den Trick gemacht:
Mein Hauptverdächtiger ist also dieses Gerät: RTL8723B * WIFI + Bluetooth-Modul. Ich frage mich jetzt, ob der Energieverwaltungscode erkennt, dass es sich um dasselbe Gerät handelt, wenn z. B. versucht wird, einen nicht verwendeten BT-Adapter herunterzufahren.
Kontext:
quelle
echo N >/sys/module/drm_kms_helper/parameters/poll
(im root-Modus)Problem mit der Intel-Grafikkarte
quelle