29.11.2012 Views

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

in a directed acyclic graph [3]. These works however assume<br />

that the underlying provisi<strong>on</strong>ing machines are homogeneous.<br />

This is a reas<strong>on</strong>able assumpti<strong>on</strong> in mediumscale<br />

envir<strong>on</strong>ments such as cluster computers. However,<br />

in Cloud computing platforms resources are heterogeneous<br />

so these systems do not apply.<br />

A few research works address the problem of provisi<strong>on</strong>ing<br />

<strong>Web</strong> applicati<strong>on</strong>s in heterogeneous resource envir<strong>on</strong>ments.<br />

Stewart et al. predict the performance of<br />

Internet Services across various server platforms with<br />

different hardware capacities such as processor speeds<br />

and processor cache sizes [10]. Similarly, Marin et al.<br />

use detailed hardware models to predict the performance<br />

of scientific applicati<strong>on</strong>s across heterogeneous architectures<br />

[6]. These approaches rely <strong>on</strong> detailed hardware<br />

metrics to parametrize the performance model. However,<br />

in the Cloud such low-level metrics are hidden by the virtualizati<strong>on</strong><br />

layer. In additi<strong>on</strong>, Cloud hardware resources<br />

are typically shared by virtual instances, which makes<br />

it much harder for hardware-based performance models<br />

to capture the performance features of c<strong>on</strong>solidated virtual<br />

instances. These works therefore cannot be easily<br />

extended to predict <strong>Web</strong> applicati<strong>on</strong> performance in the<br />

Cloud.<br />

JustRunIt is a sandbox envir<strong>on</strong>ment for profiling<br />

new machines in heterogeneous envir<strong>on</strong>ments using real<br />

workloads and real system states [14]. When <strong>on</strong>e needs<br />

to decide <strong>on</strong> the usage of new machines, this work cl<strong>on</strong>es<br />

an <strong>on</strong>line system to new machines, and duplicate <strong>on</strong>line<br />

workload to them. This approach can effectively capture<br />

performance characteristics of new virtual instances<br />

in the Cloud. However, it requires to cl<strong>on</strong>e <strong>on</strong>line envir<strong>on</strong>ment<br />

to new instances at each adaptati<strong>on</strong>, which can<br />

be very time-c<strong>on</strong>suming. On the other hand, our work<br />

can predict the performance of new instances for running<br />

<strong>Web</strong> applicati<strong>on</strong>s without actually executing the applicati<strong>on</strong><br />

<strong>on</strong> new instances.<br />

Elnikety et al. address the problem of predicting replicated<br />

database performance using standal<strong>on</strong>e database<br />

profiling [4]. This work inspired us to realize performance<br />

predicti<strong>on</strong> through <strong>on</strong>line profiling techniques.<br />

However, it addresses a different problem than ours: here<br />

the problem is to predict the performance of different<br />

database replicati<strong>on</strong> techniques rather than accounting<br />

for the performance heterogeneity of the database servers<br />

themselves. Our work focuses <strong>on</strong> the latter.<br />

Finally, instead of predicting performance, Kalyvianaki<br />

et al. use c<strong>on</strong>trol theory to allocate CPU resources<br />

to multi-tier <strong>Web</strong> applicati<strong>on</strong>s hosting across various<br />

virtual instances in a virtualized data center [5].<br />

This work mainly focuses <strong>on</strong> the problem of hardware<br />

resource assignment for composing different virtual instances<br />

with different capabilities. It does not address<br />

performance impact of resource heterogeneity caused by<br />

0<br />

0 5 10 15 20 25 30<br />

Request rate (req/s)<br />

<str<strong>on</strong>g>USENIX</str<strong>on</strong>g> Associati<strong>on</strong> <strong>Web</strong>Apps ’11: <str<strong>on</strong>g>2nd</str<strong>on</strong>g> <str<strong>on</strong>g>USENIX</str<strong>on</strong>g> <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> <strong>on</strong> <strong>Web</strong> Applicati<strong>on</strong> <strong>Development</strong> 51<br />

Resp<strong>on</strong>se time (ms)<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

SLO<br />

Figure 2: <strong>Web</strong> applicati<strong>on</strong> performance heterogeneity<br />

under Auto-Scale <strong>on</strong> EC2<br />

the virtualizati<strong>on</strong>. Nathuji et al. also focus <strong>on</strong> providing<br />

Quality-of-Service guarantees to applicati<strong>on</strong>s running in<br />

the Cloud [7]. However, this work aims at dynamically<br />

adapting the hardware resource allocati<strong>on</strong> am<strong>on</strong>g c<strong>on</strong>solidated<br />

virtual instances to mitigate performance interference<br />

of different applicati<strong>on</strong>s, rather than making the<br />

best possible use of heterogeneous machine instances.<br />

3 Motivating example<br />

The performance heterogeneity of Cloud resources depicted<br />

in Figure 1 has str<strong>on</strong>g c<strong>on</strong>sequences <strong>on</strong> <strong>Web</strong> applicati<strong>on</strong><br />

hosting. Figure 2 shows the resp<strong>on</strong>se time of<br />

a single-tier CPU-intensive <strong>Web</strong> applicati<strong>on</strong> deployed<br />

<strong>on</strong> four ’identical’ virtual instances in the Amaz<strong>on</strong><br />

EC2 Cloud, using Amaz<strong>on</strong>’s own Elastic Load Balancer<br />

(which addresses equal numbers of requests to all instances).<br />

As we can see, the four instances exhibit significantly<br />

different performance. The resp<strong>on</strong>se time of the<br />

first instance exceeds 300 ms around 17 req/s while the<br />

fastest instances can sustain up to 28 req/s before violating<br />

the same SLO. As a result, it becomes necessary to<br />

re-provisi<strong>on</strong> the applicati<strong>on</strong> at 17 req/s, while the same<br />

virtual instances could sustain a much higher workload<br />

if they were load balanced according to their individual<br />

capabilities.<br />

As we shall see in the next secti<strong>on</strong>s, the problem becomes<br />

more difficult when c<strong>on</strong>sidering multi-tier <strong>Web</strong><br />

applicati<strong>on</strong>s. When re-provisi<strong>on</strong>ing a multi-tier <strong>Web</strong> applicati<strong>on</strong>,<br />

<strong>on</strong>e must decide which tier a new virtual instance<br />

should be added to, such that the overall applicati<strong>on</strong><br />

performance is maximized. However, this choice<br />

largely depends <strong>on</strong> the individual performance of the new<br />

virtual instance: an instance with fast I/O is more likely<br />

than another to be useful as a database replica, while an<br />

instance with fast CPU may be better used as an extra<br />

applicati<strong>on</strong> server.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!