GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo della CPU Linux e cronologia di esecuzione dei processi

Soluzione 1:

Ci sono un paio di possibili modi per farlo. Tieni presente che è del tutto possibile che siano molti i processi in uno scenario in fuga che causano questo, non solo uno.

Il primo modo è configurare pidstat in modo che venga eseguito in background e produca dati.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Questo ti darà una visione abbastanza dettagliata del funzionamento del sistema a intervalli di dieci minuti. Suggerirei che questo sia il tuo primo punto di riferimento poiché produce i dati più preziosi/affidabili con cui lavorare.

C'è un problema con questo, principalmente se la scatola entra in un ciclo cpu in fuga e produce un carico enorme:non è garantito che il tuo processo effettivo verrà eseguito in modo tempestivo durante il caricamento (se non del tutto), quindi potresti effettivamente perdere l'output !

Il secondo modo per cercare questo è abilitare la contabilità di processo. Forse più di un'opzione a lungo termine.

accton on

Ciò abiliterà la contabilità di processo (se non già aggiunta). Se non era in esecuzione prima, ci vorrà del tempo per essere eseguito.

Dopo essere stato eseguito, diciamo per 24 ore, puoi quindi eseguire un tale comando (che produrrà un output come questo)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Le colonne sono ordinate come segue:

  1. Numero di chiamate
  2. Percentuale di chiamate
  3. Quantità di tempo reale speso per tutti i processi di questo tipo.
  4. Percentuale.
  5. Tempo CPU utente
  6. Percentuale
  7. Tempo CPU di sistema.
  8. Chiamate IO nella media.
  9. Percentuale
  10. Nome comando

Quello che cercherai sono i tipi di processo che generano la maggior parte del tempo CPU utente/sistema.

Questo suddivide i dati come la quantità totale di tempo della CPU (la riga superiore) e quindi come è stato suddiviso il tempo della CPU. L'accounting dei processi viene contabilizzato correttamente solo quando è attivo quando i processi vengono generati, quindi probabilmente è meglio riavviare il sistema dopo averlo abilitato per garantire che tutti i servizi vengano contabilizzati.

Questo, in realtà, non ti dà in alcun modo un'idea precisa di quale processo potrebbe essere la causa di questo problema, ma potrebbe darti una buona sensazione. Poiché potrebbe trattarsi di un'istantanea di 24 ore, esiste la possibilità di risultati distorti, quindi tienilo a mente. Inoltre dovrebbe sempre registrare poiché è una funzionalità del kernel e diversamente da pidstat produrrà sempre output anche durante carichi pesanti.

L'ultima opzione disponibile utilizza anche l'accounting del processo, quindi puoi attivarlo come sopra, ma poi usa il programma "lastcomm" per produrre alcune statistiche dei processi eseguiti nel momento in cui si è verificato il problema insieme alle statistiche della cpu per ciascun processo.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

Questo potrebbe darti anche qualche suggerimento su cosa potrebbe causare il problema.

Soluzione 2:

Atop è un demone particolarmente utile per esaminare i drill-down a livello di processo e per impostazione predefinita archivia questi dati per 28 giorni. Oltre a presentare una fantastica interfaccia di monitoraggio in tempo reale, puoi specificare quei file di registro da aprire e passarci attraverso.

L'articolo dà un'idea delle capacità e puoi trovarne di più nella manpage.

È davvero un software meraviglioso.

Soluzione 3:

Programmi come psmon e monit potrebbero esserti utili. Questi possono monitorare i processi in esecuzione sul tuo sistema e se viene superata qualsiasi soglia (utilizzo della CPU, utilizzo della memoria ...), puoi impostarli per inviarti un rapporto via e-mail su cosa sta succedendo.

È anche possibile riavviare automaticamente i processi che si comportano in modo anomalo.


Linux
  1. Comando Linux Cat:utilizzo ed esempi

  2. Recuperare l'utilizzo della CPU e l'utilizzo della memoria di un singolo processo su Linux?

  3. Come calcolare l'utilizzo della CPU di un processo tramite PID in Linux da C?

  4. utilizzo dei caratteri jolly di Linux in cp e mv

  5. Come viene riportato l'utilizzo della memoria in Linux?

3 suggerimenti per il miglioramento delle prestazioni dei processi Linux con priorità e affinità

Come ottenere l'utilizzo della CPU di un singolo processo in Linux

Storia di Unix e Linux

Come trovare i migliori processi in esecuzione in base all'utilizzo di memoria e CPU in Linux

Come controllare l'utilizzo o l'utilizzo della CPU di Linux

Ubuntu Linux:elabora la memoria di scambio e l'utilizzo della memoria