Kworker, was ist das und warum ist es so viel CPU-Auslastung?

109

Ich habe vor kurzem ein Upgrade auf Kubuntu Natty Beta 1 durchgeführt und ich habe viele Probleme mit dem Prozess kworker . In Momenten verwendet es fast die Hälfte meiner CPU. Seltsamerweise scheint es auch meine USB-Anschlüsse zu beeinflussen; Jedes Mal, wenn ich ein USB-Laufwerk einstecke, geht der Prozess kworker in Hyperdrive und lässt mich nicht arbeiten.

Ich habe darüber nachgedacht, einen Fehler zu melden, aber da ich noch keine vernünftige Erklärung dafür gefunden habe, was kworker ist, dachte ich mir, ich sollte es zuerst herausfinden.

    
davorao 05.04.2011, 15:57

6 Antworten

94

"kworker" ist ein Platzhalterprozess für Kernel-Worker-Threads, die den größten Teil der tatsächlichen Verarbeitung für den Kernel ausführen, insbesondere in Fällen, in denen Interrupts, Timer, I / O usw. vorhanden sind Zugewiesene "System" -Zeit für laufende Prozesse. Es ist nicht etwas, das sicher aus dem System in irgendeiner Weise entfernt werden kann, und ist völlig unabhängig von Nepomuk oder KDE (außer, dass diese Programme Systemaufrufe machen können, die den Kernel etwas tun müssen).

Es gab einige Berichte über übermäßige Kworker-Aktivität für relativ Leerlauf-Systeme, die während der Entwicklung von 2.6.36 ( Beispieldiskussion ) beginnen, und breite Berichte über Verwirrung und Probleme mit 2.6 .38 (obwohl viele dieser Berichte das Wort "Natty" enthalten, nehme ich an, dass diese Leute keinen Kernel zwischen 2.6.35 (in Ubuntu 10.10) und 2.6.38 (in Ubuntu 11.04) verwendet haben.

>

Ich habe viele Berichte von etwas gefunden, das dies für den einen oder anderen Benutzer "repariert" hat. Die meisten "Fixes" scheinen mit Aktualisierungen des Kerns verschiedener Art zusammenzuhängen. Wenn das Update einem bestimmten Problem zugeordnet werden kann, scheint es oft ein Treiber oder ein Kernel-Service zu sein, der gepatcht wurde, um sich nicht zu benehmen: Ich habe den Eindruck, dass es sehr viele Dinge im Kernel gibt, die ein Verhalten verursachen können was als übermäßige kworker Verwendung beobachtet wird.

Wenn Sie feststellen, dass das System aufgrund übermäßiger Kworker-Aktivität unbrauchbar ist, würde ich empfehlen, weniger zu tun. Wenn Sie der Meinung sind, dass Sie nichts tun, versuchen Sie, lang laufende Dienste oder Timer (RSS-Reader, Mail-Reader, Datei-Indexer, Activity-Tracker usw.) herunterzufahren. Wenn dies nicht funktioniert, versuchen Sie es erneut. Wenn Ihr System es Ihnen ermöglicht, Hardware in einer Pre-Boot-Umgebung zu aktivieren oder zu deaktivieren, versuchen Sie, die Hardware, die Sie nicht verwenden, auszuschalten. Wenn es bei jedem Neustart passiert, bevor Sie etwas tun, könnten Sie versuchen, Dinge zu deinstallieren, aber an dieser Stelle sollten Sie syscall Profiling-Tools ausführen, um bestimmte Anwendungen aufzuspüren, die diese Überlastung zu verursachen scheinen.

Es ist zu hoffen, dass Ihr spezifisches System dieses Verhalten mit einem zukünftigen Kernel-Upgrade nicht mehr ausdrückt (und viele der häufigsten Ursachen dafür wurden gelöst).

    
Emmet Hikory 08.07.2011, 12:44
67

Was ist kworker? kworker bedeutet, dass ein Linux-Kernel-Prozess "arbeitet" (Systemaufrufe verarbeitet). Sie können mehrere von ihnen in Ihrer Prozessliste haben: kworker/0:1 ist der auf Ihrem ersten CPU-Kern, kworker/1:1 der auf Ihrem zweiten usw. ..

Warum packt kworker Ihre CPU? Um herauszufinden, warum ein kworker Ihre CPU verschwendet, können Sie CPU-Backtraces erstellen: Beobachten Sie Ihre Prozessorauslastung (mit top oder etwas) und in Sekundenschnelle high load bis kworker , führe echo l > /proc/sysrq-trigger aus, um ein Backtrace zu erstellen. (Unter Ubuntu müssen Sie sich mit sudo -s anmelden). Tun Sie dies mehrmals, und beobachten Sie dann die Backtraces am Ende von dmesg output. Schauen Sie sich an, was häufig in den CPU-Rückverfolgungen passiert, und hoffentlich weist es Sie auf die Ursache Ihres Problems hin.

Beispiel: e1000e. In meinem Fall habe ich fast jedes Mal ein Backtrace gefunden:

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

Er hat mich auf ein Problem im e1000e Ethernet-Kartenmodul hingewiesen, und tatsächlich hat ein sudo rmmod e1000e die hohe CPU-Last sofort verschwinden lassen [ e1000e Fehler # 26 ].

    
tanius 17.02.2014 03:42
50

Warum puffert kworker Ihre CPU (Forts.)? Als Alternative zu meine andere Antwort hier , Perf ist eine professionellere Art zu analysieren, welche Kernel-Aufgaben Ihre CPU behindern:

  1. Installieren Sie perf :

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (Das zweite Paket muss mit Ihrer Kernel-Version übereinstimmen. Sie können zuerst nur linux-tools-common installieren und perf aufrufen, damit es Ihnen sagen kann, welches Paket es benötigt.)

  2. Zeichnen Sie etwa 10 Sekunden Rückverfolgung auf allen Ihren CPUs auf:

    sudo perf record -g -a sleep 10
    
  3. Analysiere deine Aufnahme:

    sudo perf report
    

    (Navigieren Sie in der Aufrufgrafik mit , , , und Geben Sie ein.)

tanius 17.02.2014 16:26
5

Nur um es alle wissen zu lassen. Ich stieß auf dieses Problem, installierte perf (das ist ein großartiges Werkzeug), zeigte auf Spin Locking und XFS. Das zeigte auf NFS. Dann wurde mir klar, dass eines meiner Reittiere nicht mehr im Raum war. Freigeben von Speicherplatz verursacht Kworker-CPU auf 0 fallen.

Dies kann also ein Symptom dafür sein, dass der Speicherplatz auf einem ausgelasteten NFS-Server knapp wird!

    
Erik Aronesty 19.03.2014 14:40
4

Ich habe kürzlich Ubuntu Natty auf einem externen USB-Stick installiert. Wenn ich auf meinem Desktop anfange, der ungefähr zwei Jahre alt ist, funktioniert alles wie ein Zauber. Wenn ich auf meinem neuen Laptop (MSI gt680r System) starte, wird es langsamer, wenn ich den Computer aus dem Ruhezustand wecke oder wenn ich eine andere USB-Festplatte einstecke.

Kworker-Prozesse nehmen immer mehr CPU-Leistung an und die Maus friert von Zeit zu Zeit ein.

Ich habe mehrere Lösungen in verschiedenen Foren gelesen, die nicht funktionierten.

Ich ging in das BIOS meines Laptops, wo es war:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Ich habe mich geändert für:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

und seit dem friert es nicht mehr auf meinem Laptop ein.

Ich würde die Hand zurück aktivieren, wenn und wenn das Problem behoben wird.

    
CedCannes 01.07.2011 11:08
0

Ich denke Nepomuk kann Ihnen helfen:

Pfandrecht

    
Extender 06.05.2011 08:02

Tags und Links