  Infrastructure-as-a-Service providers are offering their unused resources in
the form of variable-priced virtual machines (VMs), known as "spot instances",
at prices significantly lower than their standard fixed-priced resources. To
lease spot instances, users specify a maximum price they are willing to pay per
hour and VMs will run only when the current price is lower than the user's bid.
This paper proposes a resource allocation policy that addresses the problem of
running deadline-constrained compute-intensive jobs on a pool of composed
solely of spot instances, while exploiting variations in price and performance
to run applications in a fast and economical way. Our policy relies on job
runtime estimations to decide what are the best types of VMs to run each job
and when jobs should run. Several estimation methods are evaluated and
compared, using trace-based simulations, which take real price variation traces
obtained from Amazon Web Services as input, as well as an application trace
from the Parallel Workload Archive. Results demonstrate the effectiveness of
running computational jobs on spot instances, at a fraction (up to 60% lower)
of the price that would normally cost on fixed priced resources.
