  In modern computing environments, users may have multiple systems accessible
to them such as local clusters, private clouds, or public clouds. This
abundance of choices makes it difficult for users to select the system and
configuration for running an application that best meet their performance and
cost objectives. To assist such users, we propose a prediction tool that
predicts the full performance-cost trade-off space of an application across
multiple systems. Our tool runs and profiles a submitted application on a small
number of configurations from some of the systems, and uses that information to
predict the application's performance on all configurations in all systems. The
prediction models are trained offline with data collected from running a large
number of applications on a wide variety of configurations. Notable aspects of
our tool include: providing different scopes of prediction with varying online
profiling requirements, automating the selection of the small number of
configurations and systems used for online profiling, performing online
profiling using partial runs thereby make predictions for applications without
running them to completion, employing a classifier to distinguish applications
that scale well from those that scale poorly, and predicting the sensitivity of
applications to interference from other users. We evaluate our tool using 69
data analytics and scientific computing benchmarks executing on three different
single-node CPU systems with 8-9 configurations each and show that it can
achieve low prediction error with modest profiling overhead.
