Nota:

Monitorare le risorse di sistema su Oracle Linux

Introduzione

In questa esercitazione si lavora con Oracle Linux vmstat, mpstat e top per monitorare l'uso delle risorse di sistema. Il monitoraggio delle risorse del sistema è utile per individuare problemi che possono influire negativamente sulle prestazioni del sistema.

Presupposto

Oracle Linux fornisce strumenti per il monitoraggio e l'analisi dell'uso delle risorse del sistema, nonché strumenti di tracciamento per la diagnosi dei problemi delle prestazioni in più processi e thread correlati.

Obiettivi

Di cosa hai bisogno?

Un sistema client con Oracle Linux 8 o versione successiva installato.

Nota: quando si utilizza l'ambiente di laboratorio gratuito, consultare Oracle Linux Lab Basics per le istruzioni di connessione e altro tipo.

Esplorare e utilizzare le opzioni del comando vmstat

vmstat mostra la quantità di memoria virtuale disponibile e la quantità di memoria libera. Il comando mostra anche l'attività di paging. È possibile osservare i pagein e i pageout che si verificano nel sistema.

È possibile ottimizzare l'area di visualizzazione utilizzando i controlli Nascondi passi e "Schermata intera" posizionati nella barra delle applicazioni, come mostrato nelle immagini.

Nascondi passi Nascondi passi

Guarda il video di seguito per una panoramica su vmstat.

  1. Eseguire il comando vmstat senza opzioni.

    vmstat
    

    Il comando genera un singolo report. L'output è suddiviso in sei sezioni: procs, memory, swap, io, system e cpu.

    • Le prime due colonne forniscono informazioni sui processi:

      • r è il numero di processi in stato di attesa. Si tratta di processi inattivi in attesa di essere eseguiti.

      • b è il numero di processi in modalità di sospensione interrotti dall'ultimo aggiornamento.

    • Le quattro colonne successive forniscono informazioni sulla memoria.

      • swpd è la quantità di memoria virtuale utilizzata.

      • free è la quantità di memoria inattiva.

      • buff è la quantità di memoria utilizzata come buffer.

      • cache è la quantità di memoria utilizzata come cache.

    • Le due colonne successive contengono informazioni sull'area di swap.

      • si è la quantità di memoria di cui è stato eseguito il swapping dal disco (al secondo).

      • so è la quantità di memoria scambiata su disco (al secondo).

        I numeri si e so diversi dazero indicano che la memoria fisica non è sufficiente, pertanto il kernel deve scambiare la memoria sul disco.

    • Le due colonne successive contengono input/output:

      • bi è il numero di blocchi al secondo ricevuti da un dispositivo a blocchi.

      • bo è il numero di blocchi al secondo inviati a un dispositivo a blocchi.

    • Le due colonne successive contengono informazioni di sistema.

      • in è il numero di interrupt al secondo, incluso l'orologio.

      • cs è il numero di switch di contesto al secondo.

    • Le ultime cinque colonne forniscono le percentuali del tempo totale della CPU:

      • us è la percentuale di cicli della CPU usati per i processi utente.

      • sy è la percentuale di cicli della CPU usati nei processi del sistema (kernel).

      • id è la percentuale di cicli della CPU esauriti.

      • wa è la percentuale di cicli della CPU spesi in attesa di I/O.

      • st è la percentuale di cicli della CPU rubati da una virtual machine.

  2. Eseguire il comando vmstat 1 (numerico e non la lettera minuscola l) per visualizzare un report continuo ogni secondo.

    vmstat 1
    
    • Per terminare, premere Ctrl+C.
  3. Eseguire il comando vmstat 7 4 per eseguire quattro report a distanza di sette secondi.

    vmstat 7 4
    

    L'opzione di conteggio indica a vmstat il numero di report da eseguire (4) e l'opzione di ritardo (7) rappresenta l'intervallo di tempo tra ogni report.

  4. Eseguire il comando vmstat -s per visualizzare una tabella di vari contatori di eventi e statistiche di memoria.

    vmstat -s
    
  5. Eseguire il comando vmstat -a per visualizzare la memoria attiva e la memoria inattiva.

    vmstat -a
    

    L'opzione -a visualizza la quantità di memoria active e inattiva (inact) nella sezione memory dell'output.

  6. Eseguire il comando vmstat -f per visualizzare il numero di forks dall'ultimo boot.

    vmstat -f
    
  7. Eseguire il comando vmstat -t per aggiungere un indicatore orario all'output.

    vmstat -t
    
  8. Eseguire il comando vmstat -d per visualizzare le statistiche di utilizzo del disco sul sistema.

    vmstat -d
    
  9. Eseguire il comando vmstat -p sda1 per creare un report su una partizione disco specifica.

    vmstat -p sda1
    

    L'output mostra un riepilogo per la partizione, inclusi il numero o le operazioni di lettura e scrittura.

Esplorare e utilizzare le opzioni del comando mpstat

Il comando mpstat viene utilizzato per raccogliere e visualizzare le statistiche sulle prestazioni per tutte le CPU logiche nel sistema. Quando una CPU è occupata da un processo, non è disponibile per l'elaborazione di altre richieste. Questi altri processi devono attendere che la CPU sia libera.

Guarda il video di seguito per una panoramica su mpstat.

  1. Eseguire il comando mpstat senza opzioni.

    mpstat
    

    La prima riga mostra la versione del kernel Linux, il nome host, la data corrente, l'architettura e il numero di CPU presenti nel sistema.

    La prima colonna della riga successiva fornisce un indicatore orario, con le colonne rimanenti definite come segue:

    • CPU è il processore designato dal numero che inizia da 0 o dalla parola chiave all che indica che le statistiche vengono calcolate come medie tra tutti i processori.

    • %user è la percentuale di CPU utilizzata durante l'esecuzione delle applicazioni a livello di utente.

    • %nice è la percentuale di CPU utilizzata durante l'esecuzione a livello di utente con una buona priorità.

    • %sys è la percentuale di CPU utilizzata durante l'esecuzione a livello di sistema (kernel).

      Il comando mpstat non include il tempo dedicato alla manutenzione degli interrupt hardware e software.

    • %iowait è la percentuale di tempo di inattività delle CPU mentre il sistema disponeva di una richiesta di I/O su disco eccezionale.

    • %irq è la percentuale di tempo impiegata dalle CPU per gestire gli interrupt hardware.

    • %soft è la percentuale di tempo impiegata dalle CPU per gestire gli interrupt software.

    • %steal è la percentuale di tempo trascorso nell'attesa non volontaria da parte delle CPU virtuali, mentre l'hypervisor stava gestendo un altro processore virtuale.

    • %guest è la percentuale di tempo impiegata dalle CPU per eseguire un processore virtuale.

    • %gnice è la percentuale di tempo impiegato dalle CPU per eseguire un guest previsto.

    • %idle è la percentuale di tempo in cui la CPU era (o le CPU erano) inattiva e il sistema non disponeva di una richiesta di I/O su disco eccezionale.

  2. Eseguire il comando mpstat 2 5 per visualizzare l'attività della CPU ogni due secondi per un totale di cinque report su tutte le CPU.

    mpstat 2 5
    

    L'output stampa una sola riga di informazioni per un totale di cinque volte e stampa anche una media.

  3. Eseguire il comando mpstat -P ALL per segnalare l'uso della CPU su ciascuna CPU.

    mpstat -P ALL
    

    Questo output consente di stampare una singola linea di attività per tutte le CPU e per ciascuna CPU. Nota: mpstat stampa anche l'utilizzo medio della CPU per il periodo specificato.

  4. Eseguire il comando mpstat -P ALL 2 5 per visualizzare l'attività della CPU ogni due secondi sulle CPU.

    mpstat -P ALL 2 5
    

    Questo output stampa le statistiche di utilizzo della CPU per ogni CPU 5 volte a un intervallo di 2 secondi. Nota: mpstat stampa anche l'utilizzo medio della CPU per il periodo specificato.

  5. Eseguire il comando mpstat -A per stampare l'utilizzo della CPU e interrompere le statistiche nello stesso output del comando.

    mpstat -A
    

Esplorare il comando top

Il comando top fornisce un'analisi continua dell'attività del processore in tempo reale. top visualizza un elenco dei processi o dei task a uso intensivo di CPU nel sistema e fornisce un'interfaccia interattiva limitata per la manipolazione dei processi.

Guarda il video di seguito per una panoramica su top.

  1. Eseguire il comando top senza opzioni per la visualizzazione point-in-time dell'attività della CPU.

    top
    

    L'output viene aggiornato ogni tre secondi per impostazione predefinita e diviso in due sezioni principali.

    Nella sezione superiore vengono visualizzate informazioni generali, ad esempio le medie di carico negli ultimi 1, 5 e 15 minuti, il numero di attività in esecuzione e in attesa e l'uso complessivo della CPU e della memoria.

    • Utilizzare quanto segue per attivare o disattivare l'output visualizzato nella sezione superiore:

      • Immettere la lettera minuscola l (non numerica 1) per attivare/disattivare la media di carico e il tempo di attività.

      • Immettere m per attivare/disattivare la memoria e lo swap dell'uso.

      • Immettere t per attivare/disattivare la memoria e lo swap dell'uso.

    Nella sezione inferiore viene visualizzato un elenco ordinato di processi, in genere in base all'uso della CPU, insieme ai rispettivi numeri ID processo (PID) e all'utente proprietario del processo. Inoltre, gli output visualizzano il tempo di esecuzione e la memoria utilizzati dai processi.

    Di seguito sono descritte le colonne della sezione inferiore.

    • PID è l'ID processo univoco del task.

    • USER è il nome utente effettivo del proprietario del task.

    • PR è la priorità effettiva del task.

    • NI è il valore appropriato del task nell'area utente.

      Un valore negativo indica una priorità più alta e un valore positivo indica una priorità più bassa. Il valore zero indica che la priorità di un task non ha effetto quando viene eseguita.

    • VIRT è la quantità totale di memoria virtuale utilizzata dal task.

      Questo valore include tutto il codice, i dati e le librerie condivise, nonché le pagine rimosse.

    • RES è la memoria fisica non swap o la dimensione residente utilizzata da un task.

    • SHR è la quantità di memoria condivisa utilizzata dal task.

      Questa memoria potrebbe essere condivisa con altri processi.

    • S è lo stato del task. Ci sono cinque stati:

      • D Sospensione interrompibile

      • R In esecuzione

      • S Sospensione

      • T tracciato o arrestato

      • Z Zombie

    • %CPU è la quota del tempo CPU trascorso o dell'uso della CPU dall'ultimo aggiornamento della schermata, espressa come percentuale del tempo CPU totale.

    • %MEM è la condivisione attualmente utilizzata dell'attività relativa alla memoria fisica disponibile o all'uso della memoria.

    • TIME+ è il tempo totale della CPU utilizzato dal task dopo l'avvio.

    • COMMAND è la riga di comando o il nome del programma utilizzato per avviare un task.

  2. Uscire da top immettendo Crtl+C.

Confrontare l'output dei comandi da vmstat, mpstat e top

Per eseguire questa operazione, eseguire vari test stress per emulare carichi diversi sul sistema di laboratorio, quindi utilizzare i comandi vmstat, mpstat e top per determinare il tipo di caricamento da essi generato.

Anche se si eseguono i test come processi in background, considerare la possibilità di aprire ulteriori finestre terminali per i confronti.

Ogni finestra aggiuntiva richiede il login all'istanza di laboratorio utilizzando da ssh a oracle@<IP_ADDRESS_OF_COMPUTE_INSTANCE>. Dove <IP_ADDRESS_OF_COMPUTE_INSTANCE> è l'indirizzo IP copiato dalla console di Oracle Cloud.

  1. Installare lo strumento stress.

    1. Utilizzare il comando dnf repolist per verificare lo stato del repository ol8_developer_EPEL.

      dnf repolist ol8_developer_EPEL
      
      • Se lo stato è enabled, procedere all'installazione dei package di strumenti stress. In caso contrario, continuare ad abilitare il repository.

      • Abilitare il repository se lo stato è disabled utilizzando il comando dnf conifg-manager.

        dnf config-manager --enable ol8_developer_EPEL
        
  2. Eseguire il comando dnf install per installare i pacchetti dello strumento stress.

    dnf install stress -y
    
  3. Eseguire il comando stress --dry-run per visualizzare un esempio della sintassi del comando. Attendere e rivedere le opzioni nell'esempio, insieme alle altre opzioni dei comandi elencate.

    stress --dry-run
    
  4. Eseguire i comandi vmstat 4 4 e mpstat 4 4 per visualizzare una baseline dell'attività del sistema. In particolare, rilevare le percentuali della CPU allocate ai processi utente e sistema (kernel). Questa colonna deve essere vicina a zero 0. Prendere nota anche della quantità di memoria libera.

    vmstat 4 4
    mpstat 4 4
    
  5. Eseguire il comando stress --cpu per emulare un programma associato a un calcolo ed eseguire il comando in background. Questo comando genera otto processi associati alla computazione.

    stress --cpu 8 &
    
    • Fare clic su return per tornare al prompt.

    • Eseguire il comando ps -ef per visualizzare i processi stress in esecuzione. Inserire l'output in grep stress.

      ps -ef | grep stress
      
  6. Eseguire il comando vmstat 4 10 e prendere nota dei valori riportati nelle colonne associate all'utilizzo della CPU.

    vmstat 4 10
    

    In alcuni momenti, è necessario che le percentuali sotto la colonna us riflettano il carico generato da stress.

  7. Eseguire il comando mpstat 4 10 per valutare l'utilizzo di tutte le CPU.

    mpstat 4 10
    
  8. Eseguire il comando mpstat -P ALL 4 10 per valutare l'utilizzo di ciascuna CPU.

    mpstat -P ALL 4 10
    
  9. Eseguire il comando top per esaminare l'utilizzo della CPU da parte dei processi stress.

    top
    

    Dopo alcuni minuti, si noti che i processi stress vengono eseguiti con la massima priorità. Uscire da top immettendo un valore Ctrl+C.

  10. Eseguire il comando pkill per arrestare i processi stress.

    pkill stress
    
  11. Eseguire di nuovo i comandi vmstat 4 4 e mpstat 4 4 per visualizzare una baseline dell'attività del sistema.

  12. Eseguire un nuovo comando stress e aggiungere le opzioni --vm e --vm-bytes per generare dinamicamente l'attività di memoria sul sistema.

    stress --cpu 8 --vm 8 --vm-bytes 512M &
    
  13. Eseguire vmstat 4 10, mpstat -P ALL 4 10 e top per valutare l'attività della CPU e della memoria.

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Uscire da top immettendo Crtl+C.
  14. Utilizzare il comando pkill per arrestare i processi stress.

    pkill stress 
    
  15. Eseguire di nuovo i comandi vmstat 4 4 e mpstat 4 4 per visualizzare una baseline dell'attività del sistema.

  16. Eseguire un nuovo comando stress e aggiungere l'opzione --io per generare dinamicamente l'attività di input/output nel sistema.

    stress --cpu 8 --vm 8 --vm-bytes 512M --io 8 &
    
  17. Eseguire vmstat 4 10, mpstat -P ALL 4 10 e top per valutare l'attività CPU, memoria, input/output.

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Uscire da top immettendo Crtl+C.

    • Utilizzare pkill per terminare stress.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare il sito Oracle Help Center.