At 02:00 AM 11/13/2008, John wrote:
>Gary:
>
> >>With -pingboost 2, HL1 actually uses select() for its delays.
> >
> > -pingboost 2 uses alarm(), -pingboost 1 uses select()
>
>I was careful to check this before I originally posted; what I said about
>was accurate, as least at the OS level. You can confirm this with "strace".
>I see output like this for -pingboost 2:

Indeed. I didn't bother to profile it. I was going on the original 
email and what's in the sdk..

>...
>gettimeofday({1226558338, 85065}, NULL) = 0
>gettimeofday({1226558338, 85091}, NULL) = 0
>gettimeofday({1226558338, 85122}, NULL) = 0
>gettimeofday({1226558338, 85147}, NULL) = 0
>gettimeofday({1226558338, 85170}, NULL) = 0
>select(1, NULL, NULL, NULL, {0, 1000})  = 0 (Timeout)
>select(1, [0], NULL, NULL, {0, 0})      = 0 (Timeout)
>gettimeofday({1226558338, 85971}, NULL) = 0
>gettimeofday({1226558338, 85996}, NULL) = 0
>recvfrom(5, 0xbfa3efe4, 4010, 0, 0xbfa3ff90, 0xbfa3efcc) = -1 EAGAIN
>(Resource temporarily unavailable)
>gettimeofday({1226558338, 86058}, NULL) = 0
>gettimeofday({1226558338, 86083}, NULL) = 0
>gettimeofday({1226558338, 86102}, NULL) = 0
>gettimeofday({1226558338, 86120}, NULL) = 0
>gettimeofday({1226558338, 86161}, NULL) = 0
>...
>
>In constrast, -pingboost 1 gives output like this:
>
>gettimeofday({1226558633, 60244}, NULL) = 0
>gettimeofday({1226558633, 60272}, NULL) = 0
>recvfrom(5, 0xbfb5ecb4, 4010, 0, 0xbfb5fc60, 0xbfb5ec9c) = -1 EAGAIN
>(Resource temporarily unavailable)
>gettimeofday({1226558633, 60340}, NULL) = 0
>gettimeofday({1226558633, 60360}, NULL) = 0
>gettimeofday({1226558633, 60388}, NULL) = 0
>gettimeofday({1226558633, 60415}, NULL) = 0
>gettimeofday({1226558633, 60442}, NULL) = 0
>setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 1000}}, NULL) = 0
>pause()                                 = ? ERESTARTNOHAND (To be restarted)
>--- SIGALRM (Alarm clock) @ 0 (0) ---
>rt_sigaction(SIGALRM, {0x804a910, [ALRM], SA_RESTART}, {0x804a910, [ALRM],
>SA_RESTART}, 8) = 0
>setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 1000}}, NULL) = 0
>sigreturn()                             = ? (mask now [])
>select(1, [0], NULL, NULL, {0, 0})      = 0 (Timeout)
>
>It sounds like Valve flipped the definitions of the functions since creating
>the versions you posted.
>
>With our kernel configuration, load-balancing, etc, both -pingboost 1
>and -pingboost 2 provide very stable framerates with extremely low jitter.
>On a Core2-based machine, we typically see a stable ~982fps with -pingboost
>1 and a stable 1000fps with -pingboost 2. Rarely, either method will dip
>slightly. Typically with -pingboost 2, the dips are into the upper 990s.
>
>-John

With no pingboosting on a spare, hacked up Linux machine (gentoo), I 
get 1000/999fps all the time with HPET and TSC as a clocksource.. Of 
course, I put a busy wait patch in
nanosleep to allow for more accurate nanosleep delays (old behavior), 
plus a module I use to convert the very broken, jittery gettimeofday 
and usleep with clock_gettime(CLOCK_MONO..) and clock_nanosleep().
I've also disabled SMI's on this machine to prevent pipeline stalls 
due to SMI interrupts firing off every few uS or so.. but that's 
pretty much an overkill :P

It looks like no pingboosting uses pingboost 2 (select boost..)

CPU   In    Out   Uptime  Users   FPS    Players
  0.00  0.00  0.00       5     0  999.00       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
  0.00  0.00  0.00       5     0 1000.00       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
  0.00  0.00  0.00       5     0 1000.00       0
stats
CPU   In    Out   Uptime  Users   FPS    Players
  0.00  0.00  0.00       5     0  999.00       0







_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux

Reply via email to