In known distributed software applications, software components are distributed among a plurality of executables (i.e., software capsules or software entities). Each of the executables contains one or more software components that perform some portion of the functionality of the distributed software application. The executables of the distributed software application may all run on a single processor or may be divided up and run across a plurality of processors.
To divide the executables across the plurality of processors, an administrator writes a configuration file that sets, at compile time, a fixed relationship between various executables and processors. For example, the configuration file may indicate that each of the executables is always run on a specific processor. Upon any startup of the distributed software application, the executables run on the pre-assigned processors.
The functionality of the distributed software application in one example is separated into two executables (i.e., first and second executables). The system that runs the software application in one example has two processors (i.e., first and second processors). At some point before runtime of the distributed software application, the administrator assigns the first executable to one of the processors and assigns the second executable to one of the processors. For example, the administrator may declare in the configuration file that the first executable is to be run on the first processor and the second executable is to be run on the second processor.
As one shortcoming, the assignment of the executables to the processors is fixed prior to runtime. At each startup of the distributed software application, the executables are run on the same processors regardless of the condition of the system. As another shortcoming, the administrator is unable to completely plan for changing load conditions of the processors. At the time of creation of the configuration file, the administrator may not have a complete picture of the load of the system that runs the distributed software application. The configuration file may pre-assign an executable to a processor when the current condition of system would make it beneficial to assign the executable to a different processor.
Thus, a need exists for an enhanced selection of a processor from a plurality of processors to run an executable of a distributed software application.