Tuning The Kernel With A Genetic Algorithm
Jake Moilanen provided a series of four patches against the 2.6.9 Linux kernel that introduce a simple genetic algorithm used for automatic tuning. The patches update the anticipatory IO scheduler and the zaphod CPU scheduler to both use the new in-kernel library, theoretically allowing them to automatically tune themselves for the best possible performance for any given workload. Jake says, "using these patches, there are small gains (1-3%) in Unixbench & SpecJBB. I am hoping a scheduler guru will able to rework them to give higher gains."
Genetic algorithms as used in machine learning are modeled after the process of evolution as observed in nature, and are a field within the science of artificial intelligence. The idea is to generate a "population" defined with unique strings of "chromosomes", to test each of these chromosome strings for "fitness", to select a subset of the chromosome strings with the best fitness and use them to create new chromosomes, to apply random mutation to a small subset, and finally to start the process all over again. Over time, all the chromosomes should "evolve" toward having the best possible fitness, as defined by the algorithm.