Linux: Performance & Kernel Tuning

🚀 Linux: Performance & Kernel Tuning

::: info L’ottimizzazione in Linux consiste nel bilanciare l’uso della CPU, della memoria e dell’I/O del disco per ridurre i colli di bottiglia durante l’esecuzione di calcoli intensivi. Interverremo sui parametri del kernel tramite sysctl e sulla gestione della memoria tramite ZRAM. :::

1. Gestione Memoria: ZRAM vs Swap

Lo Swap su disco (anche su NVMe) è ordini di grandezza più lento della RAM. La ZRAM crea un dispositivo di swap compresso direttamente nella RAM. Quando il sistema esaurisce la memoria, comprime i dati invece di scriverli sul disco.

Installazione e Configurazione (Debian/Ubuntu)

# Installazione dello strumento di gestione
sudo apt update && sudo apt install zram-tools -y

# Configurazione del servizio
# Modifica il file /etc/default/zramswap
# Imposta PERCENT=25 (usa il 25% della RAM per la compressione)
sudo nano /etc/default/zramswap

# Riavvio del servizio
sudo systemctl restart zramswap

Ottimizzazione Swappiness

Il valore di swappiness (0-100) definisce quanto aggressivamente il kernel sposta i dati in swap. Per una workstation/server, vogliamo che Linux usi la RAM il più possibile.

# Verifica il valore attuale (default spesso 60)
cat /proc/sys/vm/swappiness

# Imposta a 10 (consigliato per workstation/AI server)
sudo sysctl -w vm.swappiness=10

# Rendi la modifica persistente
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

2. CPU Performance: Governors

I moderni processori scalano la frequenza per risparmiare energia. Per lo sviluppo software, vogliamo che la CPU reagisca istantaneamente.

Impostare il Governor “Performance”

# Installazione utility
sudo apt install cpufrequtils -y

# Imposta tutti i core in modalità performance
sudo cpufreq-set -g performance

# Verifica lo stato
cpufreq-info | grep "current policy"

3. Storage & I/O Scheduler

Il modo in care il kernel accoda le richieste di lettura/scrittura impatta sulla reattività del sistema, specialmente durante il caricamento di modelli LLM o database pesanti.

Ottimizzazione per SSD/NVMe

Per i dischi moderni, il miglior scheduler è spesso none o mq-deadline.

# Verifica lo scheduler attivo (es. per /dev/nvme0n1)
cat /sys/block/nvme0n1/queue/scheduler

# Se vedi [mq-deadline], è già ottimizzato per SSD.
# Se hai molti processi concorrenti, puoi forzare 'none' per ridurre l'overhead della CPU.
echo "none" | sudo tee /sys/block/nvme0n1/queue/scheduler

📈 Architettura delle Risorse (Mermaid)


4. Kernel Tweaks via sysctl

Parametri avanzati per migliorare il throughput del network e il limite di file aperti (critico per Docker/Proxmox).

Aggiungi queste righe a /etc/sysctl.conf:

# Aumenta il numero massimo di file aperti
fs.file-max = 2097152

# Ottimizzazione buffer di rete per trasferimenti veloci (1Gbps+)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Migliora la gestione delle connessioni entranti
net.core.somaxconn = 4096

Applica le modifiche: sudo sysctl -p


💡 Note dell’Ingegnere (Critical Thinking)

  • ZRAM vs LLM: Se carichi un modello da 70B che occupa quasi tutta la RAM, la ZRAM potrebbe rallentare l’inferenza perché la CPU deve comprimere/decomprimere continuamente i pesi del modello. Monitora l’uso della CPU con btop.
  • Thermal Throttling: Usare il governor performance su un laptop (come il tuo HP) potrebbe causare surriscaldamento. Se le ventole sono troppo rumorose, usa il governor schedutil (un ottimo compromesso moderno).
  • Dirty Ratio: Se scrivi molti dati su NAS (QNAP/Synology), aumenta vm.dirty_ratio per permettere a Linux di usare più RAM come buffer prima di scrivere fisicamente sulla rete.

Ultimo aggiornamento: {{UPDATE_DATE}} | Tags: #Linux #Kernel #Performance #ZRAM #Sysctl

Last updated on Thursday, March 5, 2026
Built with Hugo
Theme Stack designed by Jimmy