| <!-- HTML snippet loaded in the dashboard view --> |
| <center>Select a view from the menu above.</center> |
| <h1>Definitions</h1> |
| <dl> |
| <dt>Silo</dt> <dd>A set of interchangeable slaves. For example, a Darwin9 |
| slave isn't interchangeable with a Linux64 slave. Silos are based on |
| relatively fixed attributes of the slaves' hardware and sofware |
| configuration -- attributes that cannot be changed without manual |
| intervention.</dd> |
| |
| <dt>Pool</dt> <dd>a set of masters and slaves, where any of the slaves can |
| be allocated to any of the masters. Pools are the primary configuration |
| knob for the allocator.</dd> |
| |
| <dt>Trustlevel<dt> <dd>The trust level specifies the kind of code that can |
| run on this slave. It currently maps to the various levels of |
| version-control commit priviledges -- tryuser and core.</dd> |
| </dl> |
| <h1>Allocation Process</h1> |
| <p>Within each pool, the allocator attempts to balance the slaves in each silo across the available masters. The balancing algorithm proceeds as follows: |
| <ul> |
| <li> determine the pool for the slave</li> |
| <li> determine the silo for the slave </li> |
| <li> for each active master in the pool, count the number of attached slaves from the silo </li> |
| <li> attach the new slave to the master with the lowest count, sorting by master name where counts are equal </li> |
| </ul> |
| </p> |
| |
| <p>Note that the balancing applies to the intersection of a silo and a pool. |
| The more slaves in each such intersection, the better the allocator can |
| perform. As such, we should make all efforts to minimize the number of |
| distinct pools and silos into which we divide our slaves.</p> |