it-swarm.it

Cattivi picchi di CPU che non sono collegati ad alcun processo visibile

Problema davvero strano qui. Continuo a ottenere picchi di CPU davvero spiacevoli, dove la CPU è occupata all'80-90% su tutti i core per circa 5 minuti. Quando guardo conky, in htop o nel monitor di sistema, e l'ordinamento per% CPU, non riesco a vedere alcun processo che rappresenti questo utilizzo della CPU.

Le uniche cose che ho cambiato da quando è iniziato sono:

  • Sono passato alla versione 2.6.35 del kernel (compilato in casa, dal 2.6.24-1)
  • Ho installato il driver Nvidia 256.44 (rispetto a 256.34)

Ora, sono disposto a effettuare il downgrade di entrambi/entrambi per trovare il problema, ma preferirei farlo nel modo più scientifico possibile e scoprire cosa sta causando l'esplosione della CPU prima di eseguire il downgrade.

Modifica: il mio preciso problema sembra una regressione nvidia nel loro ultimo driver. Altre persone stanno ottenendo picchi simili .

7
Oli

Potrebbe essere un thread del kernel, quelli sono nascosti per impostazione predefinita nella maggior parte dei monitor delle prestazioni. In htop puoi nascondere/mostrare i thread del kernel con "K" (shift + k).

1
JanC

"la CPU è occupata all'80-90% su tutti i core per circa 5 minuti"

Questo uso potrebbe consentire di individuare il colpevole utilizzando pidstat disponibile nel pacchetto sysstat.

Esegui semplicemente pidstat -u | sort -nr -k 7,7 | head -10 e il processo che ha utilizzato la maggior parte della CPU dovrebbe essere la linea superiore.

3
Li Lo

Vorrei provare a trovare la causa del problema con alcuni script Shell:

#!/bin/sh
MAXLOAD=100
CURRLOAD=`uptime | sed '[email protected]*load average: \([^,]*\).*@\[email protected]' | sed '[email protected]\?.0\[email protected]@'`

if [ $CURRLOAD -gt $MAXLOAD ]; then                                             
  ps -eo tid,pcpu,comm | sort -n -k 2 | tail -n 5 | \
    mail -s "High load" -e [email protected]
fi

Lo script ha due variabili MAXLOAD e CURRLOAD. Il primo dovrebbe essere un carico elevato moltiplicato per 100. Quindi, se si incontra un picco e si vede che il carico del sistema aumenta fino a 2 o 3, è necessario impostare MAXLOAD su un valore di circa 200. $CURRLOAD prende l'output di uptime, cerca il carico e rimuove il punto e gli zeri iniziali.

Se il carico a un certo punto è troppo elevato, stampa i cinque processi con il maggior utilizzo di CPU e li invia a [email protected].

Questo script dovrebbe aiutarti a trovare il motivo di un picco e se lo conosci potresti forse risolvere il problema.

2
qbi

Esistono alcuni bug corretti di recente che potrebbero correggere questo problema. Se stai eseguendo Ubuntu ti suggerirei di rimanere con il kernel Ubuntu per raccogliere le patch attraverso aggiornamenti regolari. Consiglio di installare Lucid per il supporto e la stabilità. Puoi andare con Maverick se ci sono caratteristiche di cui sei a conoscenza e che non sono in Lucido di cui hai bisogno.

1
Brad Figg

Per ottenere l'output dall'alto che è possibile salvare: top -b -n1

Inseriscilo in un cronjob e puoi guardare minuziosamente la lista dei processi anche dopo che il problema è scomparso. Esempio di voce crontab:

* * * * * top -b -n1 > /tmp/top_output_$(date +%Y-%m-%d_%H:%M:%S)

Questo lo salverà in un file al minuto in/tmp

1

Penso che questo sia un problema del kernel. Vorrei tornare a una versione ufficialmente testata.