Capita molto spesso di verificare come sta lavorando un sistema linux con vari comandi, uno su tutti il semplice "w". Ma come leggere correttamente l'output a video?
Mi è sempre capitato, dovendo implementare sistemi di monitoraggio, di dover verificare "al volo" come lavorano i sistemi in un determinato momento.
Il comando che utilizzo più spesso è il "w"
[neexa@host ~]$ w
22:27:41 up 254 days, 7:22, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
neexa pts/0 a.b.c.d 22:27 0.00s 0.01s 0.00s w
uso "w" perchè oltre ad avere l'output che riporta il load medio (come top e uptime) ho subito sotto controllo il numero di utenti "loggati" sul sistema in quel momento.
Ma come vanno letti quei dati che riportano il load medio del sistema?
Prima di tutto è necessario specificare che i tre valori fanno riferimento a tre intervalli temporali distinti:
1 - carico medio del sistema nell'ultimo minuto
2 - carico medio del sistema negli ultimi 5 minuti
3 - carico medio del sistema negli ultimi 15 munuti
Perchè 3 valori? Perchè questo ci consente di capire come sta effettivamente lavorando la macchina.
Un "picco" verso l'alto nell'ultimo minuto potrebbe non essere preoccupante se negli altimi 5 e 15 minuti il sistema era nei valori normali.
Viceversa un tendenza a valori critici dagli ultimi 15 minuti in poi potrebbe iniziare ad essere preoccupante
Ma quali sono questi valori? Come capire quando un sistema è in sovraccarico?
La risposta è più semplice di quanto sembri leggendo i vari "man" o guide.
Sintetizzo senza secendere in tecnismi:
in un server singlecore il valore massimo entro il quale il sistema sta rispondendo correttamente è 1.
1 significa che abbiamo la cpu occupata al 100%.
valori superiori indicano che alcune richieste sono "accodate" e quindi noteremo dei rallentamenti nelle risposte dei vari processi interessati.
un valore 2 in questo scenario comincia ad essere preoccupante... 4 un probelma serio... e cosi via.
Ma 1 quindi è il valore ottimale? no, è il massimo che possiamo ottenere da un single core.
In questo caso una soglia d'allerta a 0,6 - 0,7 ci consente di continuare a lavorare sopportando eventuali carichi aggiuntivi.
Quando prepariamo delle soglie per un sistema di monitoraggio delle risorse, è buona regola settare soglie di alert prevedendo valori massimi e valori minimi. Ad esempio un sistema che lavora h24 con processi sempre attivi quando si verifica un load a 0.00 dovrebbe farmi insospettire... probabilmente non sta lavorando affatto.
E nei sistemi multicore? il conto non cambia. 1 è riferito a singolo core.
un dual core avrà come "soglia" 2. Un quadcore 4 e cosi via.
Multi core o multi processore? In questo caso poco importa, per il sistema sono la stessa cosa (cache e altri fattori a parte ovviamente).
Quindi se il nostro sistema sarà composto da 2 processori dual-core o da 1 quad-core consideriamo come valore massimo di load 4.
Cosa ne pensi di questo articolo?