Kworker, co to je a proč je to tolik CPU?

112

Nedávno jsem upgradoval na Kubuntu Natty Beta 1 a měl jsem s procesem kworker spoustu problémů. Ve chvílích využívá téměř polovinu svého CPU. Stejně podivně se zdá, že ovlivňují i ​​mé USB porty; kdykoli připojím jednotku USB, proces kworker přejde do hyperdrive, takže mi nedokáže pracovat.

Přemýšlel jsem o podání chyby, ale vzhledem k tomu, že jsem ještě nenalezl žádné rozumné vysvětlení o tom, co je kworker , myslím, že bych se měl nejprve dozvědět.

    
dané davorao 05.04.2011 15:57

6 odpovědí

95

"kworker" je zástupný proces pro vlákna pracovníků jádra, které provádějí většinu vlastního zpracování jádra, zejména v případech, kdy dochází k přerušení, časovačům, I / O apod. Ty většinou odpovídají převážené většině jakýkoli přidělený "systémový" čas do běhu procesů. Není to něco, co může být bezpečně odstraněno ze systému jakýmkoli způsobem a zcela nesouvisí s nepomukem nebo KDE (kromě toho, že tyto programy mohou vyvolat systémová volání, což může vyžadovat, aby jádro něco udělalo.)

Byly zaznamenány zprávy o nadměrné kworkerové aktivitě relativně nečinné systémy začínající během vývoje programu 2.6.36 ( ukázka diskuse ) a rozsáhlé zprávy o zmatení a problémech s 2.6 .38 (ačkoli mnoho z těchto zpráv obsahuje slovo "Natty", proto 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 "opravil" to pro jednoho nebo jiného uživatele. Většina "oprav" se zdá být spojena s aktualizací jádra různých druhů. Kde může být aktualizace sledována na konkrétní problém, zdá se, že je často nějakou službou ovladače nebo jádra, která byla upravena tak, aby se nepoškodila: Mám dojem, že jádro je v jádře velkého množství věcí, které mohou způsobit chování což je považováno za nadměrné použití kworkerů.

Pokud zjistíte, že systém je kvůli nadměrné aktivitě kworkeru nepoužitelný, doporučil bych udělat méně věcí. Pokud si myslíte, že neuděláte nic, zkuste vypnout dlouhé služby nebo časovače (čtečky RSS, čtečky pošty, indexátory 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 se to stane při každém restartu předtím, než uděláte něco, můžete se pokusit odinstalovat věci, ale v tomto okamžiku budete chtít používat syscall profilovací nástroje pro sledování konkrétních aplikací, které se zdají být příčinou tohoto přetížení.

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

    
odpověděl Emmet Hikory 08.07.2011 12:44
70

Co je to kworker? kworker znamená proces jádra linuxu, který dělá "work" (zpracování systémových volání). Můžete mít několik z nich ve vašem seznamu procesů:kworker/0:1 je ten, který je na vašem prvním jádře CPU,kworker/1:1 ten na vaší druhé atd ..

Proč kworker pracuje s vaším CPU? Chcete-li zjistit, proč kworker ztrácí váš procesor, můžete vytvořit CPU backtraces: sledovat zatížení procesoru (stop nebo něco) a ve chvílích vysoká zátěž přeskworker, spustitecho l > /proc/sysrq-trigger pro vytvoření backtrace. (Ubuntu potřebujete přihlásit sesudo -s). Dělejte to několikrát a pak se podívejte na backtraces na koncidmesg výstupu. Podívejte se, co se často děje v CPU backtraces, doufejme vás upozorní na zdroj problému.

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

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čil mi problém v modulu kartye1000e Ethernet a skutečněsudo rmmod e1000e učinilo vysoké zatížení procesoru ihned pryč [ chyba e1000e # 26 ].

    
odpověděl tanius 17.02.2014 03:42
52

Proč používá kworker CPU (kont.)? Jako alternativu k moje další odpověď zde , Perf je profesionálnější způsob, jak analyzovat jádro úkoly,

  1. Nainstalovatperf:

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

    (Druhý balíček musí odpovídat vaší verzi jádra. Nejprve si můžete nainstalovat pouzelinux-tools-common a zavolatperf a nechat mu, aby vám řekl, který balíček potřebuje.)

  2. Zaznamenejte asi 10 sekund na všech procesorech:

    sudo perf record -g -a sleep 10
    
  3. Analyzujte svůj záznam:

    sudo perf report
    

    (Projděte graf volání pomocí , kbd> , a Enter

odpověděl tanius 17.02.2014 16:26
6

Jen nechte všechny vědět. Přišel jsem do tohoto problému, nainstaloval jsem perf (což je skvělý nástroj), ukázal na točivé zamykání a XFS. To poukázalo na NFS. Pak jsem si uvědomil, že jeden z mých úchytů je mimo prostor. Uvolnění místa způsobilo, že procesor kworker klesl na 0.

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

    
odpověděl Erik Aronesty 19.03.2014 14:40
4

Nedávno jsem nainstaloval Ubuntu Natty na externí disk usb wd pas. Když začínám na ploše, která je asi dva roky stará, funguje to všechno jako kouzlo. Když začínám na svém novém notebooku (systém MSI gt680r), zpomalí se po spuštění počítače z režimu spánku nebo při připojení jiného USB disku.

Kworkerovy procesy trvají stále víc CPU a myši z času na čas zamrzly.

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

Jel jsem do biosu svého notebooku, kde byl:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Změnil jsem se pro:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

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

Kdyby a kdy byl problém vyřešen, povolil bych ruku.

    
odpověděl CedCannes 01.07.2011 11:08
0

Myslím, že vám vypnutí Nepomuku může pomoci:

Odkaz

    
odpověděl Extender 06.05.2011 08:02