Power provisioning and consumption costs are very significant for data centers. To maximally utilize the provisioned power capacity, data centers often employ oversubscription, that is, the sum of peak consumptions of individual servers may be greater than the provisioned capacity. Power budgeting methods are employed to ensure that the actual consumption never exceeds capacity. However, current power budgeting methods enforce capacity limits in hardware and are not well suited for virtualized servers because the hardware is shared among multiple applications. We present a power budgeting system for virtualized infrastructures that enforces power limits on individual distributed applications. Our system enables multiple applications to share the same servers but operate with their individual quality of service guarantees. It responds to workload and power availability changes, by dynamically allocating appropriate amount of power to different applications and tiers within applications. The design is mindful of practical constraints such as the distributed nature of application tiers spanning multiple servers and the data center’s limited visibility into performance achieved by the hosted applications. We evaluate the system on a multi-server testbed, with workloads derived from real world data center traces.