In questo post verranno discussi alcuni strumenti di profilazione di base inclusi nella maggior parte dei sistemi Linux per impostazione predefinita. Gli strumenti introdotti in questo post, vmstat, sar, iostat e mpstat, sono relativamente semplici ma forniscono dati di base che possono essere molto utili quando si analizzano le prestazioni di un sistema. Per la maggior parte degli esempi utilizzeremo una macchina CentOS 8.
vmstat:statistiche sulla memoria virtuale
Uno degli strumenti più utili per la risoluzione dei problemi di prestazioni relativi alla memoria è vmstat. Il comando vmstat fa parte di procps-ng pacchetto, che include altri utili comandi di analisi delle prestazioni come free e top.
Il comando vmstat, se non viene fornito alcun argomento, stamperà le medie di varie statistiche di sistema dall'avvio. Il comando vmstat accetta due argomenti. Il primo è il ritardo e il secondo è il conteggio . Il ritardo è un valore in secondi tra l'uscita. Il conteggio è il numero di iterazioni di statistiche da riportare. Se non viene fornito alcun conteggio, vmstat riporterà continuamente le statistiche.
Le statistiche sulla memoria sono riportate in KiB per impostazione predefinita. L'opzione —S consente di modificare questo valore per segnalare in KB, MB o MiB con -S k , -S m e -S M , rispettivamente.
La prima riga dell'output di vmstat è sempre una media dall'avvio, quindi quando si raccolgono le metriche, rimuovere la prima riga e utilizzare le righe successive. Le prime due righe di output sono informazioni di intestazione e la terza è la media del tempo di attività. L'esempio seguente mostra l'output di vmstat a partire dalla quarta riga di output:
# vmstat 10 | tail -n +4 1 0 0 479748 1044 570784 0 0 0 5 90 132 0 0 100 0 0 0 0 0 475952 1044 570912 0 0 0 0 81 130 0 0 100 0 0 0 0 0 479456 1044 570856 0 0 0 52 87 137 0 0 100 0 0 ...
Panoramica delle colonne vmstat
esempi vmstat
1. Il comando vmstat, se non viene fornito alcun argomento, stamperà le medie di varie statistiche di sistema dall'avvio:
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 424444 1044 615940 0 0 89 14 58 78 1 0 98 1 0
2. Ecco un esempio in cui vmstat emetterà statistiche ogni 10 secondi fino all'interruzione:
# vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 426440 1044 615872 0 0 88 14 58 78 1 0 98 1 0 0 0 0 426072 1044 615872 0 0 0 1 92 137 0 0 100 0 0 0 0 0 426072 1044 615872 0 0 0 5 74 116 0 0 100 0 0 ...
3. Se si desidera che vmstat si chiuda dopo aver stampato quattro report, aggiungere un argomento di conteggio:
# vmstat 10 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 425236 1044 616252 0 0 86 13 58 78 1 0 98 1 0 0 0 0 424936 1044 616252 0 0 0 1 85 129 0 0 100 0 0 0 0 0 424876 1044 616252 0 0 0 15 70 111 0 0 100 0 0 0 0 0 423360 1044 616252 0 0 0 1 89 130 0 0 100 0 0
sar:il reporter dell'attività del sistema
Il comando sar è uno strumento di analisi multiuso che fa parte del pacchetto sysstat. Funziona in due modalità. Può leggere i dati raccolti da un cron job ogni 10 minuti, oppure può essere utilizzato per raccogliere dati istantanei sullo stato del sistema.
Nota :Il lavoro cron è installato come /etc/cron.d/sysstat , che esegue i comandi /usr/lib64/sa/sa1 e /usr/lib64/sa/sa2 che raccolgono dati utilizzando /usr/lib64/sa/sadc e sar. Questi dati sono archiviati in /var/log/sa/sadd, dove dd è il giorno del mese a due cifre.Nota :Come il comando vmstat, sar può essere eseguito con delay e count argomenti per riportare le statistiche per un certo numero di iterazioni e con una quantità di ritardo specificata tra ogni iterazione.Assicurati che sar sia installato prima di iniziare. Se non è installato, installalo usando yum:
# yum install sysstat
Una volta installato, configura sar per raccogliere dati a intervalli di 5 minuti:
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
Per ottenere i migliori risultati quando usi sar, assicurati di impostare una lingua con una LANG variabile di ambiente che fornisce supporto per l'ora 24 ore su 24. Ad esempio, se si ordinano i dati sar in base alla prima colonna (la colonna dell'ora), en_US.UTF-8 la localizzazione si svolgerà alle 13:00:00 prima delle 02:00:00. È probabile che ciò distorca i punti dati e renda un grafico privo di valore. La locale c è quella che soddisfa questo requisito di ordinamento. Quando hai a che fare con i dati sar, sovrascrivi la locale in questo modo:
# LANG=C sar -q Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/21 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
In effetti, un alias può essere semplicemente creato per sar. Aggiungi la seguente riga a /etc/bashrc o ~/.bashrc :
alias sar='LANG=C sar'
sar può essere utilizzato per leggere uno dei file di registro (o qualsiasi file di dati sar in generale) utilizzando l'opzione -f.
# sar -q -f /var/log/sa/sa09 Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/2021 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
È possibile eseguire alcune configurazioni in /etc/sysconfig/sysstat file. Ad esempio, cambia la STORIA variabile per impostare il numero di giorni di conservazione degli archivi per sar.
sar esempi
1. Creare un alias a livello di sistema per sar che costringa sar a segnalare utilizzando l'orario di 24 ore. Sorgente questo nella shell corrente.
# echo "alias sar='LANG=c sar'" >> /etc/bashrc # source /etc/bashrc
2. Conserva 60 giorni di archivi invece di 28. Modifica la variabile HISTORY in /etc/sysconfig/sysstat.
# vim /etc/sysconfig/sysstat HISTORY=60
3. Segnala le statistiche di I/O e velocità di trasferimento:
# sar -b Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 38.16 31.03 7.14 1655.33 390.20 12:20:01 AM 12.11 5.81 6.30 280.99 239.08 12:30:01 AM 8.40 2.34 6.06 105.99 229.95 12:40:01 AM 7.38 1.62 5.76 23.48 211.41 12:50:01 AM 8.69 2.64 6.04 125.33 230.58 01:00:01 AM 8.09 2.26 5.83 77.72 227.70 01:10:02 AM 12.25 6.10 6.15 215.14 235.73 ... Average: 12.81 6.41 6.40 343.31 255.49
4. Segnala l'utilizzo di CPU0:
# sar -P 0 Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM 0 11.69 0.00 2.96 0.28 0.06 85.01 12:20:01 AM 0 9.87 0.00 2.53 0.12 0.04 87.44 12:30:01 AM 0 9.96 0.00 2.48 0.09 0.04 87.43 12:40:01 AM 0 9.59 0.00 2.43 0.06 0.04 87.88 12:50:01 AM 0 9.80 0.00 2.46 0.09 0.05 87.59 ... Average: 0 10.00 0.02 2.60 0.14 0.15 87.08
5. Riporta le statistiche del dispositivo di rete dal file di registro corrente.
# sar -n DEV Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... Average: dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ...
6. Configurare un lavoro cron aggiuntivo per raccogliere i dati sull'utilizzo dell'energia oltre ai dati del disco. Modificare quanto segue nel file /etc/sysconfig/sysstat:
SADC_OPTIONS="-S POWER"
iostat e mpstat
Come sar, anche iostat e mpstat fanno parte del pacchetto sysstat. Sia iostat che mpstat supportano gli argomenti delay e count proprio come il comando vmstat. iostat riporta le statistiche della CPU e degli I/O per i dispositivi. partizioni e file system di rete (NFS).
Il comando mpstat riporta le statistiche relative alla CPU. Come per sar, potrebbe essere necessario configurare la LANG per 24 ore.
Esempi iostat e mpstat
1. Mostra l'output esteso per /dev/sda.
# iostat -x sda Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.12 0.08 2.85 0.09 0.24 88.63 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 1.76 7.13 3.55 4.17 122.57 93.88 56.07 0.00 0.83 0.71 0.93 0.88 0.68
2. Mostra le statistiche della CPU per CPU0:
# LANG=C mpstat -P 0 Linux 5.4.10-x86_64-linode132 (mywebserver.com) 02/09/21 _x86_64_ (1 CPU) 06:32:13 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:32:13 0 8.12 0.08 2.37 0.09 0.22 0.25 0.24 0.00 0.00 88.63