javaoperating-systemprocess-controlcontrol-theory

Using a PID controller to manage resources in programs


I was wondering if there is a precedent for using PID controller type mechanisms to manage computation resources (see http://en.wikipedia.org/wiki/PID_controller).

By computational resources I mean: Spare Threads, Spare Processes, Queue Lengths, etc.

For example in apache.conf you can specify the number of spare server, min servers, etc.

The question I have is how do you control the spawning of new server or contraction of your resource pool.

The same could be applied to saw spawning nodes on say an Amazon Grid if your load increases beyond some level.

As a response to this question I am interested in:

  1. If there is a Yes, No, Maybe answer to this questions

  2. If there are accessible examples of where this is used in the open source world

  3. If there are libraries that implement PID control in java, python, etc. for this purpose.

Thanks.


Solution

  • According to this research article, the Thread-pool in .NET framework seem to have one. I also found articles on load balancing Apache web servers using autonomous control, controlling memory footprint in DB2 etc.

    The code here is a java implementation used in an open source project.