Balancing the World

The world is represented by a hierarchy of quadrants, these need to be balanced over multiple processors so that each processor is taking roughly the same amount of time to process one game move for all of the organisms in the quadrants that it holds.
This document is currently at the requirements gathering stage and does not go to the level of a design document.

Requirements

All these requirements are speculative and open to discussion.
Areas that are close together should be on processors that are close together.
When a request comes in to do a move a parent should time how long it takes remote children to do each branch over say 100 rounds. If one processor consistently takes 25% longer than the others then its top node should be brought up to the parent processor and each of it's sub-quadrants made into a branch remotely allocated to that processor. These branches can then be reallocated.
We may need a timing mechanism to find out how relatively performant each processor is or a way of compensating for the fact that the same branch will take a different amount of time on a different processor.
We can't move whole trees between processors as moving trees is expensive.
We can pass a reference to a tree though
Perhaps we should hive off the bottom layers rather than the top layers?
The time taken to process the branch is more important than the number of organisms in it
A dedicated service could just manage the number of processors and the time each one takes per move
Every processor could measure how much time it spends in each of it's top four quadrants

Last edited Mar 11, 2008 at 12:40 PM by nathanjphillips, version 1

Comments

No comments yet.