In recent years, cloud computing has become a popular paradigm for hosting and delivering services over the internet. The key technology that makes cloud computing possible is server virtualization, which enables dynamic sharing of physical resources. Through virtualization, a cloud service provider can ensure QoS delivered to the user while achieving higher server utilization and energy efficiency. Virtualization introduces the problem of virtual machine placement and also increases the overheads in load balancing. This paper discusses the various the various algorithms dealing with VM placement and load balancing in cloud environment.