The project aims to investigate the resource allocation problem in cloud infrastructures and distributed data centers. The pysical network structure of datacenters and virtual network topology of could applications will be considered while assigning virtual machines to physical nodes. Efficient allocations of virtual machines to physical machines requires considering various parameters of machines alltogether. The traffic demand and current traffic load, besides CPU, memory and storage, are also important to consider in doing allocations. We will also consider the dynamic changes in resource usage and utilization, and develop algorithms that adapt the assignments without harming the performance applications are geting.