SRCDS Steam group


HLDS fps probs
#1
Hi, just finished compiling a custom kernel for 1000fps (Linux Kernel HOWTO! fragaholics), I noticed I get alot fps drops when the server is empty or when there are people in it.
Here's what it looks like:

[Image: graph.php?id=616]

configuration:
Dell R300
1x Xeon 2.3 Ghz
4gig Ram
2x HDD Raid
Debian Lenny 64 bits

Our source servers are running stable 990 fps (Also used the Linux HOWTO!)
So does someone have an idea how to get stable fps for hlds ?
Reply
#2
Have you tried 32bit instead?

EDIT: Dont run HLDS/source on the same machine, and which kernel do you run atm?
Reply
#3
Kernel:
Linux s20 2.6.26.8-rt16-ch-core2-rt-amd64-4.1 #1 SMP PREEMPT RT Mon May 4 11:42:12 CEST 2009 x86_64 GNU/Linux

Edit: "EDIT: Dont run HLDS/source on the same machine, and what kernel do you run atm?"
Tried that too, no differens
Reply
#4
Unity Wrote:Kernel:
Linux s20 2.6.26.8-rt16-ch-core2-rt-amd64-4.1 #1 SMP PREEMPT RT Mon May 4 11:42:12 CEST 2009 x86_64 GNU/Linux

Edit: "EDIT: Dont run HLDS/source on the same machine, and what kernel do you run atm?"
Tried that too, no differens

Join #sourcekernel, PM DiSTANT, and I will help you out.
[Image: banner.php?t=2&bg=002244&amp...p;id=82023]

[Image: banner.php?t=2&bg=002244&amp...p;id=82024]
Reply
#5
do you use pingboost? I recommend -pingboost 2.

PS: really, don't mix hlds and srcds on the same root...
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!)
Do not ask technical questions via PM!
Reply
#6
Unity Wrote:Kernel:
Linux s20 2.6.26.8-rt16-ch-core2-rt-amd64-4.1 #1 SMP PREEMPT RT Mon May 4 11:42:12 CEST 2009 x86_64 GNU/Linux

Edit: "EDIT: Dont run HLDS/source on the same machine, and what kernel do you run atm?"
Tried that too, no differens

BehaartesEtwas Wrote:do you use pingboost? I recommend -pingboost 2.

PS: really, don't mix hlds and srcds on the same root...

I used pingboost 2 with sys_ticrate 360, 500, 800, 1000, 2000 and 2500 the same with pingboost 3

During the test only the hlds server was running
Reply
#7
did you try everything in the trouble shooting *and* the playing around sections of the howto?
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!)
Do not ask technical questions via PM!
Reply
#8
BehaartesEtwas Wrote:did you try everything in the trouble shooting *and* the playing around sections of the howto?

* Try set the Timer frequency to 100 HZ and enable Tickless System (Dynamic Ticks).
- Starts with 100 fps, if more people are joining the server the fps rise up, but it isnt stable
* Try setting other sirq kernel threads to realtime priority (e.g. sirq-net-tx and sirq-net-rx).
- how I do that?
* Try different clock sources:
- Didnt try that one yet

* For hlds: check if you have sys_ticrate > 1000 (e.g. 2500) in your config.
- See previous postSmile
* Don't force your servers to run on specific cpu cores.
- The servers arent forced on cpu cores
* Check, if your servers and sirq-hrtimer processes really have the right scheduling:
- chrt -p hlds_686
pid 13451's current scheduling policy: SCHED_OTHER
pid 13451's current scheduling priority: 0

- top cmd

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3053 pub-cs-4 -99 0 187m 157m 7556 R 23 4.0 157:05.15 hlds_i686
4004 pub-cs-3 -99 0 143m 112m 7444 S 16 2.9 124:31.99 hlds_i686
Reply
#9
Unity Wrote:* Try set the Timer frequency to 100 HZ and enable Tickless System (Dynamic Ticks).
- Starts with 100 fps, if more people are joining the server the fps rise up, but it isnt stable
means that the hrtimers are not working correctly...


Quote:* Check, if your servers and sirq-hrtimer processes really have the right scheduling:
- chrt -p hlds_686
pid 13451's current scheduling policy: SCHED_OTHER
pid 13451's current scheduling priority: 0
that's incorrect. see the script in the howto.

forget the other things until you solved it. sorry for being so brief, I dont have much time currently.
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!)
Do not ask technical questions via PM!
Reply
#10
BehaartesEtwas Wrote:
Unity Wrote:* Try set the Timer frequency to 100 HZ and enable Tickless System (Dynamic Ticks).
- Starts with 100 fps, if more people are joining the server the fps rise up, but it isnt stable
means that the hrtimers are not working correctly...


Quote:* Check, if your servers and sirq-hrtimer processes really have the right scheduling:
- chrt -p hlds_686
pid 13451's current scheduling policy: SCHED_OTHER
pid 13451's current scheduling priority: 0
that's incorrect. see the script in the howto.

forget the other things until you solved it. sorry for being so brief, I dont have much time currently.

ok sirq timers are set
s20:/home# chrt -p 4004
pid 4004's current scheduling policy: SCHED_FIFO
pid 4004's current scheduling priority: 98

Stil no differens
Reply
#11
check the hrtimers in your kernel config ("High Resolution Timer Support" needs to be enabled). if it already is, try different clock sources (see playing around section in the howto). if this still does not help - I don't know, maybe your mainboard is screwed...
I am pretty sure that the high resolution timers are the problem. the fps should not drop if you have HZ=100 in your kernel.
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!)
Do not ask technical questions via PM!
Reply
#12
BehaartesEtwas Wrote:check the hrtimers in your kernel config ("High Resolution Timer Support" needs to be enabled). if it already is, try different clock sources (see playing around section in the howto). if this still does not help - I don't know, maybe your mainboard is screwed...
I am pretty sure that the high resolution timers are the problem. the fps should not drop if you have HZ=100 in your kernel.

Hi,

At the moment im running a 32 bits rt kernel with 300HZ and still no 500 or 1000 fps stable. Running with pingboost 2 and sys_ticrate 10000. I uploaded the kernel config (see attachment) 300hz = 170 fps stable ... with peaks 1000 :/

Top commando shows the following:


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2552 root 39 19 1608 272 220 R 97 0.0 99:18.43 idler
3785 unity -99 0 85276 68m 6392 S 6 3.4 2:21.41 hlds_amd

8 root -51 -5 0 0 0 S 0 0.0 0:07.05 sirq-net-rx/0
4695 unity 20 0 2392 1132 884 R 0 0.1 0:00.42 top
1 root 20 0 2100 684 588 S 0 0.0 0:01.11 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root RT -5 0 0 0 S 0 0.0 0:00.00 posixcputmr/0
5 root -51 -5 0 0 0 S 0 0.0 0:00.00 sirq-high/0
6 root -51 -5 0 0 0 S 0 0.0 0:05.93 sirq-timer/0
7 root -51 -5 0 0 0 S 0 0.0 0:00.00 sirq-net-tx/0
9 root -51 -5 0 0 0 S 0 0.0 0:00.00 sirq-block/0
10 root -51 -5 0 0 0 S 0 0.0 0:00.00 sirq-tasklet/0
11 root -51 -5 0 0 0 S 0 0.0 0:00.15 sirq-sched/0
12 root RT -5 0 0 0 S 0 0.0 0:00.00 sirq-hrtimer/0


Attached Files
.txt   config-2.6.26.8-rt16-rt-i686-4.2.txt (Size: 90.25 KB / Downloads: 9)
Reply
#13
maybe this helps you:
http://www.howto-cs16-root.de/index.htm

sorry it's in German, but interesting are only the 4th and the 5th page which should be both more or less understandable without knowing German (the kernel settings are still English :-)). Let me know if this helps you, or if you have problems understanding something.

EDIT:
I think the critical changes are the following:
In kernel config use HZ = 1000
use the following resched.sh:

Code:
#!/bin/sh

PIDS=`ps ax | grep sirq-timer | grep -v grep | sed -e "s/^ *//" -e "s/ .*$//"`
for p in $PIDS; do
sudo chrt -f -p 51 $p
done

PIDS=`pidof hlds_i686`
for p in $PIDS; do
sudo chrt -f -p 99 $p
done


I did not test this but it is worth a try. do you use 32 or 64 bit at the moment? maybe 32 bit is better in this case...
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!)
Do not ask technical questions via PM!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)