Kworker, was ist das und warum ist die CPU so stark ausgelastet?


136

Ich habe kürzlich ein Upgrade auf die Kubuntu Natty Beta 1 durchgeführt und hatte viele Probleme mit dem Prozess kworker . Momentan verbraucht es fast die Hälfte meiner CPU. Seltsamerweise scheint es sich auch auf meine USB-Anschlüsse auszuwirken. Wenn ich ein USB-Laufwerk anschließe, wechselt der Process Kworker in den Hyper- Drive- Modus und kann nicht mehr arbeiten.

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


Seltsamerweise läuft kworker und trägt 10% zum Aufwecken bei, aber ich habe keine Kubuntu-Programme installiert. Alos Nepomuk ist nicht installiert.
Dago

1
Aus der Antwort von afrazier denke ich, dass es jetzt etwas mit dem Kernel zu tun hat (also ist das k in kworker für den Kernel). Aus diesem Grund müsste kworker auch auf Ihrem Ubuntu-Rechner ausgeführt werden.
Davorao

1
Diese Antwort kann auch hilfreich sein, um herauszufinden, was ein kworker tut: unix.stackexchange.com/questions/22851/…
anarcat

1
Sie hätten das letzte Betriebssystem-Update nicht durchführen sollen. Wenn Sie Glück haben, wird der nächste das Problem beheben.
Nobar

Antworten:


109

"kworker" ist ein Platzhalterprozess für Kernel-Worker-Threads, die den größten Teil der eigentlichen Verarbeitung für den Kernel ausführen, insbesondere in Fällen, in denen Interrupts, Zeitgeber, E / A usw. vorhanden sind. System "Zeit zum Ausführen von Prozessen. Es ist in keiner Weise sicher vom System zu entfernen und steht in keinerlei Beziehung zu nepomuk oder KDE (mit der Ausnahme, dass diese Programme möglicherweise Systemaufrufe ausführen, für die der Kernel möglicherweise etwas tun muss).

Es gab einige Berichte über übermäßige kworker-Aktivitäten für relativ untätige Systeme, die während der 2.6.36-Entwicklung begannen ( Beispieldiskussion ), und umfangreiche Berichte über Verwirrung und Probleme mit 2.6.38 (obwohl viele dieser Berichte das Wort "Natty" enthalten, nehme ich an Diese Leute haben keinen Kernel zwischen 2.6.35 (verteilt in Ubuntu 10.10) und 2.6.38 (verteilt in Ubuntu 11.04) benutzt.

Ich habe viele Berichte von etwas gefunden, das dies für den einen oder anderen Benutzer "behoben" hat. Die meisten "Fixes" scheinen mit Updates des Kernels verschiedener Art zu tun zu haben. Wenn das Update auf ein bestimmtes Problem zurückverfolgt werden kann, scheint es sich häufig um einen Treiber- oder Kerneldienst zu handeln, der so gepatcht wurde, dass er sich nicht schlecht verhält: Ich habe den Eindruck, dass der Kernel eine sehr große Anzahl von Dingen enthält, die ein Verhalten verursachen können Dies wird als übermäßiger Verbrauch von Arbeitern beobachtet.

Wenn Sie das System aufgrund übermäßiger Kworker-Aktivitäten für unbrauchbar halten, würde ich empfehlen, weniger Dinge zu tun. Wenn Sie der Meinung sind, dass Sie nichts unternehmen, sollten Sie Dienste oder Zeitgeber mit langer Laufzeit (RSS-Reader, E-Mail-Reader, Dateiindexer, Aktivitätsprotokollierer usw.) herunterfahren. Wenn dies nicht funktioniert, versuchen Sie einen Neustart. Wenn Sie auf Ihrem System Hardware in einer Pre-Boot-Umgebung aktivieren oder deaktivieren können, deaktivieren Sie die Hardware, die Sie nicht verwenden. Wenn dies bei jedem Neustart der Fall ist, bevor Sie etwas unternehmen, können Sie versuchen, Dinge zu deinstallieren. Zu diesem Zeitpunkt möchten Sie jedoch Syscall-Profiling-Tools ausführen, um bestimmte Anwendungen aufzuspüren, die diese Überlastung zu verursachen scheinen.

Es ist zu hoffen, dass Ihr spezielles System dieses Verhalten bei einem zukünftigen Kernel-Upgrade nicht mehr ausdrückt (und viele der häufigsten Ursachen hierfür wurden behoben).


1
Ich hatte ein langsames Anmeldeproblem, das meiner Meinung nach damit zusammenhängt. Ich schaffe es, es zu umgehen, indem ich alles, was auf diese Weise gestartet wird, verzögere: askubuntu.com/a/484856/46437
Aquarius Power

1
Vielleicht ist das überflüssig, aber ein Lob an eine sehr klar artikulierte Reaktion. Das ist ein fein ausgedrücktes Englisch, Sir.
Jon Carter

81

Was ist kworker? kworkerbezeichnet einen Linux-Kernel-Prozess, der "work" (Verarbeiten von Systemaufrufen) ausführt. Sie können mehrere davon in Ihrer Prozessliste haben: kworker/0:1Ist die auf Ihrem ersten CPU-Kern, kworker/1:1die auf Ihrem zweiten usw.

Warum belastet kworker Ihre CPU? Um herauszufinden, warum ein kworker Ihre CPU verschwendet, können Sie CPU-Backtraces erstellen: Beobachten Sie die Prozessorauslastung (mit topoder etwas anderem) und führen Sie in Momenten hoher Auslastung die kworkerAusführung aus echo l > /proc/sysrq-trigger, um ein Backtrace zu erstellen. (Unter Ubuntu müssen Sie sich anmelden sudo -s). Tun Sie dies mehrmals und beobachten Sie dann die Rückverfolgungen am Ende der dmesgAusgabe. Sehen Sie, was in den CPU-Backtraces häufig vorkommt, und verweisen Sie hoffentlich auf die Ursache Ihres Problems.

Beispiel: e1000e. In meinem Fall habe ich fast jedes Mal einen solchen 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]

Es deutete auf ein Problem im e1000eEthernet-Kartenmodul hin, und sudo rmmod e1000edie hohe CPU-Auslastung wurde sofort aufgehoben [ e1000e-Fehler Nr. 26 ].


4
echo l > /proc/sysrq-triggerscheint bei proxmox sysrq: SysRq : This sysrq operation is disabled.leider nicht zu funktionieren .
Hak8or

1
sysrq werden müssen reaktiviert mit sysctl -w kernel.sysrq = 1 siehe askubuntu.com/questions/911522/...
Sebastien

Wie haben Sie verstanden, dass e1000 das Problem verursacht? Nur weil es wiederholt wurde?
Onurcanbektas

@onurcanbektas Ja - das am häufigsten wiederholte Ergebnis ist die wahrscheinlichste Ursache. Weil die Backtraces Stichproben sind, mit denen die CPU beschäftigt ist, während sie ausgelastet ist.
Tanius

70

Warum belastet kworker Ihre CPU (Forts.)? Als Alternative zu meiner anderen Antwort hier ist Perf eine professionellere Methode, um zu analysieren, welche Kernel-Aufgaben Ihre CPU belasten:

  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 es zunächst einfach installieren linux-tools-commonund aufrufen perf, um zu erfahren, welches Paket benötigt wird.)

  2. Zeichnen Sie etwa 10 Sekunden Backtraces auf allen Ihren CPUs auf:

    sudo perf record -g -a sleep 10
    
  3. Analysieren Sie Ihre Aufnahme:

    sudo perf report
    

    (Navigieren in der Aufrufdiagramm mit , , , und Enter.)


2
Auf meinem System, das in einer virtuellen VMware-Maschine ausgeführt wird, habe perfich das Problem auf das sd_modKernelmodul zurückgeführt. Das Deaktivieren von SCSI in der vmxDatei verhinderte das Laden des Moduls und brachte das System wieder auf normale Geschwindigkeit:scsi0.present = "FALSE"
feklee

E: Das Paket linux-tools-3.11.0-15-generic konnte nicht gefunden werden. E: Kein Paket von glob gefunden. 'Linux-tools-3.11.0-15-generic' E: Kein Paket von regex gefunden 'Linux-Tools-3.11.0-15-generic'
Paddy

@Paddy: Bitte überprüfen Sie die Antwort noch einmal :-) "Das Paket [linux-tools - * - generic] muss zu Ihrer Kernel-Version passen. Sie können zunächst nur linux-tools-common installieren und perf aufrufen, damit es Ihnen mitteilt, um welches Paket es sich handelt braucht. "
Tanius

8

Nur um es alle wissen zu lassen. Ich bin auf dieses Problem gestoßen, habe perf installiert (was ein großartiges Tool ist), es zeigte auf Spin Locking und XFS. Das deutete auf NFS hin. Dann bemerkte ich, dass eines meiner Reittiere keinen Platz mehr hatte. Die Freigabe von Speicherplatz führte dazu, dass die kworker-CPU auf 0 sank.

Anscheinend kann dies ein Symptom dafür sein, dass auf einem ausgelasteten NFS-Server nicht mehr genügend Speicherplatz vorhanden ist!


1
Ich bemerkte, dass ich eine Kworker-Kernschmelze hatte, als eine bestimmte Virtualbox lief. Es stellte sich heraus, dass auf meinem Host ein NFS zum Teilen von Dateien ausgeführt wurde. Es war jedoch bei weitem nicht voll. Durch das Aufheben der Bereitstellung des NFS wurde das Problem "behoben". Ich denke, ich werde mit einem sshfs-Mount teilen.
Programster

4

Ich habe vor kurzem Ubuntu Natty auf einem externen Laufwerk installiert. Wenn ich auf meinem Desktop starte, 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, nachdem ich den Computer aus dem Ruhezustand geweckt oder eine andere USB-Festplatte angeschlossen habe.

Kworker-Prozesse beanspruchen immer mehr CPU 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 gab:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Ich habe mich geändert für:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

und seitdem friert es auf natty auf meinem laptop nicht mehr ein.

Ich würde Hand-Back aktivieren, wenn das Problem behoben ist.


1
Kann jemand erklären, warum dies passiert? Wie ist XCHI verbunden?
GuySoft

0

danke aber ich habe seitdem eine neue kopie von kubuntu 11.04 installiert und das oben erwähnte problem ist verschwunden.
Davorao

1
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
fossfreedom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.