Padroneggiare le Prestazioni: Una Guida Pratica all'Uso della Suite di Strumenti Sysstat
Il monitoraggio delle prestazioni è la base fondamentale di un'amministrazione affidabile dei sistemi Linux. Senza strumenti robusti per tracciare l'utilizzo delle risorse, identificare i colli di bottiglia diventa un'ipotesi, portando a una risoluzione dei problemi inefficiente e a uno scaling reattivo. La suite di utilità sysstat è il toolkit Linux nativo e indispensabile per raccogliere, analizzare e riportare l'attività del sistema in tutte le aree critiche delle risorse.
Questa guida fornisce una panoramica completa della suite di strumenti sysstat, concentrandosi principalmente sul System Activity Reporter (sar). Tratteremo l'installazione, la configurazione per la registrazione storica e esempi pratici di comandi per stabilire le baseline delle prestazioni e individuare la contesa delle risorse in tempo reale e nell'analisi post-mortem di CPU, memoria, I/O su disco e utilizzo della rete.
1. Installazione e Configurazione Iniziale di Sysstat
Il pacchetto sysstat è solitamente disponibile nei repository standard di tutte le principali distribuzioni Linux.
1.1 Comandi di Installazione
Usa il comando del gestore di pacchetti appropriato per il tuo sistema:
Debian/Ubuntu:
sudo apt update
sudo apt install sysstat
RHEL/CentOS/Fedora:
sudo yum install sysstat
# o usa dnf per sistemi più recenti
sudo dnf install sysstat
1.2 Abilitazione della Raccolta Dati Storici
Affinché sar sia veramente utile, deve raccogliere dati storicamente. Per impostazione predefinita, l'installazione spesso configura un cron job o un timer systemd, ma la verifica è cruciale.
Sui sistemi moderni, assicurati che il servizio sysstat sia attivo:
sudo systemctl enable --now sysstat
File di Configurazione
La frequenza della raccolta dati è controllata da file di configurazione, tipicamente situati in /etc/default/sysstat (Debian/Ubuntu) o /etc/sysconfig/sysstat (RHEL/CentOS). Cerca l'impostazione ENABLED o HISTORY. Impostare ENABLED="true" garantisce la raccolta giornaliera dei dati.
Suggerimento: Per impostazione predefinita, i file di dati di
sysstatsono memorizzati in/var/log/sa/con nomi di file comesaXX(dove XX è il giorno del mese).
2. L'Utilità Principale: System Activity Reporter (sar)
sar è l'interfaccia principale per la visualizzazione delle statistiche. Può visualizzare dati in tempo reale o analizzare dati storici precedentemente raccolti.
2.1 Sintassi Base per il Monitoraggio in Tempo Reale
La sintassi di base è progettata per riportare metriche specifiche a un intervallo specificato per un conteggio definito.
sar [options] [interval] [count]
Esempio: Per riportare statistiche generali della CPU ogni 3 secondi, 10 volte:
sar -u 3 10
| Opzione | Descrizione |
|---|---|
-u |
Utilizzo della CPU (predefinito) |
-r |
Statistiche di memoria e paging |
-d |
Attività del dispositivo a blocchi (I/O su disco) |
-n |
Statistiche di rete (es. -n DEV per le statistiche dell'interfaccia) |
-q |
Coda di esecuzione e carico medio |
-W |
Attività di swapping (paging) |
-A |
Tutte le metriche (utile per snapshot completi) |
3. Metriche Chiave delle Prestazioni ed Esempi Pratici di sar
Comprendere l'output di sar richiede la conoscenza di quali metriche indicano la salute o lo stress delle prestazioni.
3.1 Utilizzo della CPU (sar -u)
L'utilizzo della CPU è spesso il primo posto dove cercare i colli di bottiglia. Un'alta utilizzazione in categorie specifiche indica la natura del carico di lavoro.
sar -u 5 3
| Metrica | Descrizione | Indicatore di Collo di Bottiglia |
|---|---|---|
%user |
Tempo CPU impiegato per l'esecuzione di processi a livello utente. | Alto indica saturazione dell'applicazione/servizio. |
%system |
Tempo CPU impiegato per l'esecuzione di task kernel/sistema. | Alto suggerisce chiamate di sistema intensive o problemi di driver. |
%iowait |
Tempo CPU inattivo in attesa di operazioni di I/O (disco/rete). | Alto indica un collo di bottiglia di I/O, non una carenza di CPU. |
%idle |
Tempo CPU trascorso inattivo (disponibile). | Basso (es. < 5%) suggerisce saturazione della CPU. |
3.2 Memoria e Paging (sar -r e sar -W)
Le statistiche della memoria rivelano sia il consumo sia se il sistema sta ricorrendo allo swapping o al paging.
Utilizzo della Memoria (sar -r):
sar -r 1 5
Concentrati su kbavail (memoria disponibile). Se kbmemfree è basso, ma kbcached e kbbuffers sono alti, la memoria viene utilizzata in modo efficiente dal meccanismo di caching del kernel.
Attività di Swapping (sar -W):
sar -W 1 5
Osserva pswpin/s (pagine scambiate in ingresso) e pswpout/s (pagine scambiate in uscita). Qualsiasi valore significativo non zero qui indica che il sistema sta eseguendo uno swapping aggressivo, segnalando una pressione sulla memoria (un forte collo di bottiglia).
3.3 Attività di I/O su Disco (sar -d)
Il monitoraggio dell'attività del disco è cruciale per i server di database o i sistemi di archiviazione molto utilizzati.
sar -d 3 5
Questo output richiede l'identificazione dei dispositivi specifici (es. sda, vda). Le metriche chiave includono:
tps: Trasferimenti al secondo (un valore alto indica un numero elevato di richieste di I/O).rd_sec/s&wr_sec/s: Quantità di dati letti/scritti al secondo.%util: Percentuale di tempo in cui il dispositivo è stato occupato a servire le richieste. Se%utilsi avvicina al 100%, il sistema di archiviazione è saturo.
3.4 Statistiche di Rete (sar -n)
sar può riportare l'attività attraverso vari livelli di rete. Il controllo più comune è l'attività dell'interfaccia (DEV).
sar -n DEV 5 1
Questo comando mostra metriche come rxpk/s (pacchetti ricevuti al secondo) e txkB/s (kilobyte trasmessi al secondo) per ogni interfaccia di rete. Usalo per identificare le interfacce che stanno subendo un carico elevato o potenziali errori.
4. Analisi Storica e Creazione di Baseline
Il vero potere di sysstat risiede nella sua capacità di analizzare l'attività del sistema per periodi prolungati, il che è essenziale per stabilire le baseline delle prestazioni (ciò che è normale per il tuo sistema).
4.1 Analisi dei Giorni Precedenti
Per visualizzare i dati raccolti in un giorno precedente, usa il flag -f per specificare il percorso del file giornaliero saXX.
Esempio: Per visualizzare le statistiche della CPU del 10° giorno del mese corrente:
sar -u -f /var/log/sa/sa10
Per rivedere le statistiche in un intervallo di tempo specifico di quel giorno, aggiungi i flag -s (ora di inizio) e -e (ora di fine) (usando il formato 24 ore).
# Visualizza le statistiche di rete dalle 14:00 alle 16:30 del 10° giorno
sar -n DEV -f /var/log/sa/sa10 -s 14:00:00 -e 16:30:00
4.2 Stabilire le Baseline
- Raccogliere Dati: Esegui
sysstatper 1-2 settimane durante periodi tipici di carico elevato e basso. - Identificare le Norme: Analizza i dati storici (
sar -f) per determinare l'utilizzo medio della CPU (%user,%system), la latenza di I/O di picco (%util) e l'utilizzo medio della memoria. - Definire le Soglie: Qualsiasi deviazione sostenuta (es.
%iowaitche raddoppia, o%idleche scende sotto il 5% per più di 10 minuti) rispetto alla tua baseline indica un problema di prestazioni che richiede indagine.
5. Strumenti Sysstat di Supporto
Mentre sar è lo strumento principale, la suite sysstat include utilità specializzate che offrono report focalizzati e altamente dettagliati.
5.1 iostat (Statistiche di Input/Output)
iostat fornisce metriche dettagliate specificamente focalizzate sull'utilizzo del dispositivo, particolarmente utili nella diagnosi dei colli di bottiglia dello storage.
# Riporta le statistiche del disco ogni 2 secondi, 4 volte, includendo le statistiche estese (x)
iostat -xd 2 4
Metriche chiave di iostat:
%util: La percentuale di tempo CPU durante la quale le richieste di I/O sono state inviate al dispositivo (indicatore cruciale di saturazione).await: Il tempo medio di attesa (in millisecondi) per le richieste di I/O inviate al dispositivo. Unawaitelevato indica una lenta reattività dello storage.
5.2 mpstat (Statistiche Multi-Processore)
Se sospetti problemi di scheduling della CPU o una distribuzione non uniforme del carico di lavoro tra i core, mpstat fornisce statistiche di utilizzo per processore, cosa che sar -u aggrega.
# Mostra l'utilizzo per tutte le CPU (A) ogni 2 secondi
mpstat -P ALL 2 1
Questo è inestimabile per identificare applicazioni single-thread che stanno saturando un singolo core mentre altri rimangono inattivi, o per diagnosticare l'efficienza dell'hyperthreading.
Conclusione
La suite di strumenti sysstat è un elemento fondamentale per l'ottimizzazione delle prestazioni e il monitoraggio dei sistemi Linux. Padroneggiando l'utilità sar, gli amministratori di sistema acquisiscono la capacità di andare oltre il semplice monitoraggio istantaneo e di condurre un'analisi approfondita e storica del consumo delle risorse. L'uso regolare di sar per monitorare l'attività di CPU, memoria, I/O e rete, unito alla creazione di solide baseline delle prestazioni, trasforma la risoluzione reattiva dei problemi in una gestione proattiva del sistema, garantendo un utilizzo ottimale delle risorse e la stabilità del sistema.