General purpose Operating Systems do not provide effective mechanisms for application processing reservation. To overcome this limitation, some initiatives aim at guaranteeing processing by instrumenting kernels or by isolating the performance through the creation of virtual machines. However, these proceedings may be impractical if the kernel code is not available or high overheads should be avoided. As will be described in this paper, CPUReserve works differently from these approaches. It is a processing reservation system that runs at user level. CPUReserve allows the configuration of the active scheduling policy and simplifies the development of new ones. Thus, it can be used in many computing scenarios such as distributed and shared environments.
279parameterized and should not be used directly by the application developer, since they may affect the system performance as a whole.To support more intuitive processing reservation interfaces, some initiatives, such as Resource Kernels or Resource Containers, seek to develop processing reservation mechanisms by creating kernel extensions, with the purpose of ensuring timely access to the resources of an Operating System [1-3]. Others use virtual machines for this purpose. Virtual machines offer users a customized environment in which computer resources are exclusively dedicated to the processes required by the current user [4,5].Taking a different approach from Resource Kernels and virtual machines, some initiatives have attempted to manage resource reservation at the user level; thus, avoiding the need for kernel recompiling or system overload by instancing a large number of virtual machines [6][7][8]. However, these initiatives did not evolve to be applied in more modern scenarios, such as opportunistic grids, utility-computing environments, and multi-processed architectures. To fulfill this gap, we developed CPUReserve, a service-based mechanism for isolating the performance in distributed systems [9].In a system where processing guarantee is an issue, several sharing policies may be used to achieve different goals. One can, for instance, implement a policy that prioritizes the process with the smaller period or the process with the earliest deadline. Policies that consider characteristics out of the scope of periodicity can also be considered. For example, a policy may prioritize applications from paying clients over non-paying ones. The need for such flexibility made us to provide CPUReserve with a flexible mechanism that allows the configuration of the scheduling policy through the use of a scripting language.This paper describes the design and implementation of CPUReserve, the mechanisms to extend it with new scheduling policies, and some experiments to evaluate the system's effectiveness, performance overhead, and scalability. The remainder of the paper is organized as follows: in Section 2, other works related to CPUReserve are reviewed. In Section 3, implementation details about the way processing constraint is implemented in CPUReserve are presented. S...