01-02-2010, 07:33 AM
Ulx: this problem appears with both ...
HL1 & HL2 Booster Library
|
01-02-2010, 07:33 AM
Ulx: this problem appears with both ...
01-02-2010, 07:43 AM
ok, thanks ... so both libs seem to be useless at the moment, don't they?
For me, yes
But it seems that it works for some people. Maybe they don't bother about the cpu usage, or they have more core than srcds processes It seems that "clock_nanosleep" is causing trouble. Replacing it by a select() (just like pingboost 2) solve the 100% cpu load problem.
01-02-2010, 08:47 PM
@d4f: do what ever you like, I won't call a lawyer or so... was just a stupid comment :-)
100% cpu load does not necessarily mean usleep returns without sleeping. in fact it means the linux kernel has seen the process not sleeping everytime it measured the cpu load. beware that linux does this only with the HZ set on kernel compilation. even if that is 1000 this is way too rare to really measure the cpu load. still, it proably indicates some kind of a problem if the server runs at 100% constantly, but it's hard to derive what kind of problem that is... usleep returning immediately is only one possible explanation. btw: my lib doesn't use clock_nanosleep but nanosleep...
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!) Do not ask technical questions via PM!
Crash Server when we change the map for de_inferno on css its very strange (test on 2 servers) :
Error: Material "maps/de_inferno/liquids/infernowater_568_2710_213" : proxy "AnimatedTexture" not found! Error: Material "maps/de_inferno/liquids/infernowater_568_2710_213" : proxy "TextureScroll" not found! Error: Material "maps/de_inferno/liquids/infernowater_568_2710_213" : proxy "WaterLOD" not found! Error: Material "maps/de_inferno/liquids/infernowater_-1610_688_24" : proxy "AnimatedTexture" not found! Error: Material "maps/de_inferno/liquids/infernowater_-1610_688_24" : proxy "TextureScroll" not found! Error: Material "maps/de_inferno/liquids/infernowater_-1610_688_24" : proxy "WaterLOD" not found! Error: Material "dev/dev_waterbeneath2" : proxy "AnimatedTexture" not found! Error: Material "dev/dev_waterbeneath2" : proxy "TextureScroll" not found! Error: Material "dev/dev_waterbeneath2" : proxy "WaterLOD" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_-1610_688_24_depth_26" : proxy "AnimatedTexture" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_-1610_688_24_depth_26" : proxy "TextureScroll" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_-1610_688_24_depth_26" : proxy "WaterLOD" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_568_2710_213_depth_22" : proxy "AnimatedTexture" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_568_2710_213_depth_22" : proxy "TextureScroll" not found! Error: Material "maps/de_inferno/maps/de_inferno/liquids/infernowater_568_2710_213_depth_22" : proxy "WaterLOD" not found! For de_nuke too : Error: Material "maps/de_nuke/de_nuke/nukwater_movingplane_640_-976_-734" : proxy "AnimatedTexture" not found! Error: Material "maps/de_nuke/de_nuke/nukwater_movingplane_640_-976_-734" : proxy "AnimatedTexture" not found! de_tuscan : Error: Material "maps/de_tuscan/nature/water_canals03_64_5688_-312" : proxy "AnimatedTexture" not found! Error: Material "maps/de_tuscan/nature/water_canals03_64_5688_-312" : proxy "TextureScroll" not found! Error: Material "maps/de_tuscan/nature/water_canals03_64_5688_-312" : proxy "WaterLOD" not found! Error: Material "nature/water_canals03_beneath" : proxy "AnimatedTexture" not found! Error: Material "nature/water_canals03_beneath" : proxy "TextureScroll" not found! Error: Material "nature/water_canals03_beneath" : proxy "WaterLOD" not found! When i unload the lib the server change the map perfectly And with the lib of BehaartesEtwas the map change perfectly too .
I found the problem with 100% cpu load.
It happens for very big or negative sleep values. Your code must verify that tv_nsec is not bigger than 1000 millions or negative. In my code a conversion error allowed negative values. On FPsstabilizer or HLbooster I think it's the same. I had a look a FPSstabilizer and i don't understand something. To check if you have to recalculate average you do: Code: if ( tick_count >= FPSS_RECALCULATE_EVERY ) { //tick2check and after this loop you do: Code: tick_count = tick_count + usec; But ... most of the time usec value is bigger than 1000 and FPSS_RECALCULATE_EVERY is 500. So, it would calculate an average on every frame: just like adaptative usleep from Monk. Did I miss something ?
01-03-2010, 05:37 AM
(12-31-2009, 07:31 AM)d4f Wrote: I've modified the hl-booster.c so that, in addition to the pre-existing functions it now provides: Very nice! This is what I have been trying to get the community to do for quite some time now. These changes, and others, can be found in libraries that i rent out to commercial interests. A next improvement you should look into is adding an rdtsc timekeeper. This should remove about ~90% of the system calls and will lower cpu usage by about 10% (or so I have seen with trial code on my servers). I am willing to help out with this (as I have already written the code), however my code is a little buggy (random crashing). Anyways, head into #sourcekernel and lets work together. Cheers! DiSTANT
http://www.fpsmeter.org/p,view;38946.html
It seems that the lib doesn't stabelize the fps at all. Increasing the fps works fine. But anyways, thanks for all your work!
01-03-2010, 08:53 AM
(This post was last modified: 01-03-2010, 08:54 AM by Terrorkarotte.)
These drops can have different reasons. Mapchanges for example are shown as drops too. Other prozesses interfering with the srcds server and so on...
01-03-2010, 10:05 AM
@Ronny & Rom1:
You both are correct ^^ I've somehow managed to mix up milliseconds (10e-3) with microseconds (10e-6), so it creates an average on 1 frame However I believe that my notion of "stabilizing" is different than yours Rommy By stabilizing I mean that the actual fps do not derive from the theoretical value over time, not that it corrects drops. I'm working (for the fun) on a version that will generate a clean graph, however the drop itself (which is usually only 1-2 fps long) cannot be corrected. Usually, as Terrorkarotte already pointed out, drops are due to a mapchange or new round - thus not affecting ingame behaviour. I've uploaded Version 1.0.1 which will repair the bugs discovered so far. It's default values are now a lot more agressive as the cpu-load difference is very low. @Distant: See you in IRC
Q: What would an omnipotent computer to?
A: Get rid of humanity!
01-03-2010, 08:39 PM
(01-03-2010, 10:05 AM)d4f Wrote: Usually, as Terrorkarotte already pointed out, drops are due to a mapchange or new round - thus not affecting ingame behaviour. If you want a clean graph without drops just set the timelimit longer than your measurement How much more usage are we talking about?
01-03-2010, 08:40 PM
@ronny: for actually stabelizing the fps all those libs follow the wrong approach... as everyone knows the actual height of the fps is not that important, so these libs are pretty useless :-) that's what several "warnings" say in different locations... this all is for fun and maybe for getting srcds knowing better, but not for making it better (not yet at least).
http://www.fpsmeter.org
http://wiki.fragaholics.de/index.php/EN:Linux_Optimization_Guide (Linux Kernel HOWTO!) Do not ask technical questions via PM!
Help :
gcc -fPIC -g -O2 -shared -o boost.so hl-booster.c -m32 -lrt hl-booster.c:51: error: expected ')' before 'usec' In function 'construct': warning: incompatible implicit declaration of built-in function 'floor' make: *** [boost.so] Erreur 1
01-04-2010, 07:42 PM
I have the 100% iussue still with the new version running srcds. Running it with FPS=500 the fps seams not to be affected by the lib anymore.
Any clue why? |
« Next Oldest | Next Newest »
|