Unix / Linux - Prestazione del Sistema

Ciao a tutti, appassionati di tecnologia in erba! Come il tuo amico insegnante di scienze informatiche del quartiere, sono entusiasta di guidarvi attraverso il mondo affascinante delle prestazioni dei sistemi Unix/Linux. Non preoccupatevi se siete nuovi alla programmazione - inizieremo dalle basi e lavoreremo gradualmente. Allora, prendete una tazza di caffè (o tè, se è la vostra cosa), e tuffiamoci dentro!

Unix / Linux - System Performance

Componenti delle Prestazioni

Prima di iniziare a modificare i nostri sistemi, è fondamentale comprendere cosa compone la prestazione di un sistema. Pensa al tuo computer come un'orchestra finemente sintonizzata - ogni componente ha un ruolo vitale nella creazione di una performance armoniosa.

1. Utilizzo della CPU

La Central Processing Unit (CPU) è come il direttore della nostra orchestra. È responsabile dell'esecuzione delle istruzioni e della coordinazione di tutti gli altri componenti. Quando parliamo di utilizzo della CPU, ci riferiamo a quanto è impegnato questo direttore.

2. Utilizzo della Memoria

La memoria, o RAM, è come la partitura per la nostra orchestra. Memorizza i dati a cui la CPU ha bisogno di accedere rapidamente. Se esauriamo la memoria, le nostre prestazioni possono rallentare drammaticamente.

3. I/O del Disco

L'Input/Output del Disco (I/O) è come il processo dei musicisti che prendono nuovi strumenti o partiture. Coinvolge la lettura o la scrittura sul disco rigido, che può essere un'operazione più lenta rispetto all'accesso alla RAM.

4. Prestazione di Rete

La prestazione di rete è simile a come bene l'orchestra può sentire l'un l'altra e rimanere in sincronia. Coinvolge la velocità ed efficienza del trasferimento dei dati sulla rete.

Strumenti di Prestazione

Ora che abbiamo compreso i componenti, esaminiamo alcuni strumenti che possiamo utilizzare per misurare e migliorare le prestazioni del nostro sistema. Mi piace pensare a questi come strumenti di sintonia della nostra orchestra.

1. Comando top

Il comando top è come un cruscotto per il tuo sistema. Fornisce una vista in tempo reale dei processi in esecuzione e delle risorse di sistema.

$ top

Questo comando mostrerà una lista continuamente aggiornata di processi, ordinati per utilizzo della CPU per impostazione predefinita. Ecco cosa vedrai:

  • PID: Identificativo del processo
  • USER: Utente proprietario del processo
  • PR: Priorità
  • NI: Valore di nice (influenza la priorità)
  • VIRT: Memoria virtuale utilizzata
  • RES: Memoria fisica utilizzata
  • SHR: Memoria condivisa
  • S: Stato del processo
  • %CPU: Utilizzo della CPU
  • %MEM: Utilizzo della memoria
  • TIME+: Tempo totale della CPU
  • COMMAND: Nome del comando

2. Comando vmstat

Il comando vmstat è come uno stetoscopio per il cuore del sistema - riporta informazioni sui processi, la memoria, la paginazione, l'I/O dei blocchi, le trappole e l'attività della CPU.

$ vmstat 2 5

Questo comando mostrerà statistiche di sistema ogni 2 secondi, per 5 iterazioni. L'output include:

  • r: Numero di processi in attesa di tempo di esecuzione
  • b: Numero di processi in sonno ininterrotto
  • swpd: Quantità di memoria virtuale utilizzata
  • free: Quantità di memoria inutilizzata
  • buff: Quantità di memoria utilizzata come buffer
  • cache: Quantità di memoria utilizzata come cache
  • si: Quantità di memoria scambiata dall'hard disk
  • so: Quantità di memoria scambiata verso l'hard disk
  • bi: Blocchi ricevuti da un dispositivo a blocco
  • bo: Blocchi inviati a un dispositivo a blocco
  • in: Numero di interrupt per secondo
  • cs: Numero di cambi di contesto per secondo
  • us: Tempo impiegato per eseguire codice non nucleare
  • sy: Tempo impiegato per eseguire codice nucleare
  • id: Tempo impiegato inattivo
  • wa: Tempo impiegato in attesa di I/O

3. Comando iostat

Il comando iostat è come un tachimetro per i tuoi dischi rigidi. Riporta statistiche della CPU e dell'I/O per i dispositivi e le partizioni.

$ iostat -x 2 5

Questo comando mostrerà statistiche estese ogni 2 secondi, per 5 iterazioni. L'output include:

  • Device: Nome del dispositivo
  • rrqm/s: Richieste di lettura fuse per secondo
  • wrqm/s: Richieste di scrittura fuse per secondo
  • r/s: Letture per secondo
  • w/s: Scritture per secondo
  • rkB/s: Kilobyte letti per secondo
  • wkB/s: Kilobyte scritti per secondo
  • avgrq-sz: Dimensione media della richiesta in settori
  • avgqu-sz: Lunghezza media della coda
  • await: Tempo medio per le richieste di I/O
  • svctm: Tempo medio di servizio
  • %util: Percentuale di tempo della CPU durante il quale sono state inviate richieste di I/O

4. Comando netstat

Il comando netstat è come un controllore del traffico per la tua rete. Mostra le connessioni di rete, le tabelle di routing, le statistiche dell'interfaccia, le connessioni di mascheramento e le iscrizioni multicast.

$ netstat -tuln

Questo comando mostrerà:

  • Connessioni Internet attive (TCP e UDP)
  • Socket in ascolto
  • Indirizzi e numeri di porta numerici

L'output include:

  • Proto: Protocollo (TCP o UDP)
  • Recv-Q: Dati in coda per la ricezione
  • Send-Q: Dati in coda per l'invio
  • Local Address: Estremità locale del socket
  • Foreign Address: Estremità remota del socket
  • State: Stato del socket

5. Comando sar

Il comando sar (System Activity Reporter) è come un registratore di cassa per il tuo sistema. Raccolte, riporta e salva informazioni sull'attività del sistema.

$ sar -u 2 5

Questo comando mostrerà statistiche di utilizzo della CPU ogni 2 secondi, per 5 iterazioni. L'output include:

  • %user: Percentuale di utilizzo della CPU a livello utente
  • %nice: Percentuale di utilizzo della CPU a livello utente con priorità nice
  • %system: Percentuale di utilizzo della CPU a livello sistema
  • %iowait: Percentuale di tempo che la CPU è inattiva durante il quale il sistema aveva una richiesta di I/O in sospeso
  • %steal: Percentuale di tempo trascorso in attesa involontaria dal CPU virtuale mentre l'ipervisore stava servendo un altro processore virtuale
  • %idle: Percentuale di tempo che la CPU è inattiva e il sistema non aveva una richiesta di I/O in sospeso

Ecco una tabella che riassume questi strumenti di prestazione:

Comando Scopo Informazioni Chiave
top Monitoraggio in tempo reale del sistema Lista dei processi, utilizzo della CPU, utilizzo della memoria
vmstat Statistiche della memoria virtuale Processi, memoria, paginazione, I/O, attività della CPU
iostat Statistiche dell'I/O Statistiche della CPU, statistiche del dispositivo I/O
netstat Statistiche di rete Connessioni di rete, tabelle di routing, statistiche dell'interfaccia
sar Reporter dell'attività del sistema Utilizzo della CPU, utilizzo della memoria, attività di I/O, attività di rete

Ricorda, padroneggiare questi strumenti è come imparare a suonare uno strumento musicale - richiede pratica! Non scoraggiatevi se all'inizio sembra schiacciante. Inizia con uno strumento, comprendi a fondo la sua uscita, e poi passa al successivo.

Nel corso degli anni di insegnamento, ho scoperto che gli studenti che sperimentano regolarmente questi strumenti sui loro sistemi sviluppano una comprensione molto più profonda delle prestazioni del sistema. È come imparare a distinguere gli strumenti individuali in un'orchestra - improvvisamente, puoi identificare esattamente dove possono essere fatti miglioramenti.

Quindi, cari studenti, vi incoraggio a avviare il vostro terminale e iniziare a esplorare. Chi lo sa? Potresti diventare il prossimo grande direttore delle prestazioni di sistema!

Credits: Image by storyset