Shared computing services must control resource usage to meet contractual performance goals for hosted customers. They must ensure performance isolation among the workloads of different customers and enforce prioritization when the service is overloaded. Existing solutions are domain-specific and require modifications to the service. We propose a generic, non-intrusive approach that uses a fair scheduler to intercept incoming requests and enforce proportional sharing of the service resources among workloads. The relation between workload shares and obtained performance varies over time depending on system dynamics. We design an adaptive optimal MIMO controller that dynamically sets the workload shares based on the observed performance. Experimental results from an NFS server and a 3-tier e-commerce site demonstrate that the controller achieves effective performance differentiation, even when the system state or the performance goals change significantly. Notes: To be published in the International Conference on Control and Automation, 26-29 June 2005, Budapest, Hungary 5 Pages