-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfaas-arch-micro19.html
executable file
·166 lines (144 loc) · 11.2 KB
/
faas-arch-micro19.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!DOCTYPE HTML>
<!--
Read Only by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
-->
<html>
<head>
<title>Architectural Implications of Function-as-a-Service Computing</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="assets/css/main.css" />
<link rel="stylesheet" href="assets/css/academicons.css"/>
<link rel="stylesheet" href="assets/css/label.css" />
<!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]-->
<script async defer src="https://buttons.github.io/buttons.js"></script>
</head>
<body>
<section id="header">
<header>
<span class="image avatar"><img src="./images/mohammad_shahrad.jpg"></span>
<h1 id="logo"><a href="./index.html">Mohammad Shahrad</a></h1>
<p></p>
mohammad\DoT\shahrad/AT/ubc.ca</p>
</header>
<nav id="nav">
<ul>
<li><a href="./index.html">Homepage</a></li>
</ul>
</nav>
<footer>
<ul class="icons">
<li><a href="https://twitter.com/MShahrad" class="icon fa-twitter fa-2x"><span class="label">Twitter</span></a></li>
<li><a href="https://www.linkedin.com/in/mshahrad" class="icon fa-linkedin fa-2x"><span class="label">LinkedIn</span></a></li>
<li><a href="https://scholar.google.com/citations?user=iXgmttoAAAAJ&hl=en" class="ai ai-google-scholar-square ai-3x"><span class="label"></span></a></li>
<!-- <li><a href="#" class="icon fa-envelope fa-2x"><span class="label">Email</span></a></li> -->
</ul>
</footer>
</section>
<!-- Wrapper -->
<div id="wrapper">
<!-- Main -->
<div id="main">
<!-- One -->
<section id="one_faas">
<div class="container">
<header class="major">
<h3>Architectural Implications of Function-as-a-Service Computing</h3>
</header>
<p> Chances are that you have heard the rapidly growing term "serverless" or even worked with serverless offerings such as <a href="https://aws.amazon.com/lambda/">AWS Lambda</a>. Everyone loves them because serverless cloud services provide fine-grained provisioning of resources that scale automatically with user demand. Function as a service (more commonly-known as FaaS) applications follow this serverless model. The developer provides their application as a set of functions that are executed in response to a user- or system-generated event. </p>
<p> The emerging FaaS paradigm got us into thinking about its implications on future cloud servers. Specifically, we were curious to understand whether the short-lived, deeply-virtualized function executions have overheads on contemporary cloud processors. So we took the commercial-grade <a href="https://openwhisk.apache.org/">Apache OpenWhisk</a> FaaS platform and carefully ran it on real servers to investigate and identify the architectural implications of FaaS serverless computing. </p>
<p> We found that the FaaS workloads, along with the way that FaaS inherently interleaves short functions from various tenants frustrates many of the locality-preserving architectural structures common in modern processors. Some of our findings have been reported by others too. These include a noticeable slowdown due to containerization compared to native execution, and significant latency overhead of cold starts. However, we also realized deeper architectural overheads. For instance, short functions have considerably higher branch mispredictions rates, per invocation memory bandwidth usage is much higher compared to native execution, and inter-function interference has a major impact on the server's IPC. I invite you to read our paper to find out these and more detailed observations. </p>
<ul class="actions" align="center">
<li><a href="https://parallel.princeton.edu/papers/micro19-shahrad.pdf" class="button special icon fa-file-pdf-o">Paper</a></li>
<li><a href="bibtex/architectural_implications_of_function-as-a-service_computing.bib" class="button special icon fa-download" download="architectural_implications_of_function-as-a-service_computing.bib">BibTex</a></li>
<li><a href="https://github.com/PrincetonUniversity/faas-profiler" class="button special icon fa-github">FaaSProfiler Tool & Benchmarks</a></li>
</ul>
<p> Given the limitations we faced early on in the project, we developed a testing and profiling tool, called <a href="https://github.com/PrincetonUniversity/faas-profiler">FaaSProfiler</a>. We open-sourced it, as we think it would accelerate other serverless research endeavors. Here are some of its useful components: </p>
<ol>
<li> Invoking various functions with various invocation patterns made easy. You can simply specify synthetic distributions or feed in traces of inter-arrival times to describe complex invocation patterns in a rich JSON format. </li>
<li> Automated handling of large amount of performance and profiling data. </li>
<li> A number of representative benchmarks and microbenchmarks. </li>
</ol>
FaaSProfiler on GitHub: <br>
<p align="center">
<a class="github-button" href="https://github.com/PrincetonUniversity/faas-profiler" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star PrincetonUniversity/faas-profiler on GitHub">Star</a>
<a class="github-button" href="https://github.com/PrincetonUniversity/faas-profiler/fork" data-icon="octicon-repo-forked" data-size="large" data-show-count="true" aria-label="Fork PrincetonUniversity/faas-profiler on GitHub">Fork</a>
<a class="github-button" href="https://github.com/PrincetonUniversity/faas-profiler/archive/master.zip" data-icon="octicon-cloud-download" data-size="large" aria-label="Download PrincetonUniversity/faas-profiler on GitHub">Download</a>
</p>
Related talks:
<ul>
<li>
<font size="2vw">Title: Architectural Implications of FaaS Computing [<a href="./talks/Shahrad_OpenWhisk_TechInterchange_10_19.pdf">Slides</a>] [<a href="https://www.youtube.com/watch?v=oN6HFMLtbsM">Video</a>]</font><br>
<font size="2vw">Speaker: Mohammad Shahrad </font><br>
<font size="2vw">Venue: OpenWhisk Technical Interchange Call</font><br>
<font size="2vw">Date: 10/30/2019</font> <br><br>
<p align="center">
<iframe width="420" height="300" src="https://www.youtube.com/embed/oN6HFMLtbsM" allow="encrypted-media" allowfullscreen defer></iframe>
</p>
</li>
<li>
<font size="2vw">Title: Architectural Implications of Function-as-a-Service Computing</font><br>
<font size="2vw">Speaker: Jonathan Balkind </font><br>
<font size="2vw">Venue: 52nd IEEE/ACM International Symposium on Microarchitecture, Columbus, Ohio</font><br>
<font size="2vw">Date: 10/16/2019</font>
</li>
<li>
<font size="2vw">Title: Serverless Computing, An Architectural Perspective</font><br>
<font size="2vw">Speaker: Mohammad Shahrad </font><br>
<font size="2vw">Venue: Electrical and Computer Engineering Department, University of Waterloo, Canada</font><br>
<font size="2vw">Date: 10/10/2019</font>
</li>
</ul>
We were honored to see Rodric Rabbah mention our paper and characterization in his <a href="https://www.serverlesscomputing.org/wosc5/presentations/191209-WoSC-Rabbah-Cloud-Computer.pdf">WoSC 2019 keynote</a>.
<br><br>
You may also access the paper PDF for free through the ACM Author-Izer link, below: <br><br>
<!-- ACM DL Article: Architectural Implications of Function-as-a-Service Computing -->
<div class="acmdlitem" id="item3358296"><img src="https://dl.acm.org/images/oa.gif" width="25" height="25" border="0" alt="ACM DL Author-ize service" style="vertical-align:middle"/><a href="https://dl.acm.org/authorize?N697006" title="Architectural Implications of Function-as-a-Service Computing">Architectural Implications of Function-as-a-Service Computing</a><div style="margin-left:25px"><a href="https://dl.acm.org/author_page.cfm?id=99658993442" >Mohammad Shahrad</a>, <a href="https://dl.acm.org/author_page.cfm?id=99658691893" >Jonathan Balkind</a>, <a href="https://dl.acm.org/author_page.cfm?id=81100339831" >David Wentzlaff</a><br />MICRO '52 Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture, 2019</div></div>
<!-- ACM DL Bibliometrics: Architectural Implications of Function-as-a-Service Computing-->
<div class="acmdlstat" id ="stats3358296"><iframe src="https://dl.acm.org/authorizestats?N697006" width="100%" height="30" scrolling="no" frameborder="0">frames are not supported</iframe></div>
<br>
Related publication:
<ul>
<li>
<font size="3vw"><a href="https://www.usenix.org/conference/atc20/presentation/shahrad" target="_blank">Serverless in the Wild: Characterizing and Optimizing the Serverless Workload at a Large Cloud Provider</a></font><br>
<font size="2vw">M. Shahrad, R. Fonseca, I. Goiri, G. Chaudhry, P. Batum, J. Cooke, E. Laureano, C. Tresness, M. Russinovich, and R. Bianchini</font><br>
<font size="2vw">2020 USENIX Annual Technical Conference (<a href="https://www.usenix.org/conference/atc20">ATC '20</a>)</font><br>
[Received the Community Award at USENIX ATC '20.]
</li>
</ul>
<br>
<a href="https://twitter.com/share" class="twitter-share-button" data-show-count="false">Tweet</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
</section>
</div>
<!-- Footer -->
<section id="footer">
<div class="container">
<ul class="copyright">
<!-- <li>© Untitled. All rights reserved.</li> -->
<li>Design: <a href="https://html5up.net/">HTML5 UP</a></li>
</ul>
</div>
</section>
</div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrollzer.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/skel.min.js"></script>
<script src="assets/js/util.js"></script>
<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
<script src="assets/js/main.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-80541256-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-80541256-2');
</script>
</body>
</html>