In a large-scale, dynamic system, information about the current status of the system can serve as feedback to different kinds of control mechanisms. In this section, we describe a simple monitor agent, called a Price Monitor Agent (PMA), which collects information about an auction's prices over time and uses that information to decide whether to spawn more service providers.
In our scenario, the PMA monitors the price of query planning services. The price in this auction reflects the load on the QPAs-- a consistently high price means that the QPAs are heavily loaded. One way to reduce the load is to replicate QPAs (assuming that there are other less heavily loaded machines on the network). When the the load is reduced, the price should come down.
The PMA is initially set with a given minimum and maximum price bounds, although they can be changed later. When the price exceeds the upper bound, i.e., the load on each QPA is getting high, it spawns additional QPAs. This effectively distributes the load. When the price goes below the lower bound, i.e., the QPAs load has fallen, the PMA has a choice of either removing or just inactivating one of the extra QPA, depending on whether it expects the load to increase again in the near term. The effect of this behavior is to keep the load across QPAs (and therefore the response time to users) within specified bounds even though the user demand is dynamic.
Figure 4: Price Monitoring Scenario
Figure 4 shows an overview of how the PMA operates. Below is a description of what is occuring at each step:
In our experiments, the PMA, given reasonable bounds for the prices and activity of the agents, was successfully able to keep the price within the given price bounds. However when the price bounds were too tight or the activity on the system was too dynamic, the PMA would oscillate. For example, if too many agents get added, the price may fall too low, causing too many agents to get removed, which causes the price to go too high, and so forth. Providing the monitoring agent with knowledge about usage patterns, or having it collect statistics about usage, is one way to address this problem.