GNU/Linux >> Linux Esercitazione >  >> Linux

Top dice 100% CPU utilizzata, ma il 50% dei core è inattivo?

Per espandere la risposta di Max:i processori con hyperthreading segnalano due core al sistema operativo quando c'è davvero un singolo core fisico. Linux vede 4 core, ma il tuo processore ha 2 core fisici.

Il core fisico ha capacità di pianificazione avanzate e alcuni transistor extra per gestire il secondo thread, ma per molte applicazioni a uso intensivo del processore l'hyperthreading non offre un reale vantaggio.

Nel mio campo, confrontiamo le applicazioni che verranno eseguite su un sistema e disabilitiamo l'hyperthreading nel BIOS se ostacola le prestazioni.

MODIFICA:

Se carico metà dei core utilizzando cat /dev/urandom > /dev/null ecco cosa ottengo su un moderno Xeon con CentOS 6:

top - 19:32:38 up 1 day,  8:17,  3 users,  load average: 12.13, 8.73, 4.07
Tasks: 694 total,  13 running, 681 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us, 50.4%sy,  0.0%ni, 49.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  49552656k total,  2693452k used, 46859204k free,   186448k buffers
Swap: 15999992k total,        0k used, 15999992k free,   469560k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                           
21193 root      20   0 98.5m  560  452 R 100.0  0.0   6:23.31 cat                                                                                               
21194 root      20   0 98.5m  560  452 R 100.0  0.0   6:22.76 cat                                                                                               
21195 root      20   0 98.5m  560  452 R 100.0  0.0   6:22.38 cat                                                                                               
21201 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.98 cat                                                                                               
21202 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.62 cat                                                                                               
21203 root      20   0 98.5m  560  452 R 100.0  0.0   6:21.36 cat                                                                                               
21206 root      20   0 98.5m  560  452 R 100.0  0.0   6:20.43 cat                                                                                               
21187 root      20   0 98.5m  560  452 R 99.6  0.0   6:24.45 cat                                                                                                
21204 root      20   0 98.5m  560  452 R 99.6  0.0   6:21.03 cat                                                                                                
21205 root      20   0 98.5m  560  452 R 99.6  0.0   6:20.73 cat                                                                                                
21213 root      20   0 98.5m  560  452 R 99.6  0.0   6:20.09 cat                                                                                                
21214 root      20   0 98.5m  560  452 R 99.6  0.0   6:19.70 cat

Sono passati più di quattro anni e, per essere onesti, mi ero completamente dimenticato di questa domanda e sono tornato solo perché ho visto che avevo ricevuto una Domanda degna di nota distintivo per esso.

Il problema era tangente relativo all'hyperthreading, ma come ho sempre fatto notare ai rispondenti, non era così la causa del 50% di inattività.

La causa aveva a che fare con una configurazione dei tick dinamici del kernel configurata in modo inappropriato. Stavo eseguendo Gentoo e usando un kernel personalizzato. Dopo aver aggiornato il kernel, a metà del 2012, il problema si è risolto da solo.


Linux
  1. Trova i 10 migliori processi in esecuzione per memoria e utilizzo della CPU

  2. Risolvere i problemi di utilizzo elevato della CPU su Windows Server

  3. Ottieni l'utilizzo della CPU nello script della shell?

  4. Perché l'utilizzo della CPU riportato da top in Linux è superiore al 100%?

  5. Mostra i primi cinque processi che consumano CPU con `ps`

Suggerimenti per l'inizio:monitoraggio del carico della CPU su Linux

Come trovare i comandi più utilizzati su Linux

Come creare il 100% del carico della CPU su un sistema Linux

Rileva processo che mangia CPU senza:Top, Htop, Ps?

Ubuntu dice 13.04 ma Lsb_release dice 12.10?

base64 -d decodifica, ma dice input non valido