AI

Applying Control Theory in the Real World: Experience With Building a Controller for the .NET Thread Pool

Abstract

While much has been published about the value of using formal techniques from control engineering to build software systems, little has been reported on software engineering considerations for building closed loop systems, especially widely deployed resource managers. This paper discusses the design, testing, and tuning of a controller that optimizes concurrency levels in the .NET thread pool, a feature that is present in approximately 1 billion computers that run the Windows Operating System. Some of the issues we encountered are: (a) designing an extensible controller that easily incorporates a diverse set of techniques; (b) creating a scalable test infrastructure to address running a large number of test cases; (c) providing test cases for which the optimal concurrency level is known a priori; and (d) choosing settings of tuning parameters that result in good controller performance for multiple evaluation criteria.