La CPU di un sistema Linux va intesa come un’unità di esecuzione granulare e programmabile in modo indipendente. Conoscendo l’utilizzo della CPU si ha una fotografia di come vengono utilizzati i processori del computer (reali o virtuali). Ogni singola CPU rappresenta un singolo hardware hyper-thread fisico o virtuale. Il che significa che in una macchina potrebbero esserci più processori fisici, ognuno dei quali può avere più core e, a sua volta, ogni core può avere più hyperthread. Per raccogliere informazioni dettagliate sull’architettura e le prestazioni sulla CPU di Linux si possono usare diversi comandi che funzionano su qualsiasi distribuzione Linux e sono preinstallati a livello di sistema.
CPU nei sistemi Linux: come controllare le informazioni di dettaglio
Per risolvere i problemi o creare uno stack software, è necessario sapere con quale tipo di architettura si sta lavorando, così come i dettagli sull’hardware e le sue prestazioni. Nel caso di Linux è possibile raccogliere queste informazioni utilizzando l’interfaccia a riga di comando. (Command Line Interface). La CLI di Linux fornisce informazioni dettagliate sulla CPU, come il numero di core della CPU, l’architettura della CPU e l’utilizzo della CPU.
A differenza delle interfacce grafiche (GUI), la CLI (Command Line Interface) richiede che l’utente digiti specifici comandi in una console o terminale per eseguire operazioni come la gestione dei file, l’esecuzione di programmi e la configurazione del sistema.
Più in dettaglio, il comando lscpu visualizza una notevole quantità di informazioni generali sulla CPU. Quando si esegue il comando lscpu senza argomenti, questo restituisce una grande quantità di informazioni, solitamente più del necessario. Fortunatamente, è possibile eliminare alcune di queste informazioni inserendo argomenti aggiuntivi.
Ad esempio, se si desiderano solo informazioni sulla marca e sul modello della CPU, sul numero di socket, sul numero di core della CPU, sui thread per core e sui thread totali, è possibile inoltrare il comando lscpu a grep.
lscpu | egrep ‘Model name|Socket|Thread|NUMA|CPU/(s/)’
L’output, in questo modo diventa più facile da leggere e utilizzare.
Grazie a queste informazioni è possibile vedere quali tipi di applicazioni e servizi possono essere eseguiti su una macchina.
Come scoprire se una CPU supporta la virtualizzazione
Se si intende usare un sistema per la virtualizzazione, bisogna assicurarsi che la CPU sia in grado di supportarla. Per scoprirlo è possibile usare il comando lscpu, passando sempre attraverso grep ma, in questo caso, va controllato il flag Virtualization con il comando:
lscpu | grep ‘Virtualization’
Se l’output elenca VT-x, allora quella CPU è abilitata per la virtualizzazione. Se VT-x non è elencato, bisogna usare una macchina diversa.
Come controllare le informazioni sulla classe hardware della CPU di Linux
Per ottenere informazioni dettagliate e approfondite sulla classe CPU, utilizzare i privilegi sudo con il comando lshw :
sudo lshw -C CPU
L’output del comando sopra riportato dovrebbe fornire dettagli più approfonditi sulla CPU, tra cui tipo di slot, dimensione, capacità, larghezza, velocità di clock, fornitore e ID.
Come ottenere informazioni ancora più dettagliate
Per raccogliere quante più informazioni dettagliate possibili sulla CPU, è opportuno leggere il contenuto del file cpuinfo tramite il comando:
cat /proc/cpuinfo
Una volta digitato, viene visualizzata una quantità significativa di informazioni che bisogna sfogliare. Se non si riesce a scorrere da terminale, utilizzare il seguente comando mediante less:
cat /proc/cpuinfo | less
L’output di cpuinfo include sezioni per ogni CPU nel sistema. Ad esempio, un sistema con 16 CPU elenca le informazioni per le CPU 0-15.
Come controllare l’utilizzo della CPU
Digitando il comando htop è possibile controllare come viene utilizzata la CPU tramite una schermata che appare in tempo reale. Questo comando mostra informazioni in tempo reale, tra cui task, thread, uptime medio del carico e utilizzo per ogni CPU.
Per saperne di più su un comando specifico, leggere la pagina man del comando in questione come, ad esempio, man htop o man lscpu. Il progetto Linux man-pages documenta le interfacce del kernel Linux e della libreria C impiegate dai programmi user-space. Per quanto riguarda la libreria C, l’attenzione principale va rivolta alla libreria GNU C (glibc), sebbene, ove noto, sia inclusa anche la documentazione delle varianti in altre librerie C disponibili per Linux.
Comandi aggiuntivi per trovare informazioni sulla CPU dei sistemi Linux
Ci sono altri comandi che sono utili per scovare informazioni su una CPU di Linux. Diamo un’occhiata ad alcuni di essi.
nproc
Per ottenere l’elenco del numero di unità di elaborazione disponibili, digitare il comando nproc, utilissimo quando il sistema sembra sovraccarico.
Il calcolo del numero di CPU di Linux fisiche si ottiene attraverso la seguente formula:
Thread per core moltiplicato core per socket moltiplicato per socket
È possibile utilizzare nproc nei seguenti modi:
- Per visualizzare il totale delle unità di elaborazione installate, utilizzare il comando nproc –all
- Per escludere N unità di elaborazione, dove N è un valore, utilizzare il comando nproc –ignore=N
dmidecode
Il comando dmidecode scarica la tabella Desktop Management Interface (DMI) o System Management BIOS del computer in un formato leggibile. Questo comando mostra informazioni per BIOS, sistema, scheda madre, chassis, cache e CPU. Attenzione: per usare dmidecode sono necessari i privilegi Sudo.
Il comando viene eseguito come sudo dmidecode.
Inoltrare il comando tramite grep in questo modo:
sudo dmidecode | grep Processor
Il comando sopra riportato limita l’output alle righe che contengono la stringa Processor.
inxi
Questo comando è uno dei pochi che non è installato di default nelle distribuzioni Linux. Installare questa app dai repository standard sulla propria distribuzione come, ad esempio:
- sudo apt-get install inxi -y per distribuzioni basate su Ubuntu/Debian.
- epel-release se si sta usando una distribuzione basata su Fedora
Il comando inxi elenca informazioni sul sistema Linux, come:
- Marca e modello della CPU
- Velocità della CPU, minima e massima
- Versione del kernel
- Tempo di attività
- Memoria
- Storage
- Numero di processi in esecuzione
- Shell
- La versione inxi
Per ottenere maggiori dettagli sul sistema, come la versione dell’interfaccia firmware estensibile unificata della scheda madre, la risoluzione del display della GPU e i dispositivi di rete, aggiungere il flag -b al comando, ad esempio inxi -b
Per informazioni dettagliate sulla CPU, emettere il comando inxi -C.
Sono incluse informazioni sulla cache L2 e sulla velocità del core, per ogni core.
CPUID
Questo comando estrae i dettagli sulla CPU x86, raccolti dall’istruzione CPUID, determinando da tali informazioni la CPU esatta. Il comando cpuid stampa informazioni come vendor_id, versione, caratteristiche e via dicendo.
Il comando cpuid non è installato di default, ma può essere aggiunto dai repository standard con i seguenti comandi:
sudo apt-get install cpuid -y
oppure
sudo dnf install cpuid -y
Questo comando, che offre anche più informazioni del necessario, fornisce una buona panoramica della CPU di Linux installata.