Kworker, che cos'è e perché sta tranciando così tanto CPU?

115

Recentemente ho aggiornato a Kubuntu Natty Beta 1 e ho avuto un sacco di problemi con il processo kworker . A momenti usa quasi la metà della mia CPU. Inoltre, stranamente sembra influire sulle mie porte USB; ogni volta che inserisco una chiavetta USB, il processo kworker entra nell'iperdrive, lasciandomi incapace di lavorare.

Ho pensato di archiviare un bug ma dal momento che non ho trovato alcuna spiegazione ragionevole su cosa sia kworker , dovrei prima trovarlo.

    
posta davorao 05.04.2011 - 15:57

6 risposte

99

"kworker" è un processo segnaposto per i thread del kernel worker, che eseguono la maggior parte dell'elaborazione effettiva per il kernel, specialmente nei casi in cui ci sono interrupt, timer, I / O, ecc. Questi in genere corrispondono alla stragrande maggioranza di qualsiasi tempo "di sistema" assegnato ai processi in esecuzione. Non è qualcosa che può essere rimosso in modo sicuro dal sistema in qualsiasi modo, ed è completamente estraneo a nepomuk o KDE (eccetto che questi programmi possono effettuare chiamate di sistema, il che potrebbe richiedere al kernel di fare qualcosa).

Ci sono stati alcuni rapporti di eccessiva attività di kworker per relativamente sistemi inattivi che iniziano durante lo sviluppo 2.6.36 ( discussione di esempio ) e ampi rapporti di confusione e problemi con 2.6 .38 (sebbene molti di questi report includano la parola "Natty", quindi presumo che queste persone non abbiano usato alcun kernel tra 2.6.35 (distribuito in Ubuntu 10.10) e 2.6.38 (distribuito in Ubuntu 11.04).

Ho trovato molte segnalazioni di qualcosa che ha "risolto" questo per uno o per un altro utente. La maggior parte delle "correzioni" sembrano essere correlate agli aggiornamenti del kernel di vario genere. Laddove l'aggiornamento può essere rintracciato su un problema specifico, sembra che spesso ci sia un driver o un servizio del kernel che è stato riparato per non comportarsi male: ho l'impressione che ci sia un numero molto grande di cose nel kernel che possono causare un comportamento che viene osservato come uso eccessivo di kworker.

Se ritieni che il sistema sia inutilizzabile a causa dell'eccessiva attività di kworker, ti consiglio di provare a fare meno cose. Se pensi di non fare nulla, prova a spegnere servizi o timer di lunga durata (lettori RSS, lettori di posta, indicizzatori di file, tracker di attività, ecc.). Se questo non funziona, prova a riavviare. Se il tuo sistema ti consente di abilitare o disabilitare l'hardware in un ambiente di pre-avvio, prova a disattivare l'hardware che non stai utilizzando. Se succede ad ogni riavvio prima di fare qualsiasi cosa, puoi provare a disinstallare le cose, ma a questo punto vorrai eseguire gli strumenti di profiling di syscall per rintracciare applicazioni specifiche che sembrano causare questo sovraccarico.

È auspicabile che il tuo sistema specifico smetta di esprimere questo comportamento con un aggiornamento del kernel futuro (e molte delle cause più comuni sono state risolte).

    
risposta data Emmet Hikory 08.07.2011 - 12:44
71

Che cos'è kworker? kworker significa un processo del kernel Linux che fa "lavoro" (elaborazione delle chiamate di sistema). Puoi averne diversi nel tuo elenco dei processi: kworker/0:1 è quello sul tuo primo core della CPU, kworker/1:1 quello sul tuo secondo ecc.

Perché kworker ti cattura la CPU? Per scoprire perché un kworker sta sprecando la tua CPU, puoi creare backtrace della CPU: guarda il carico del tuo processore (con top o qualcosa) e nei momenti di alto carico attraverso kworker , esecuzione echo l > /proc/sysrq-trigger per creare un backtrace. (Su Ubuntu, questo richiede il login con sudo -s ). Fai questo più volte, quindi guarda i backtrace alla fine di dmesg output. Vedi cosa succede frequentemente nei backtrace della CPU, si spera che punti alla fonte del tuo problema.

Esempio: e1000e. Nel mio caso, ho trovato un backtrace come questo quasi ogni volta:

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]

Mi ha accennato a un problema nel modulo della scheda Ethernet e1000e , e in effetti un sudo rmmod e1000e ha reso l'alto carico della CPU andare via immediatamente [ e1000e bug # 26 ].

    
risposta data tanius 17.02.2014 - 03:42
56

Perché kworker ti cattura la tua CPU (cont.)? come alternativa a la mia altra risposta qui , Perf è un modo più professionale per analizzare quali attività del kernel stanno eseguendo il hogging della CPU:

  1. Installa perf :

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

    (Il secondo pacchetto deve corrispondere alla versione del kernel. Puoi prima installare solo linux-tools-common e chiamare perf per farti dire quale pacchetto ha bisogno.)

  2. Registra circa 10 secondi di backtrace su tutte le tue CPU:

    sudo perf record -g -a sleep 10
    
  3. Analizza la tua registrazione:

    sudo perf report
    

    (Naviga nel grafico delle chiamate con , , , e Invio .)

risposta data tanius 17.02.2014 - 16:26
7

Solo per far sapere a tutti. Mi sono imbattuto in questo problema, installato perf (che è un ottimo strumento), che puntava allo spin locking e XFS. Questo ha indicato NFS. Poi ho capito che uno dei miei supporti era fuori dallo spazio. Liberare spazio ha causato la caduta della CPU di kworker a 0.

Quindi a quanto pare questo può essere un sintomo di esaurimento dello spazio su disco su un server NFS occupato!

    
risposta data Erik Aronesty 19.03.2014 - 14:40
4

Recentemente ho installato Ubuntu Natty su un passaporto USB wd esterno. Quando inizio sul mio desktop, che ha circa due anni, tutto funziona come un incantesimo. Quando avvio il mio nuovo laptop (sistema MSI gt680r), rallenta dopo che ho riattivato il computer dalla modalità di sospensione o se ho collegato un altro disco USB.

I processi di Kworker richiedono sempre più CPU e il mouse si blocca di volta in volta.

Ho letto diverse soluzioni su vari forum che non hanno funzionato.

Sono entrato nel bios del mio portatile, dove c'era:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Ho cambiato per:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

e da allora, non si blocca più su natty sul mio portatile.

Abiliterei la mano indietro se e quando il problema viene corretto.

    
risposta data CedCannes 01.07.2011 - 11:08
0

Penso che disabilitare Nepomuk possa aiutarti:

link

    
risposta data Extender 06.05.2011 - 08:02

Leggi altre domande sui tag