it-swarm.dev

Kworkere, co to je a proč tolik CPU svírá?

Nedávno jsem upgradoval na Kubuntu Natty Beta 1 a měl jsem s procesem mnoho problémů kworker. V tuto chvíli využívá téměř polovinu mého CPU. Kupodivu to také ovlivňuje moje USB porty; pokaždé, když připojím USB disk, proces kworker přejde do hyperdrive, takže mě nebude schopen pracovat.

Přemýšlel jsem o podání chyby, ale protože jsem nenašel žádné rozumné vysvětlení toho, co kworker je, myslím, že bych to měl zjistit jako první.

153
davorao

„kworker“ je zástupný proces pro pracovní vlákna jádra, která provádějí většinu skutečného zpracování jádra, zejména v případech, kdy dochází k přerušení, časovačům, I/O atd. Obvykle odpovídají naprosté většině přidělených “ systém "čas na spuštění procesů. Není to něco, co lze ze systému bezpečně odstranit jakýmkoli způsobem, a je zcela nesouvisející s nepomukem nebo KDE (kromě toho, že tyto programy mohou provádět systémová volání, což může vyžadovat jádro, aby něco udělalo).

Během vývoje 2.6.36 se objevilo několik zpráv o nadměrné aktivitě kworkerů pro relativně nečinné systémy ( příklad diskuse ) a rozsáhlé zprávy o zmatku a problémech s 2.6.38 (ačkoli mnoho z těchto zpráv obsahuje slovo) "Natty", takže předpokládám, že tito lidé nepoužívali žádné jádro mezi 2.6.35 (distribuovaný v Ubuntu 10.10) a 2.6.38 (distribuovaný v Ubuntu 11.04).

Našel jsem mnoho zpráv o něčem, co „opravilo“ to pro jednoho nebo jiného uživatele. Zdá se, že většina „oprav“ souvisí s aktualizacemi jádra různých druhů. Kde lze aktualizaci sledovat na konkrétní problém, zdá se, že často jde o nějakou službu ovladače nebo jádra, která byla opravena, aby se nechovala špatně: mám dojem, že v jádru je velmi mnoho věcí, které mohou způsobit chování což je pozorováno jako nadměrné používání kworkeru.

Pokud zjistíte, že systém je nepoužitelný kvůli nadměrné aktivitě kworkeru, doporučil bych vyzkoušet méně věcí. Pokud si myslíte, že nic neděláte, zkuste vypnout dlouhodobé služby nebo časovače (čtečky RSS, čtečky pošty, indexovače souborů, sledovače aktivity atd.). Pokud to nefunguje, zkuste restartovat. Pokud váš systém umožňuje povolit nebo zakázat hardware v prostředí před spuštěním, zkuste vypnout hardware, který nepoužíváte. Pokud k tomu dojde při každém restartu, než uděláte cokoli, můžete zkusit odinstalovat věci, ale v tuto chvíli budete chtít používat nástroje pro profilování syscall, abyste mohli sledovat konkrétní aplikace, které, jak se zdá, způsobují toto přetížení.

Je třeba doufat, že váš konkrétní systém přestane vyjadřovat toto chování s budoucí aktualizací jádra (a mnoho z nejčastějších příčin tohoto problému bylo vyřešeno).

113
Emmet Hikory

Co je kworker? kworker znamená proces linuxového jádra provádějícího „práci“ (zpracování systémových volání). Ve svém seznamu procesů můžete mít několik z nich: kworker/0:1 je ten na vašem prvním jádru CPU, kworker/1:1 na druhé atd ..

Proč kworker vepřuje váš procesor? Chcete-li zjistit, proč kworker plýtvá CPU, můžete vytvořit backtraces CPU: sledujte zatížení procesoru (pomocí top nebo tak něco) a ve chvílích vysokého zatížení pomocí kworker vykonejte echo l > /proc/sysrq-trigger pro vytvoření backtrace. (Na Ubuntu je třeba se přihlásit pomocí Sudo -s). Proveďte to několikrát a poté sledujte backtraces na konci výstupu dmesg. Podívejte se, co se často v backtracích CPU děje, a doufejme, že vás upozorní na zdroj vašeho problému.

Příklad: e1000e. V mém případě jsem téměř vždycky našel backtrace:

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]

Naznačilo mi to problém v e1000e Modul karty Ethernet a skutečně Sudo rmmod e1000e způsobil, že vysoké zatížení CPU okamžitě zmizelo [ e1000e bug # 26 ].

89
tanius

Proč kworker vepřuje váš procesor (pokr.)? Alternativně k moje další odpověď zde , Perf je profesionálnější způsob, jak analyzovat, jaké úkoly jádra svádějí váš procesor:

  1. Nainstalujte perf:

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

    (Druhý balíček se musí shodovat s verzí jádra. Nejprve můžete nainstalovat pouze linux-tools-common a volejte perf, aby vám sdělil, jaký balíček potřebuje.)

  2. Zaznamenejte si asi 10 sekund backtraces na všechny vaše CPU:

    Sudo perf record -g -a sleep 10
    
  3. Analyzujte svou nahrávku:

    Sudo perf report
    

    (Procházejte grafem hovorů pomocí , , , Enter.)

78
tanius

Jen aby to všichni věděli. Narazil jsem na tento problém, nainstaloval perf (což je skvělý nástroj), ukázal to na spin lock a XFS. To ukazovalo na NFS. Pak jsem si uvědomil, že jeden z mých úchytů byl mimo prostor. Uvolnění místa způsobilo, že procesor kworker klesl na 0.

Zřejmě to může být příznak vyčerpání místa na disku na rušném serveru NFS!

10
Erik Aronesty

Nedávno jsem nainstaloval Ubuntu Natty na externí disk USB usb pas. Když začnu na ploše, která je asi dva roky stará, všechno funguje jako kouzlo. Když spustím svůj nový notebook (systém MSI gt680r), zpomalí se po probuzení počítače ze spánku nebo po připojení dalšího disku USB.

Kworkerovy procesy zabírají stále více CPU a myš čas od času zamrzne.

Četl jsem několik řešení na různých fórech, které nefungovaly.

Šel jsem do bios svého notebooku, kde bylo:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Změnil jsem se na:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

a od té doby už na mém notebooku už nemrzne.

Kdybych byl problém vyřešen, povolil bych ruku zpět.

4
CedCannes
0
Extender