RegisterRegister    Log inLog in    SearchSearch   

Post new topic   Reply to topic
 
View previous topic :: View next topic  
Author Message
Adambomb



PostPosted: Sat Apr 29, 2006 5:26 pm    Post subject: setting game server priority Reply with quote

Is there a way to set different priorities for each game server?
Back to top
View user's profile Send private message
adbot



PostPosted: Thu Mar 31, 2011 3:57 am 

Nathan
Mammoth


PostPosted: Sun Apr 30, 2006 9:44 am    Post subject: Reply with quote

You mean the process priority (high, normal, low, etc?) - No.
Back to top
View user's profile Send private message
Adambomb



PostPosted: Wed May 03, 2006 1:18 am    Post subject: Reply with quote

Yes, and can we bind them to different processors? Reason asking is because some games are more CPU sensitive than others. And because we run different games on the same box can we set them to different priorities and bind them to different processors.
Back to top
View user's profile Send private message
Andrew
Mammoth


PostPosted: Wed May 03, 2006 8:55 pm    Post subject: Reply with quote

We have made affinity (eg, this server should only use CPU X) working in our development environment.

Will look at releasing the feature soon, no ETA at the moment sorry.

Also, would it be preferable to say 'BF2 servers, use CPU #1', or 'Server #1, use CPU #1'.

Making it a per-server option will become a bit clunky I believe.

What we have implemented though as well is a 'rotate' option.

So basically, when a (for example) Half-Life server is started, it is assigned Processor #1. When another half-life server starts, its assigned processor 2... 3 and then 4. Once it reaches the end (say #4), it starts back at #1.

So I think a more intelligent option would be to have a (per game?) setting which indicates 'Assign servers of this game type to one per CPU'.

Then when the server starts, it is assigned the next incremental CPU to be used from the last server that was told to bind to a specific CPU.

So say you had these servers:
* 2 Half-Life Servers - You want these on individual CPUs
* 1 BF2 Server - You want this on an individual CPU
* 1 Tribes server - dont need to assign it to a particular CPU

GameCreate is told to start all 4 of the above servers; and launches one of the Half-Life servers. Assume this host computer has 2 processors.

-> Launch Half Life #1 - Assigned CPU 1
-> Launch Tribes Server - Assigned to no particular CPU (no affinity, can span over processors if needed)
-> Launch Half Life #2 - Assigned CPU 2
-> Launch Battlefield 2 - Assigned CPU 1

I dont see in particular 'Have this server start on CPU #1' being that effective, as you may incidently end up with many servers on CPU #1.

Would be better if GameCreate just rotated them around.

Thoughts?
Back to top
View user's profile Send private message
Kybber



PostPosted: Wed May 03, 2006 11:38 pm    Post subject: Reply with quote

I have already written half a dissertation for this post, while
at the same time thinking about different solutions. After
considering a few options and at the same time writing them
down, I came to the final conclusion that I like your
suggestion with one possible modification: It should be
possible to tell a specific server that "Even though my game-
type says I should bind to a CPU, I want to float" and the
other way around.

There is, however, one potentially major problem with the
solution: Assume that the round-robin scheme assigns a BF
2-server that takes about 50% CPU to CPU 1, then a CS1.6
server which takes about 10% CPU to CPU2. What happens
when you try to assign a third server using the round-robin
scheme is that CPU1 gets bogged down while CPU2 is almost
free. Perhaps using some sort of token-algorithm to prevent
this would be a solution?

Below is my originally intended response to this thread. I'm
posting it in case there are any good thoughts in there Wink
Quote:
Hmm... interesting problem. Tricky. I guess there are two
thinks that setting affinity should solve:

1. Some servers should have a CPU all to themselves. A
typical example is a 64-player BF2 server which needs all
the juice it can get.
2. Some servers should stay on one CPU and not bounce
around on other CPUs, but can allow other servers to spend
time on "their" CPU.

#1 requires all servers on the host to be bound to a specific
CPU. If not, other "floating" servers will at some time attach
to a "fixed" server's CPU. For hosts where the number of
servers is not greater than the total number of CPUs, this
is a no-brainer: Just assign CPUs to each server as they
start. It shouldn't matter which CPU is assigned - just
assign in random or sequence. If someone tries to create e.
g. a third server on a dual-CPU machine and assigning it to
a CPU, there should be an error-message of some sort,
saying that every CPU on the host is already assigned.

Based on the fact that floating servers cannot be allowed on
the same host as a CPU-fixed server that "owns" the CPU,
I think it should be a per-host setting: "Assign all servers
on this host to a specific CPU"

But what about the servers that can allow other processes
to run on the same CPU? We can't use a per-host setting
for those. I think in that case it should be a per-server
setting, and the user is required to make sure that there
are no conflicts. The user should be able to tag a server to
bind to a specific CPU (again, it's not necessary to say which
one), but has to make sure that the number of CPUs available
is enough for the number of fixed servers. Though there
could be a warning if the number of fixed servers is greater
than the number of CPUs, like above. Floating servers
don't matter in this setting.

Writing this makes me think, and I just thought of another
alternative which pretty much goes against everything I've
written so far: When selecting the host on which to run a
server, the user could simply get a selection of not only the
host, but also the CPU. This would essentially mean that
the user assigns servers to "subhosts" where one CPU
makes up one subhost (ports of course disregarded). The
user is already in the habit of having to assign servers to
hosts based on their free capacity, so assigning servers to
CPUs should be no different in this respect.
Back to top
View user's profile Send private message
Adambomb



PostPosted: Tue May 09, 2006 4:14 pm    Post subject: Reply with quote

why not make gamecreate read how many CPU's are available then letting the client either bind to them, or allow the game to float. Also a priority level alowing them to bind all types of games to a processor with different games having different priority. Example HL high priority because it is really sensitive and games like BF2 to a lower priority to promote a friendly playable environment. This wont work on linux, but is ideal for windows clients. I think we should have options, dont make it manditory. I share a box and we can only use 3 cpu's of the 4 on the box, so we should be able to select cpu's #1,2, and 3 while they get to use 4.
Back to top
View user's profile Send private message
richd111
Guest


PostPosted: Fri Jun 02, 2006 6:29 am    Post subject: Reply with quote

I want to bump this because after evaluating gamecreate, I think this is the only piece left missing for me.

I think it needs to be on a per server basis. I run a very large 32p UT2004 server which uses 100% of one CPU. I can have no other server share it, even those of the same type. And I want that server to have the highest practical priority. So I have three servers running, all of the same type. I have the 32p server bound to CPU 0, and the others to CPU 1.

I know with Firedaemon (which I use now) you can bind CPUs to each service. The default is to float, and there are checkboxes for each CPU should you chose to use them.

Thanks for a good product. One step from great (IMHO)

Rich
Back to top
Andrew
Mammoth


PostPosted: Thu Jun 08, 2006 12:01 pm    Post subject: Reply with quote

We are still considering how to implement this.

While it would be useful to specify which server to bind to, it becomes an issue in the GUI (and somewhat clumbsy) if you have to define such settings per server.

Perhaps as an alternative, there is a global 'Game' configuration:

* No affinity (default). 'Rotate affinity'
* 'Weight CPU' - Use the same value as GameCreate temporary servers use when deciding which host to place servers on, and 'weigh up' CPUs with reserved points, which get depleated when load specific servers are placed.

Then possibly also, an option to force to bind to a specific CPU #.
Back to top
View user's profile Send private message
Adambomb



PostPosted: Fri Aug 18, 2006 1:37 am    Post subject: Reply with quote

Lots of views, but nobody is posting anything. Has the idea gone dead?
Back to top
View user's profile Send private message
Andrew
Mammoth


PostPosted: Fri Aug 18, 2006 8:50 am    Post subject: Reply with quote

It's not dead.

Its on the backburner at the moment - we have other stuff we need to be working on.

We already have support for process affinity in Windows clients at the moment (starting any HLServer server will rotate the CPU automatically).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 10 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum powered by phpBB © 2001, 2005 phpBB Group
GameCreate Service Terms | Privacy Policy | © Copyright Mammoth Media 2001-2007
GameCreate™ is a trademark of Mammoth Media Pty Ltd. GameCreate® is a registered trademark in Australia.