International audienceCloud Computing aims at outsourcing data and applications hosting and at charging clients on a per-usage basis. These data and ap- plications may be packaged in virtual machines (VM), which are them- selves hosted by nodes, i.e. physical machines. Consequently, several frameworks have been designed to manage VMs on pools of nodes. Unfortunately, most of them do not efficiently address a common objective of cloud providers: maximizing system utilization while ensuring the quality of service (QoS). The main reason is that these frameworks schedule VMs in a static way and/or have a centralized design. In this article, we introduce a framework that enables to schedule VMs cooperatively and dynamically in distributed system...