1. A method for providing a resource allocation policy, comprising: constructing a queuing model for each application; defining a utility function for said each application and for each transaction type of said each application; defining an overall utility in a system; performing an optimization to identify an optimal configuration that maximizes said overall utility for a given workload; and determining one or more adaptation policies for configuring said system in accordance with said optimal configuration.