Load leveling in SSI ==================== In the 0.6 release, we have taken Mosix's process load leveling algorithms and integrated them into our Open SSI cluster base. This is currently a compile time config variable CONFIG_MOSIX_LL, which is not set by default. To configure say yes to the "MOSIX Load Leveling for SSI" config option. Turning on this option will provide automatic load-balancing within the cluster. Using the Mosix algorithms, the load of each node is calculated and compared to the loads of the other nodes in the cluster, if its determined that the node is overloaded it will choose a process to migrate to best underloaded node. Using the existing node monitoring scheme, each node sends its current load to the clms master node, the master node then sends all the loads its received to all the other nodes. Consequently, each node independently determines if it needs to move processes to other nodes and will automatically migrate processes to other nodes. A process gets chosen to migrate if its not ignoring the SIGMIGRATE signal, and has acquired an amount of run time, and has the highest weighted load. If a process/application needs to be pinned to a node it can be started with the "onnode -p " command. This will set the signal mask to ignore the SIGMIGRATE signal, so it will never move. Only the load leveling algorithms have been taken from Mosix. The Open SSI project is using its own process migration model, membership mechanism, and information sharing scheme needed for automatic load balancing. Limitations with respect to MOSIX --------------------------------- Some limitations on our first load leveling implementation are: - The load leveling option is enabled at compile time. Once the kernel is compiled and running load leveling cannot be turned off for a specific node. - Currently there is no support for the /proc Mosix interfaces. This means a node cannot block process from coming in, expel remote processes, bring back processes that have gone remote, or prevent local processes from going remote, by simply writing into /proc. Default values for decay, and speed cannot be changed either. Information that is provided through the /proc mechansim in Mosix, such as where the process is executing, number of nodes in the cluster, number of cpu's per node, etc can be obtained by using the SSI cluster commands/interfaces, such as clusternode_num, cluster, cluster_getinfo. Migrating processes to another node can be done in SSI by using the migrate command. - Processes already running cannot be pinned. If a process should be pinned, it can be started with the onnode command.