Today's operating systems are oblivious to to the needs of individual process for on-chip resources. Multi-core operating systems must be made aware of on-chip resource competition in order for effective utilization of chip resources. Using hardware performance counter information, it is possible to provide consolidated operating system support to efficiently manage shared on-chip resources, particularly the shared cache and memory bus bandwidth. I will explore both hardware-assisted and OS-level software techniques to improve the performance, fairness, and scalability of multicore systems.