[MUD-Dev] Dynamic Load Balancing

Kevin Scott London london at cs.utk.edu
Thu Mar 16 14:17:02 New Zealand Daylight Time 2000


On Thu, 16 Mar 2000, Bruce wrote:
>   Does anyone know anything about their dynamic load balancing or how it
>   works?  I haven't really seen any write-ups on that. 

Well I have never used dynamic load balancing in a game environment but
since I write parallel libraries (pvm, MPI, etc...) and parallize code for
a living, I believe I can add some on this topic.
In a scientific type of code, dynamic load balancing is done in one of two
different ways.  First and easiest way to accomplish this is to have a
"master" process that doles out work when slaves are ready to process it.
This effectively allows the loadwork to be spread out evenly and also has
the added benefit that you can use it to make the application fault
taulerant.  The second way is to do series of benchmarks, find the fastest
machines and then kick off more work on the faster machines.  That being
said, I can see dynamic load balancing being achieved in several different
ways in a game environment.  Of course there are hundreds of ways to do
said, I can see dynamic load balancing being achieved in several different
ways in a game environment.  Of course there are hundreds of ways to do
this depending on if you are running a server heavy model (server does
most of the computations, which I believe Diablo II is running), or client
doing most of the work with the server simply updating the client (IE
client guesses what will happen, this is how most Quake type games are
ran).  But for a role playing model, I personally think a server model is
a better way to run that.  The way I think load balancing can be achieved
is to have several machines responsible for different portions of the
game (this is more static load balancing though).  Say one machine for a
certain area, another machine handles another area, one to handle weather
computations, etc.... Then they could all communicate via a parallel
library or your own socket code (just remember to use xdr if the machines
store values in different formats).  If you wanted dynamic load balancing,
you could have several machines running the same stuff (IE same, area,
etc...) and have a master login machine that would keep track of how many
were logged into each machine, load on the machine, etc.... and
automatically reroute the person to the lowest loaded machine and then use
parallel libraries to communicate and keep all the servers in-synch ( or
automatically reroute the person to the lowest loaded machine and then use
parallel libraries to communicate and keep all the servers in-synch ( or
shared memory/threads if on a multiprocessor machine).  I may have gone
off topic, or not answered your question but I would be glad to expand on
this topic if anyone would like to hear more.

Kevin London





_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
http://www.kanga.nu/lists/listinfo/mud-dev



More information about the MUD-Dev mailing list