Linux e /sys

C’è un momento, prima o poi, nella vita di chi smanetta con Linux, in cui ci si accorge che gli strumenti “classici” non bastano più. top, htop, lsblk, ip… utilissimi, certo. Ma cosa succede davvero sotto il cofano?
È qui che entra in gioco /sys: una di quelle cose che esistono da sempre, ma che spesso restano in ombra finché non ne hai davvero bisogno. E quando ci entri dentro per la prima volta… è un po’ come aprire una porta segreta.
Questo articolo prende ispirazione da un approfondimento molto interessante su sysfs , ma lo rielabora in chiave pratica, nello stile “mani sporche di terminale”.
/sys: non è una directory, è un’interfaccia
Partiamo da una cosa fondamentale: /sys non è un filesystem “vero”.
È un filesystem virtuale (sysfs), montato in RAM, che espone direttamente le strutture interne del kernel. In pratica:
- leggi un file → stai interrogando il kernel
- scrivi un file → stai modificando il comportamento del kernel (in tempo reale)
Sì, hai capito bene.
E la cosa più bella? Lo fai con strumenti banalissimi:
cat
echo
/sys vs /proc: due facce della stessa medaglia
Se /proc è orientato ai processi, /sys è orientato all’hardware e ai dispositivi.
- /proc → processi, memoria, parametri runtime
- /sys → device, driver, bus, kernel objects
Nel documento originale viene sottolineata proprio questa differenza strutturale : /sys è molto più organizzato e riflette il modello a oggetti del kernel.
Navigare /sys senza perdersi
La prima volta che fai:
ls /sys
ti senti un po’ sopraffatto. È normale.
Ecco i punti chiave da cui partire:
- /sys/class → vista “funzionale” (rete, block, input…)
- /sys/block → dischi e storage
- /sys/devices → struttura reale dell’hardware
- /sys/bus → come i dispositivi sono collegati
- /sys/module → moduli del kernel
Un concetto importante (e spesso ignorato): molto è collegato tramite symlink. Lo stesso dispositivo può apparire in più punti, ma è sempre lo stesso oggetto.
Esempio pratico: rete
Vuoi capire lo stato reale di una scheda di rete senza usare ip?
cd /sys/class/net/eth0
Dentro trovi:
cat operstate
cat speed
cat mtu
cat carrier
Oppure statistiche:
cat statistics/rx_bytes
cat statistics/tx_bytes
È tutto lì, aggiornato in tempo reale.
Cambiare parametri al volo
Qui arriva la parte divertente (e pericolosa, se fai a caso).
Vuoi cambiare l’MTU?
echo 1400 > /sys/class/net/eth0/mtu
Nessun riavvio. Nessun tool esterno. Diretto al kernel.
Come evidenziato anche nell’articolo originale :
- le scritture vengono validate
- se sbagli, ricevi errore (non rompi tutto… di solito)
NB: le modifiche non sono persistenti.
CPU tuning senza tool esterni
Uno degli utilizzi più interessanti è il controllo della CPU.
Governor
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Cambiarlo:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Frequenza corrente
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
Limitare la frequenza
echo 2400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
Perfetto per:
- server rumorosi
- laptop che scaldano troppo
- ambienti virtualizzati
Storage: capire davvero i dischi
Dentro /sys/block trovi informazioni che spesso gli altri tool nascondono.
cd /sys/block/sda/queue
Qui puoi vedere:
cat scheduler
cat rotational
cat read_ahead_kb
E anche modificarli:
echo mq-deadline > scheduler
Se stai ottimizzando performance su SSD o VM, questo è oro.
Temperatura e power management
Su laptop o server, /sys è una miniera.
Temperature
for z in /sys/class/thermal/thermal_zone*; do
echo "$(cat $z/type): $(($(cat $z/temp)/1000))°C"
done
Batteria
cat /sys/class/power_supply/BAT0/capacity
cat /sys/class/power_supply/BAT0/status
Puoi anche calcolare salute e autonomia, come mostrato nell’articolo originale .
Driver e debug (livello avanzato)
Una delle cose più potenti: gestire i driver manualmente.
Esempio (semplificato):
echo 0000:03:00.0 > /sys/bus/pci/drivers/nvidia/unbind
echo 0000:03:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
Scenario tipico:
- GPU passthrough su Proxmox
- debugging driver
- recovery da crash
Qui si entra nel territorio “sysadmin serio”.
Quando usare davvero /sys
Non è uno strumento da usare sempre. Ma diventa fondamentale quando:
- devi fare troubleshooting hardware
- vuoi evitare tool esterni
- ti serve controllo fine
- stai lavorando su performance tuning
- stai costruendo automazioni low-level
Conclusione
/sys è uno di quegli strumenti che cambiano il modo in cui vedi Linux.
Non è più una scatola nera. Diventa qualcosa che puoi:
- esplorare
- interrogare
- modificare
Direttamente.
Non serve impararlo tutto. Basta iniziare a curiosare.
Magari la prossima volta che un comando “non basta”, invece di installare l’ennesimo tool… prova a dare un’occhiata in /sys.
Potresti trovare la risposta già lì.
Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.
Risorse: