next up previous
Next: Goals of the Up: Farming Previous: Farming - Definition

Farming - Classification

To focus our attention on the operating environment (or a farm daemon task), it should be able to manage the creation of the farms and operations such as termination of a farm, leaving a farm (by a worker task), and routing of work packets to the worker. There are ways in which the packet distribution to a worker can occur. Farms are classifed into the following categories.

  1. Static Farm

    In this case, the farm daemon could distribute all the work packets, that it has at any instant, equally to all the worker tasks. The advantage of this scheme is that the worker task would not need to request the farm daemon for a work packet but would retrieve it locally from its queue of messages. The disadvantage of this scheme is that at run-time if another worker task joins a worker class after all work packets have been distributed, then a redistribution of work packets would not take place and the new worker task could be idle. Also, this approach does not take into account the different processing requirements for each work packet. So, in this approach the farm is static in the sense that all worker tasks can process number of packets that is independent of their processing capacities. So this does not provide for dynamic load balancing.

  2. Dynamic Farm

    In this case, the farm daemon would distribute the work packets to workers only when the worker would request for a work packet. Thus, different workers could receive different number of work packets depending upon their respective processing capacities. Also, this scheme is suitable to a farm which allows migration of a worker task from one farm to another. When this happens, the new worker task could receive a work packet as all the work packets are contained in the central farm daemon task and it can be integrated into the farm easily. The advantage of the dynamic farm is that it can support worker task migration (between farms) efficiently, it can distribute work packets depending upon the processing capacities of the worker tasks and keep all the workers busy most of the times and so it implements a dynamic load balancing scheme. The disadvantage of a dynamic farm is that it requires the work packets for a farm to be stored at a central location which requires a large storage to be allocated at the farm daemon. Also, the worker tasks need to request for each work packet explicitly, so there is a greater latency in getting a work packet as compared to the static farm case where all the work packets are locally stored and can be retrieved without any additional messages to be sent to the central server (farm daemon).

    Different distributed data management schemes with respect to locks are discussed in [1] . These schemes are analogous to managing the work packets in the case of process farms.

     
    Figure 1: Representation of Farming



next up previous
Next: Goals of the Up: Farming Previous: Farming - Definition



Sameer Shende