摘要 |
A task is divided into work granules that require access to data objects. The work granules are distributed to slave processes in a manner that causes the data objects to be accessed in a balanced way, such that the difference in the number of slave processes accessing any object is not greater than one. Distributing the work granules in this manner decreases the likelihood that the resources required to access any particular data object will become a bottleneck in performing the task. For each data object in the set of data objects, a work granule list is maintained. The list of each data object identifies work granules requiring access to the data object. A slave process is assigned a work granule selected from a set of work granule lists. To select a work granule for a slave process, an initial list is picked at random. If the quantity of currently-assigned work granules from the selected work granule list is less than or equals a "threshold minimum", then a work granule from the work granule list is assigned to the slave process. If the quantity of work granules is greater than the threshold minimum, then another work granule list is selected. The threshold minimum may be, for example, the minimum number of currently-assigned work granules from the work granule list.
|