Garry's Mod Updated April 27, 2026

Optimizing Your GMod Server Performance

How to diagnose and improve GMod server performance through tickrate selection, addon management, ConVar tuning, and CPU considerations.

Garry's ModPerformanceOptimizationConfiguration

GMod is Single-Threaded

The most important fact about GMod server performance: the game server runs on a single CPU core. Having more CPU cores does not help server performance. What matters is single-core clock speed — higher GHz means a more responsive server.

When evaluating server hardware for GMod, prioritize CPU clock speed over core count.

Monitoring Server Performance

The most useful in-game diagnostic is net_graph 4. Connect to the server as a client and run this in the console. The server frame time bar shows how much time each tick takes to process. If the bar turns red, the server is overloaded and ticks are taking longer than their budget.

From the server console:

stats

This outputs CPU usage, network bandwidth, uptime, and current map. Run it periodically to baseline your server's load.

Tickrate Selection

Tickrate is the number of game simulation steps per second. It is set at launch and cannot change at runtime:

-tickrate 33
Tickrate Best for CPU cost
33 DarkRP, high player count RP Low
66 TTT, deathrun, sandbox Higher

Higher tickrate means the server processes more frames per second, increasing CPU usage proportionally. DarkRP with 40 players at tickrate 66 will be noticeably harder on CPU than at tickrate 33. TTT benefits from 66-tick because precise shooting mechanics matter.

Do not use tickrate values other than 33 or 66. Non-standard values can cause client-side prediction issues.

fps_max

fps_max 550

fps_max caps the server's rendering loop. At tickrate 33, the server runs 33 logic ticks per second but may process more frames for network packaging. Setting fps_max 550 is a well-established sweet spot. Setting it too low (e.g., fps_max 33) causes network stuttering. Setting it unlimited wastes CPU on a tight loop.

Addon Count

Addon count is the single biggest controllable performance variable. Every addon's Lua code runs on every tick that triggers its hooks. More addons = more processing per tick.

Guidelines:

  • DarkRP servers with 30+ players: keep under 50 addons
  • DarkRP servers with 20 or fewer players: under 75 addons
  • Sandbox servers: under 100 addons

Audit your addon list periodically. Remove addons that are rarely used. Duplicate functionality (two different weather systems, two different car packs) is a common source of bloat.

Enabling Parallel Network Processing

sv_parallel_packentities 1
sv_parallel_sendsnapshot 1

These ConVars allow some network packaging work to run on threads separate from the main tick thread. The benefit is modest but free — enable them in server.cfg.

Sandbox Entity Limits

Prop spam is a major performance and crash risk on sandbox servers:

sbox_maxprops 100
sbox_maxragdolls 5
sbox_maxnpcs 10
sbox_maxballoons 10
sbox_maxeffects 40

Each entity in the world consumes tick processing time. Unconstrained prop spawning can crash a server in minutes. Set these limits based on your player count — lower is safer.

Memory Management

GMod's Lua VM allocates memory for objects that may not be promptly garbage-collected. On servers running for many days, Lua memory usage grows. Symptoms include "Lua Panic: Not enough memory" in the console and increasing lag over time.

Mitigations:

  • Schedule a regular restart (e.g., every 12–24 hours during low-traffic time) to reset the Lua VM
  • Audit addons for memory leaks: tables that grow indefinitely, timers that create new objects repeatedly, or hooks that are added multiple times
  • Reduce global table storage in addons where possible

DarkRP-Specific Tuning

DarkRP is the most performance-intensive common gamemode:

  • Use tickrate 33
  • Keep addons under 50
  • Prefer a dedicated map (not a general sandbox map)
  • Disable unused DarkRP modules in darkrp_config/config.lua
  • Restart the server every 12–24 hours to clear accumulated Lua state

Network Rate Settings

Match sv_maxupdaterate to your tickrate:

sv_maxupdaterate 33
sv_minrate 20000
sv_maxrate 100000

sv_maxupdaterate 66
sv_minrate 20000
sv_maxrate 100000

Sending more updates than the tick rate is meaningless and wastes bandwidth.