  Fair allocation has been studied intensively in both economics and computer
science, and fair sharing of resources has aroused renewed interest with the
advent of virtualization and cloud computing. Prior work has typically focused
on mechanisms for fair sharing of a single resource. We provide a new
definition for the simultaneous fair allocation of multiple
continuously-divisible resources. Roughly speaking, we define fairness as the
situation where every user either gets all the resources he wishes for, or else
gets at least his entitlement on some bottleneck resource, and therefore cannot
complain about not getting more. This definition has the same desirable
properties as the recently suggested dominant resource fairness, and also
handles the case of multiple bottlenecks. We then prove that a fair allocation
according to this definition is guaranteed to exist for any combination of user
requests and entitlements (where a user's relative use of the different
resources is fixed). The proof, which uses tools from the theory of ordinary
differential equations, is constructive and provides a method to compute the
allocations numerically.
