Game Server Performance Tuning on Linux
Gaming

Game Server Performance Tuning on Linux

  • Author :Liam K.
  • Date :March 08, 2026
  • Time :16 minutes

Step 1: Baseline CPU, RAM, and Disk

bash
sudo apt update
sudo apt install -y htop iotop sysstat
htop
iostat -xz 1 5

Step 2: Verify CPU Frequency Governor

bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | sort | uniq
sudo apt install -y linux-tools-common linux-tools-generic
sudo cpupower frequency-set -g performance

Step 3: Configure Swappiness and Dirty Ratios

bash
sudo tee /etc/sysctl.d/99-game-tuning.conf >/dev/null <<'EOF'
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
EOF
sudo sysctl --system

Step 4: Network Stack Tuning

bash
sudo tee -a /etc/sysctl.d/99-game-tuning.conf >/dev/null <<'EOF'
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 250000
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_fin_timeout = 15
EOF
[...]
Command truncated. Copy to view full command.

Step 5: Prioritize Process CPU Cores

Pin a game server process to dedicated cores for better scheduling consistency.

bash
taskset -c 2-5 ./start-server.sh

Step 6: Use Nice and Ionice

bash
nice -n -5 ionice -c2 -n0 ./start-server.sh

Step 7: Firewall and DDoS Surface Reduction

bash
sudo ufw default deny incoming
sudo ufw allow 25565/tcp
sudo ufw allow 25565/udp
sudo ufw status

Step 8: Continuous Monitoring

bash
sar -n DEV 1 20
sar -u 1 20
journalctl -u your-game-service -f

Step 9: Example Java Flags (Minecraft)

bash
java -Xms4G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=100 -XX:+AlwaysPreTouch -jar server.jar nogui

"Stable frame and tick pacing is usually won through consistency, not by chasing peak benchmark numbers."

Technical Author

Technical Author - Liam K.
Liam K.

System administrator and technical writer specializing in server infrastructure, security and deployment. Creating comprehensive guides to help you master server administration.