Cloud computing plays an integral role in almost every aspect of today's IT-driven society. The ever-increasing scale and complexity of public cloud infrastructure, together with the wide range of services enabled by it, make it easy to leave efficiency behind. Efficiency has always been crucial for cloud providers due to the massive capital expenditure. However, it has become much more relevant as the free ride of Moore's Law and Dennard Scaling is nearing an end.
This thesis proposes novel ways to increase the efficiency of future public cloud systems. The proposed solutions span across deployment models, resource management policies, and microarchitectural changes. A primary conclusion of this thesis is the importance of system/hardware co-design to ensure high efficiency. Moreover, it is essential to consider the role of user behavior and put incentives in place for users to utilize cloud services efficiently.