Attenzione alle impostazioni di ottimizzazione del sistema operativo per un funzionamento ottimale.
Esempio
Ecco un esempio dal mio sistema (si tratta di un laptop con scheda grafica collegata tramite Oculink):
free -h
total used free shared buff/cache available
Mem: 37Gi 4.9Gi 29Gi 240Mi 3.5Gi 32Gi
Swap: 8.0Gi 0B 8.0Gi
cat /proc/meminfo | grep -E 'MemTotal|MemAvailable'
MemTotal: 39223064 kB
MemAvailable: 34073484 kB
La VRAM viene mostrata separatamente — non fa parte di MemTotal
nvidia-smi
Fri Nov 21 12:24:47 2025 \n+-----------------------------------------------------------------------------------------+\n| NVIDIA-SMI 580.82.09 Driver Version: 580.82.09 CUDA Version: 13.0 |\n+-----------------------------------------+------------------------+----------------------+\n| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |\n| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |\n| | | MIG M. |\n|=========================================+========================+======================|\n| 0 NVIDIA GeForce RTX 5060 Ti Off | 00000000:01:00.0 Off | N/A |\n| 0% 44C P8 8W / 180W | 13MiB / 16311MiB | 0% Default |\n| | | N/A |\n+-----------------------------------------+------------------------+----------------------+\n\n+-----------------------------------------------------------------------------------------+\n| Processes: |\n| GPU GI CI PID Type Process name GPU Memory |\n| ID ID Usage |\n|=========================================================================================|\n| 0 N/A N/A 5314 G /usr/bin/gnome-shell 2MiB |\n+-----------------------------------------------------------------------------------------+\n
Cosa fare
Verifica la politica di overcommit e swappiness
cat /proc/sys/vm/overcommit_memory
cat /proc/sys/vm/overcommit_ratio
cat /proc/sys/vm/swappiness
Valori consigliati:
2 # limite = (RAM * ratio/100) + Swap
80 # questo è il ratio
10 # non superiore a 20 — indica quanti MB di RAM rimanenti devono essere disponibili affinché il swap venga attivato; il swap può essere di 8 GiB se non si utilizza l'ibernazione del sistema operativo, in tal caso il swap sarà uguale alla dimensione della RAM
Comandi da eseguire:
sudo sysctl vm.overcommit_ratio=80
echo 'vm.overcommit_ratio=80' | sudo tee -a /etc/sysctl.d/99-ml-workstation.conf
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-ml-workstation.conf
IMPORTANTE: Per i modelli LLM (soprattutto llama.cpp), THP = always può causare pause (ritardi di un minuto dopo il login nel sistema operativo)
cat /sys/kernel/mm/transparent_hugepage/enabled
# Deve essere: [always] madvise never
Quando si lavora con il disco (ad esempio, quando i pesi del modello LLM vengono scritti su SSD), è importante impostare writeback:
cat /proc/sys/vm/dirty_ratio
cat /proc/sys/vm/dirty_background_ratio
cat /proc/sys/vm/dirty_expire_centisecs
Valori ottimali per NVMe:
10
5
1000 (cioè 10 secondi)
echo 'vm.dirty_ratio=10' | sudo tee -a /etc/sysctl.d/99-ml-workstation.conf
echo 'dirty_background_ratio=5' | sudo tee -a /etc/sysctl.d/99-ml-workstation.conf
echo 'vm.dirty_expire_centisecs=1000' | sudo tee -a /etc/sysctl.d/99-ml-workstation.conf
Tra i vari avviamenti di lmstudio, si consiglia di pulire il cache della memoria:
sync && echo 2 | sudo tee /proc/sys/vm/drop_caches