::: 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.
:::
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 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
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
I moderni processori scalano la frequenza per risparmiare energia. Per lo sviluppo software, vogliamo che la CPU reagisca istantaneamente.
# 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"
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.
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
sysctlParametri 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
btop.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).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