GNU/Linux >> Linux Esercitazione >  >> Linux

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

Questo articolo è tratto dal capitolo 13 del libro Linux in Action, pubblicato da Manning.

Le prestazioni della tua macchina Linux sono state irregolari o insolitamente lente? Sospetti che la crescente domanda possa superare le tue risorse disponibili? Ecco alcune domande che dovresti farti:

  • Quanto sei vicino all'esaurimento della CPU e delle risorse di memoria?
  • C'è qualcosa che funziona inutilmente che potrebbe essere spento?
  • C'è qualcosa che è stato eseguito come canaglia a tua insaputa?

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Dove dovresti cercare le risposte? Il top programma è un ottimo punto di partenza. Può darti una panoramica completa e autoaggiornante dei processi in esecuzione sul tuo sistema.

La figura seguente mostra una schermata tipica di top dati. La prima riga fornisce l'ora corrente, il tempo trascorso dall'ultimo avvio del sistema, il numero di utenti attualmente connessi e le medie di carico per l'ultimo minuto, cinque minuti e 15 minuti. Queste informazioni possono essere restituite anche eseguendo uptime .

Poiché stiamo cercando di risolvere i problemi di prestazioni, le colonne di dati che dovrebbero interessarci di più sono %CPU (percentuale della capacità della CPU attualmente utilizzata da un determinato processo) e %MEM (percentuale di capacità di memoria). Ti consigliamo in particolare di notare i processi visualizzati in cima all'elenco.

In questo caso, puoi vedere che il demone MySQL utilizza il 4,3% della CPU del server e, dalla colonna successiva, il 13% della sua memoria. Se segui quella riga a sinistra, vedrai che l'ID processo (PID) è 1367 e il processo è "di proprietà" di mysql utente.

Forse concluderai che questo processo richiedeva più risorse di quanto si possa giustificare e che dovrà essere sacrificato (per il bene superiore, capisci). Quel top display ti ha dato tutto ciò di cui hai bisogno per ucciderlo. Poiché MySQL è un servizio gestito da systemd (su quelle distribuzioni che usano systemd), la tua prima scelta dovrebbe essere quella di usare systemctl per ridurre delicatamente il processo senza mettere a rischio i dati dell'applicazione.

systemctl stop mysqld

Se il processo che vuoi chiudere non è gestito da systemd, o se qualcosa è andato storto e systemctl non è riuscito a fermarlo, puoi usare sia kill o killall per eliminare il tuo processo. Alcuni sistemi richiedono l'installazione di killall come parte di psmisc pacchetto. Passi il PID per kill in questo modo:

kill 1367

killall , d'altra parte, utilizza il nome del processo anziché il suo ID.

killall mysqld

Uccidere o uccidere tutti, questo è il problema . In realtà, la risposta è piuttosto ovvia. kill chiuderà un singolo processo, basato sul PID, mentre killall ucciderà tante istanze di un particolare programma quante sono in esecuzione. Quindi, se ci fossero due o tre istanze MySQL separate, forse appartenenti a utenti separati, tutto verrebbe interrotto. Prima di avviare killall , assicurati che non ci siano processi con nomi simili che vuoi ancora in esecuzione che potrebbero diventare "danni collaterali".

Ovviamente dovrai anche eseguire systemctl disable per assicurarti che il processo non si riavvii al prossimo avvio.

systemctl disable mysqld

Decifrazione in alto

Nel caso in cui ne avessi mai bisogno, la terza riga di top l'output che hai visto un po 'prima ci fornisce valori temporali (come percentuali) per una serie di altre metriche della CPU. Ecco una rapida carrellata del miscuglio di acronimi che vedrai lì:

Metrico Significato
us Tempo di esecuzione di processi ad alta priorità (non graditi)
sy Tempo di esecuzione dei processi del kernel
ni Tempo di esecuzione di processi (carini) a bassa priorità
id Tempo trascorso inattivo
wa Tempo di attesa per il completamento degli eventi I/O
hi Tempo dedicato alla gestione degli interrupt hardware
si Tempo dedicato alla gestione degli interrupt software
st Tempo rubato a questa macchina virtuale dal suo hypervisor (host)

La top la visualizzazione può essere personalizzata in tempo reale tramite input da tastiera. Digita h per saperne di più.

Creare problemi (simulare il carico della CPU)

Morire di vedere top in azione ma, non lo sapresti, tutto fila liscio?

Perché non simulare un sovraccarico della CPU a livello di crisi? Proprio come i bambini, yes emetterà rumore (digitale) continuamente fino a quando non viene detto di fermarsi. Ripensandoci, non sono affatto come i bambini.

Questo comando reindirizzerà quel rumore al /dev/null usa e getta file e il & il personaggio spingerà il processo in background, restituendoti il ​​controllo della riga di comando. Per aumentare la pressione, lancia il comando ancora un paio di volte.

$ yes > /dev/null &

Questo dovrebbe tenerli occupati. Mentre tutto è in esecuzione, guarda top per vedere cosa sta succedendo. Potresti anche provare a eseguire altre applicazioni per vedere quanto ci vorrà per rallentarle. Quando hai finito, esegui killall per eliminare tutti i tuoi yes sessioni in una volta sola.

$ killall yes


Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. I 5 migliori podcast per notizie e suggerimenti su Linux

  3. 8 comandi Linux per una gestione efficace dei processi

  4. I migliori strumenti Linux per scrittori

  5. Come limitare l'utilizzo della CPU di un processo in Linux

Tutorial sui comandi principali di Linux per principianti (8 esempi)

30 esempi di comandi principali per il monitoraggio in Linux

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

Monitoraggio dei processi su Linux

Introduzione al monitoraggio e all'ottimizzazione delle prestazioni di Linux

UNIX / Linux:7 esempi pratici di comandi PS per il monitoraggio dei processi