  We consider a distributed server system consisting of a large number of
servers, each with limited capacity on multiple resources (CPU, memory, disk,
etc.). Jobs with different rewards arrive over time and require certain amounts
of resources for the duration of their service. When a job arrives, the system
must decide whether to admit it or reject it, and if admitted, in which server
to schedule the job. The objective is to maximize the expected total reward
received by the system. This problem is motivated by control of cloud computing
clusters, in which, jobs are requests for Virtual Machines or Containers that
reserve resources for various services, and rewards represent service priority
of requests or price paid per time unit of service by clients. We study this
problem in an asymptotic regime where the number of servers and jobs' arrival
rates scale by a factor $L$, as $L$ becomes large. We propose a resource
reservation policy that asymptotically achieves at least $1/2$, and under
certain monotone property on jobs' rewards and resources, at least $1-1/e$ of
the optimal expected reward. The policy automatically scales the number of VM
slots for each job type as the demand changes, and decides in which servers the
slots should be created in advance, without the knowledge of traffic rates. It
effectively tracks a low-complexity greedy packing of existing jobs in the
system while maintaining only a small number, $g(L)=\omega(\log L)$, of
reserved VM slots for high priority jobs that pack well.
