Cloud computing has been one of the revolutionary breakthroughs of the 2010s in the IT/ICT world and since then its popularity is unbroken. More and more data centers are being constructed to be able to accommodate the physical resources needed by cloud systems. Therefore the global energy needs of data centers are also on the rise.
Due to the advancements in virtualization technology it is possible to migrate virtual machines from one host to another without shutting them down meanwhile. Therefore everything is given for the optimization of cloud data centers and the placement of virtual machines. My thesis describes the existing literature of the topic and the field of matching theory, and after deciding on some modeling questions, a mathematical model is created to formalize the problem. Using this model a virtual machine placement algorithm is developed that makes use of the results achieved in matching theory and after the inspection of some tools used to simulate cloud environments a simulation environment is created alongside. By making use of this simulator the algorithm is verified and a heuristic is chosen to speed up its execution. Finally using the algorithm a custom compute scheduler for OpenStack is implemented after the inspection of the appropriate module of OpenStack Nova.