Cloud computing has become increasingly popular as it provides a cost-effective alternative to proprietary high-performance computing systems. As the workloads to data-centers housing cloud computing platforms are intensively growing, developing an efficient and fair resource allocation/scheduling mechanism which guarantees quality-of-service for different users has become increasingly important. Fair resource management (i.e. allocation or scheduling) in such a shared computing system is particularly challenging because of the following reasons: (a) the presence of multiple types of resources, (b) diversity in the users' resource demands, (c) heterogeneity of servers, and (d) placement constraints. On the other hand, efficiency may have different implications in a cloud environment depending on the underlying deployment (public vs private clouds). E.g., in a small-scale private cloud one may need to maximize resource efficiency (utilization). However in a large-scale public cloud (with substantially varying operational costs across different servers), one may need to minimize the operational costs at the same time in order to achieve an efficient resource allocation.
To address the above complexities, we fifirst consider a single-resource private setting wherein we study fair scheduling of users onto multiple heterogeneous servers in the presence of placement constraints. Next, we study efficient and fair allocation of multiple types of resources in an environment of heterogeneous servers in the presence of user placement constraints in private clouds. Towards this, we formulate the multi-resource allocation problem as a game among different servers, where each server strives to maximize a per-server objective, which governs resource efficiency and fairness at the same time. Such a server-based approach not only results in a fully distributed implementation but also is shown to satisfy several fairness-related properties which are generally deemed desirable. Finally, we study cost-efficient and fair allocation of resources which can be desirable for a public cloud service provider. Again, we follow a server-based approach wherein a local metric is used to allocate resources at each server. Here we propose two different ways to incorporate the impact of operational costs into the per-server objectives/metrics, each providing fairness in a different sense. In addition to analytical results, we also employ numerical experiments to show the effectiveness of our proposed mechanism in each case.