sys_ticrate and server FPS on a CS 1.6 server
sys_ticrate sets the most frames a second the server runs, 100 by default. How to set it, how to read the real FPS with stats, and what keeps it below the target.
- Last checked
- Steps
- 5
- Reading time
- 3 min
- On Hostsrc
- Includes the steps for a Hostsrc server
sys_ticrate sets the most frames a second a CS 1.6 server runs. In each frame the server reads players' commands, runs the game and sends updates. The engine default is 100. In CS 1.6, "tickrate" and "server FPS" mean the same thing.
The value is a ceiling, not a promise. The server runs up to that many frames only while its CPU, its -pingboost mode and its plugins keep up. Check the real figure with stats in the server console.
On Hostsrc
You choose a target from 1000 to 1500 in the control panel, and it sets the server's sys_ticrate. The FPS you actually get depends on the plan, map, plugins and active player count.
Before you start
- Access to the server console.
- Players on the server when you measure. An empty server runs much lighter frames than a full one.
Steps
Step 2: Set the target
On your own server, put
sys_ticrateinserver.cfg, or on the start line as+sys_ticrate 1000. A-sys_ticrate 1000start option takes priority: the server then uses that number and ignores the setting.On Hostsrc, set the FPS target in the control panel instead of your own line, so the two never disagree.
cstrike/server.cfg sys_ticrate 1000Step 3: Check the FPS you really get
Type
statsin the server console. The FPS column is the server's frame rate at that moment. Run it several times over a few minutes, at a busy time, because it changes from frame to frame.On xHLDS,
xhlds_statsgives the frame rate, frame times and late frames for a whole window, which is easier to read than singlestatslines.CPU In Out Uptime Users FPS PlayersStep 4: Find what holds it back
When the FPS stays well below the target, the server can't finish its frames in time, or wakes up too late for the next one. Look at these, in order:
- The
-pingboostmode, which decides how the server waits between frames. The -pingboost guide covers it. - Plugins that do work in every frame, and maps with many entities.
- The CPU time the server gets. On a shared node, that depends on how busy the other servers are and on the server's priority.
On xHLDS,
xhlds_stats profileshows where the frame time goes, part by part and game function by game function.- The
Step 5: Keep the players' update rates in mind
Players don't get one update per server frame. Each gets as many world updates a second as their
cl_updaterateasks for, between the server'ssv_minupdaterateandsv_maxupdaterate, and within theirrate. A highersys_ticrateshortens the wait before the server handles a player's command, but it doesn't send more updates than those settings allow.
Settings that work together
| Setting | What it does | Default |
|---|---|---|
sys_ticrate | The most frames a second the server runs | 100 |
-sys_ticrate | A start option that overrides sys_ticrate | Not set |
-pingboost | How the server waits between frames, on Linux | Not set |
sv_maxupdaterate | The most world updates a second a player gets | 30 |
sv_minupdaterate | The fewest world updates a second a player gets | 10 |
Setting:
sys_ticrate- What it does
- The most frames a second the server runs
- Default
100
Setting:
-sys_ticrate- What it does
- A start option that overrides
sys_ticrate - Default
- Not set
Setting:
-pingboost- What it does
- How the server waits between frames, on Linux
- Default
- Not set
Setting:
sv_maxupdaterate- What it does
- The most world updates a second a player gets
- Default
30
Setting:
sv_minupdaterate- What it does
- The fewest world updates a second a player gets
- Default
10
Is a higher FPS always better?
A higher frame rate means shorter frames, so the server handles each command sooner after it arrives. It also costs more CPU. When the CPU can't keep up, the real FPS falls below the target and changes from frame to frame. A steady rate you can hold is worth more than a high target you can't, so measure before and after each change.
Troubleshooting
stats shows less FPS than my sys_ticrate
The server can't keep up with the target, or doesn't wake up in time. Check the -pingboost mode, then the plugins and the map, at the same player count. If a -sys_ticrate start option is set, it overrides the value you changed.
What sys_ticrate should I use?
On Hostsrc, a target from 1000 to 1500, the range the control panel offers. On your own server, start at 1000 and raise it only while stats keeps up with players on.
Links
- Glossary
server frames, rate, update rate, choke and the other terms in plain words
- xHLDS commands
`xhlds_stats` and its reports on frame times and players
- Counter-Strike 1.6 server hosting
the FPS target and CPU priority on each plan
Counter-Strike 1.6 server hosting
From €5.99/month for 14 players
Frankfurt or Bucharest. Final price, no VAT added.
Build my serverStart a paid test from €1.99Discord
Ask other admins and our team.
Join our Discord (external site, opens in a new tab)Related guides
What -pingboost does on a CS 1.6 server
-pingboost is a Linux start option that changes how the server waits between frames. Values 1 to 3 work in HLDS and ReHLDS, and xHLDS adds 5. How to compare them.
5 steps3 min readFor experienced adminsOn Hostsrc
ReHLDS vs HLDS: what changes on a CS 1.6 server
ReHLDS is a rebuild of Valve's HLDS engine, with defects fixed and an extended plugin API, under the MIT licence. Configs and AMX Mod X stay the same. Where xHLDS fits.
6 steps3 min readOn Hostsrc
How much does it cost to host a CS 1.6 server?
On Hostsrc a CS 1.6 server costs €5.99 to €19.99/month, by plan and by 14, 24 or 32 slots. Paid tests start at €1.99. What changes the price, with every add-on.
6 steps4 min readNew to running a serverOn Hostsrc
CS 1.6 server commands and how to use RCON
Set rcon_password in server.cfg and send commands with rcon from your game console. Lists the server and AMX Mod X commands admins use, with their syntax.
5 steps5 min readOn Hostsrc