Engineering product performance
Adaptive partitioning lets you design your system so as to optimize its performance.
Partitions divide resources so that they can be used by a collection of programs. A partition represents a fraction of a resource and includes a few rules that define the resource usage. The resources include basic objects, such as processor cycles, program store or high-level objects, such as buffers, page tables, or file descriptors.
Adaptive partitioning ensures that any free time available in the system (i.e., CPU time in a partition's budget that the partition doesn't need) is made available to other partitions. This lets the system handle sudden processing demands that occur during normal system operation. With a cyclic thread scheduler, there's a use it or lose it
approach where unused CPU time is spent running an idler thread in partitions that don't use their full budget.
Another important feature of adaptive partitioning is the concept of partition inheritance. This feature lets designers develop server processes that run with no (or minimal) budget. When the server performs requests from clients, the client partition is billed for the time. Without this feature, CPU budget would be allocated to a server regardless of how much or often it's used. The benefits of these features include:
- You don't have to over-engineer the system, so the overall cost decreases.
- If you add an application, you don't have to re-engineer the budget of common services, such as filesystems or servers.
- The system is faster and more responsive to the user.
- The system guarantees time for important tasks.
- You can use priorities to specify a process's urgency, and a partition's CPU budget to specify its importance.
