The objective of this project is to develop a system that has predictable performance for all the tasks running on it.
We are now targeting at personal desktops (workstations), that normally has a mix of different workloads, such as instantaneous, interactive, and batched processes. The term performance here really means the quality of service (QoS) that the system can provide to a certain task, where different tasks may have different criteria. For some processes, such as system daemons, and GUI updates, responsiveness is important, while batched processes may care more about progress rate (i.e. throughput). The fundamental trade-off here is responsiveness vs. throughput and resource utilization (CPU, memory, and I/O bandwidth)
Our goal here is to provide a system that overcomes these problems through the cooperation between CPU scheduler, Memory manager, and I/O management. It should make its best effort to satisfy the QoS requirements of different tasks in system, and ensure the system's responsiveness and availability, even under extreme heavy load, such as fork bombs, malloc working set bombs, and large amount of I/O requests.






