Ottimizzazione VPS e game server
Inviato: mercoledì 1 ottobre 2025, 15:25
1. CPU pinning (vincolare un processo a un core specifico)
Immagina che la tua VPS abbia 4 core virtuali. Normalmente Linux decide da solo su quale core far girare un processo. Questo è comodo, ma può portare a micro-latenze: un processo “salta” da un core all’altro e perde tempo nella cache CPU.
Se invece dici al sistema “questo server di CoD gira sempre sul core 2”, ottieni prestazioni più stabili (meno lag e spike).
Scopri su quali core puoi lavorare:
Avvia un processo vincolato a un core (es. core 2):
LinuxGSM ha anche opzioni per passargli questi parametri. Non sempre serve, ma se hai più game server sulla stessa VPS, evita che si rubino cicli di CPU.
2. Tickrate e parametri di sistema (sysctl)
Il “tickrate” è la frequenza con cui il server aggiorna e invia gli stati di gioco ai client (movimenti, spari, hit detection). Nei giochi come CoD o Quake, un tickrate più alto = maggiore fluidità e precisione.
Linux di default non è ottimizzato per tickrate altissimi, perché pensa più a risparmiare risorse che a dare latenze millisecondo-precise.
Puoi cambiare alcune impostazioni del kernel con sysctl per renderlo più “responsivo”:
Aumentare la frequenza degli interrupt del timer (hz)
Modificare lo scheduler (che decide la priorità dei processi)
Disattivare o ridurre la latenza da risparmio energetico
Esempio:
# Riduci la latenza del networking
# Dai più priorità ai processi interattivi (tipo i game server)
Queste modifiche vanno capite e testate: non esiste un “settaggio magico universale”. Ma i server FPS vecchi tendono a beneficiarne.
3. Monitoring (Prometheus + Grafana o simili)
Immagina un cruscotto dell’auto: vedi giri motore, temperatura, velocità. Monitoring fa lo stesso per i tuoi server.
Prometheus raccoglie metriche (CPU, RAM, traffico di rete, query al DB).
Grafana le visualizza in dashboard belle e chiare.
Perché è utile?
Se un server inizia a laggare, non devi indovinare se è il processore, la RAM o il database intasato: lo vedi in tempo reale su un grafico. Puoi anche impostare allarmi (tipo “se l’uso CPU sta al 90% per più di 5 minuti, mandami un messaggio su Telegram”).
Esempio di cose che scopriresti:
Il tuo CoD4 satura un core al 100% ogni volta che c’è un’ondata di giocatori.
MariaDB ha un picco di query durante i cambi mappa.
Un VPS è più sovraccarico degli altri e conviene spostare un server altrove.
In breve:
CPU pinning = più stabilità, meno lag da “salti” tra core.
Sysctl/tickrate tuning = spremere il kernel per dare priorità ai tuoi game server invece che al risparmio energetico.
Monitoring = smettere di andare a sensazione e avere dati chiari su cosa sta succedendo.
Vuoi che ti mostri dei parametri sysctl specifici già usati da chi hosta server di CoD/Quake per migliorare tickrate e reattività?
Ecco i dettagli:
1. Riduci la latenza del networking
sysctl -w net.ipv4.tcp_low_latency=1
Dice allo stack TCP di preferire la latenza bassa al posto della massima banda.
Nei game server è quasi sempre meglio: meno ritardo nei pacchetti.
2. Priorità ai processi interattivi
sysctl -w kernel.sched_child_runs_first=0
È una piccola modifica allo scheduler di Linux: i processi figli non partono subito con priorità rispetto al padre.
Risultato: i processi interattivi (come i tuoi game server) hanno un comportamento più prevedibile.
Non è una “turbo modalità”, ma riduce certi ritardi casuali.
Come renderli permanenti
Se ti piacciono i risultati, aggiungi queste righe al file /etc/sysctl.conf oppure crea un file dedicato in /etc/sysctl.d/99-gameserver.conf:
Poi ricarichi:
Nota importante
Non c’è rischio di distruggere la VPS con questi due settaggi: al massimo non noti differenze.
Altri parametri (tipo quelli su timer HZ, o cose sullo scheduling CFS più avanzate) possono invece avere effetti collaterali, quindi questi due che hai citato sono un buon punto di partenza sicuro.
Immagina che la tua VPS abbia 4 core virtuali. Normalmente Linux decide da solo su quale core far girare un processo. Questo è comodo, ma può portare a micro-latenze: un processo “salta” da un core all’altro e perde tempo nella cache CPU.
Se invece dici al sistema “questo server di CoD gira sempre sul core 2”, ottieni prestazioni più stabili (meno lag e spike).
Scopri su quali core puoi lavorare:
Codice: Seleziona tutto
lscpuCodice: Seleziona tutto
taskset -c 2 ./cod4server startLinuxGSM ha anche opzioni per passargli questi parametri. Non sempre serve, ma se hai più game server sulla stessa VPS, evita che si rubino cicli di CPU.
2. Tickrate e parametri di sistema (sysctl)
Il “tickrate” è la frequenza con cui il server aggiorna e invia gli stati di gioco ai client (movimenti, spari, hit detection). Nei giochi come CoD o Quake, un tickrate più alto = maggiore fluidità e precisione.
Linux di default non è ottimizzato per tickrate altissimi, perché pensa più a risparmiare risorse che a dare latenze millisecondo-precise.
Puoi cambiare alcune impostazioni del kernel con sysctl per renderlo più “responsivo”:
Aumentare la frequenza degli interrupt del timer (hz)
Modificare lo scheduler (che decide la priorità dei processi)
Disattivare o ridurre la latenza da risparmio energetico
Esempio:
# Riduci la latenza del networking
Codice: Seleziona tutto
sudo sysctl -w net.ipv4.tcp_low_latency=1 Codice: Seleziona tutto
sudo sysctl -w kernel.sched_child_runs_first=03. Monitoring (Prometheus + Grafana o simili)
Immagina un cruscotto dell’auto: vedi giri motore, temperatura, velocità. Monitoring fa lo stesso per i tuoi server.
Prometheus raccoglie metriche (CPU, RAM, traffico di rete, query al DB).
Grafana le visualizza in dashboard belle e chiare.
Perché è utile?
Se un server inizia a laggare, non devi indovinare se è il processore, la RAM o il database intasato: lo vedi in tempo reale su un grafico. Puoi anche impostare allarmi (tipo “se l’uso CPU sta al 90% per più di 5 minuti, mandami un messaggio su Telegram”).
Esempio di cose che scopriresti:
Il tuo CoD4 satura un core al 100% ogni volta che c’è un’ondata di giocatori.
MariaDB ha un picco di query durante i cambi mappa.
Un VPS è più sovraccarico degli altri e conviene spostare un server altrove.
In breve:
CPU pinning = più stabilità, meno lag da “salti” tra core.
Sysctl/tickrate tuning = spremere il kernel per dare priorità ai tuoi game server invece che al risparmio energetico.
Monitoring = smettere di andare a sensazione e avere dati chiari su cosa sta succedendo.
Vuoi che ti mostri dei parametri sysctl specifici già usati da chi hosta server di CoD/Quake per migliorare tickrate e reattività?
Ecco i dettagli:
1. Riduci la latenza del networking
sysctl -w net.ipv4.tcp_low_latency=1
Dice allo stack TCP di preferire la latenza bassa al posto della massima banda.
Nei game server è quasi sempre meglio: meno ritardo nei pacchetti.
2. Priorità ai processi interattivi
sysctl -w kernel.sched_child_runs_first=0
È una piccola modifica allo scheduler di Linux: i processi figli non partono subito con priorità rispetto al padre.
Risultato: i processi interattivi (come i tuoi game server) hanno un comportamento più prevedibile.
Non è una “turbo modalità”, ma riduce certi ritardi casuali.
Come renderli permanenti
Se ti piacciono i risultati, aggiungi queste righe al file /etc/sysctl.conf oppure crea un file dedicato in /etc/sysctl.d/99-gameserver.conf:
Codice: Seleziona tutto
net.ipv4.tcp_low_latency=1
kernel.sched_child_runs_first=0Poi ricarichi:
Codice: Seleziona tutto
sysctl -pNon c’è rischio di distruggere la VPS con questi due settaggi: al massimo non noti differenze.
Altri parametri (tipo quelli su timer HZ, o cose sullo scheduling CFS più avanzate) possono invece avere effetti collaterali, quindi questi due che hai citato sono un buon punto di partenza sicuro.