Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2830772.2830792acmconferencesArticle/Chapter ViewAbstractPublication PagesmicroConference Proceedingsconference-collections
research-article

Microarchitectural implications of event-driven server-side web applications

Published: 05 December 2015 Publication History

Abstract

Enterprise Web applications are moving towards server-side scripting using managed languages. Within this shifting context, event-driven programming is emerging as a crucial programming model to achieve scalability. In this paper, we study the microarchitectural implications of server-side scripting, JavaScript in particular, from a unique event-driven programming model perspective. Using the Node.js framework, we come to several critical microarchitectural conclusions. First, unlike traditional server-workloads such as CloudSuite and BigDataBench that are based on the conventional thread-based execution model, event-driven applications are heavily single-threaded, and as such they require significant single-thread performance. Second, the single-thread performance is severely limited by the front-end inefficiencies of today's server processor microarchitecture, ultimately leading to overall execution inefficiencies. The front-end inefficiencies stem from the unique combination of limited intra-event code reuse and large inter-event reuse distance. Third, through a deep understanding of event-specific characteristics, architects can mitigate the front-end inefficiencies of the managed-language-based event-driven execution via a combination of instruction cache insertion policy and prefetcher.

References

[1]
"The redmonk programming language rankings: January 2015." http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/.
[2]
S. M. Blackburn, P. Cheng, and K. S. McKinley, "Myths and realities: The performance impact of garbage collection," in Proc. of SIGMETRICS, 2004.
[3]
O. Anderson, E. Fortuna, L. Ceze, and S. Eggers, "Checked load: Architectural support for javascript type-checking on mobile processors," in Proc. of HPCA, 2011.
[4]
M. Mehrara, P.-C. Hsu, M. Samadi, and S. Mahlke, "Dynamic parallelization of javascript applications using an ultra-lightweight speculation mechanism," in Proc. of HPCA, 2011.
[5]
M. Mehrara and S. Mahlke, "Dynamically Accelerating Client-side Web Applications through Decoupled Execution," in Proc. of CGO, 2011.
[6]
T. Cao, T. Gao, S. M. Blackburn, and K. S. McKinley, "The yin and yang of power and performance for asymmetric hardware and managed software," in Proc. of ISCA, 2012.
[7]
F. Dabek, N. Zeldovich, F. Kaashoek, D. Mazières, and R. Morris, "Event-driven programming for robust software," in Proc. of SIGOPS European Workshop, 2002.
[8]
"Why threads are a bad idea (for most purposes)." http://web.stanford.edu/~ouster/cgi-bin/papers/threads.pdf.
[9]
M. Welsh, D. Culler, and E. Brewer, "SEDA: an architecture for well-conditioned, scalable internet services," in Proc. of SOSP, 2001.
[10]
M. Welsh, S. D. Gribble, E. A. Brewer, and D. Culler, "A design framework for highly concurrent systems," in Technical Report No. UCB/CSD-00-1108, 2000.
[11]
Joyent, Inc., "Node.js." https://nodejs.org/.
[12]
G. Chadha, S. Mahlke, and S. Narayanasamy, "Efetch: optimizing instruction fetch for event-driven web-applications," in Proc. of PACT, 2014.
[13]
G. Chadha, S. Mahlke, and S. Narayanasamy, "Accelerating asynchronous programs through event sneak peek," in Proc. of ISCA, 2015.
[14]
"Etherpad Lite." https://github.com/ether/etherpad-lite.
[15]
"Let's Chat." https://github.com/sdelements/lets-chat.
[16]
"Lighter." https://github.com/mehfuzh/lighter.
[17]
"Mud." https://github.com/gumho/simple-node.js-mud.
[18]
"Todo." https://github.com/amirrajan/nodejs-todo.
[19]
"Word Finder." https://github.com/amirrajan/word-finder.
[20]
D. A. Wood and M. D. Hill, "Cost-effective parallel computing," in IEEE Computer, 1995.
[21]
"Exclusive: How linkedin used node.js and html5 to build a better, faster app." https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/.
[22]
"Node.js at paypal." https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/.
[23]
"Projects, applications, and companies using node." https://github.com/joyent/node/wiki/Projects,-Applications, -and-Companies-Using-Node.
[24]
"How we built ebay's first node.js application." http://www.ebaytechblog.com/2013/05/17/how-we-built-ebays-first-node-js-application/.
[25]
"Why Apps for Messaging Are Trending." http://www.nytimes.com/2015/01/26/technology/why-apps-for-messaging-are-trending.html.
[26]
"Autocomplete for Addresses and Search Terms." https://developers.google.com/maps/documentation/javascript/places-autocomplete.
[27]
Joyent, Inc., "Node.js Cluster." https://nodejs.org/api/cluster.html.
[28]
K. Flautner, R. Uhlig, S. Reinhardt, and T. Mudge, "Thread-level parallelism and interactive performance of desktop applications," in Proc. of ASPLOS, 2000.
[29]
"Node.js high availability at box." https://www.box.com/blog/node-js-high-availability-at-box/.
[30]
"libuv." https://github.com/libuv/libuv/.
[31]
"Chrome V8." https://developers.google.com/v8/.
[32]
M. Ferdman, A. Adileh, O. Kocberber, S. Volos, M. Alisafaee, D. Jevdjic, C. Kaynak, A. D. Popescu, A. Ailamaki, and B. Falsafi, "Clearing the clouds: A study of emerging scale-out workloads on modern hardware," in Proc. of ASPLOS, 2012.
[33]
C. Ranger, R. Raghuraman, A. Penmetsa, G. Bradski, and C. Kozyrakis, "Evaluating mapreduce for multi-core and multiprocessor systems," in Proc. of HPCA, 2007.
[34]
L. Wang, J. Zhan, C. Luo, Y. Zhu, Q. Yang, Y. He, W. Gao, Z. Jia, Y. Shi, S. Zhang, C. Zheng, G. Lu, K. Zhan, X. Li, and B. Qiu, "Bigdatabench: a big data benchmark suite from internet services," in Proc. of HPCA, 2014.
[35]
I. Atta, P. Tozun, A. Ailamaki, and A. Moshovos, "Slicc: Self-assembly of instruction cache collectives for oltp workloads," in Proc. of MICRO, pp. 188--198, 2012.
[36]
S. Eyerman, L. Eeckhout, T. Karkhanis, and J. E. Smith, "A performance counter architecture for computing accurate cpi components," in Proc. of ASPLOS, 2006.
[37]
W. Heirman, T. E. Carlson1, S. Che, K. Skadron, and L. Eeckhout, "Using cycle stacks to understand scaling bottlenecks in multi-threaded workloads," in Proc. of IISWC, 2011.
[38]
T. E. Carlson, W. Heirman, S. Eyerman, I. Hur, and L. Eeckhout, "An evaluation of high-level mechanistic core models," in ACM Transactions on Architecture and Code Optimization (TACO), 2014.
[39]
K. Hoste and L. Eeckhout, "Microarchitecture-independent workload characterization," in IEEE Micro, 2007.
[40]
"Intel 64 and ia-32 architectures optimization reference manual," 2014.
[41]
B. Pham, V. Vaidyanathan, A. Jaleel, and A. Bhattacharjee, "Colt: Coalesced large-reach tlbs," in Prof. of MICRO, 2012.
[42]
G. B. Kandiraju and A. Sivasubramaniam, "Characterizing the d-tlb behavior of spec cpu2000 benchmarks," in Proc. of SIGMETRICS, 2002.
[43]
J. Navarro, S. Iyer, P. Druschel, and A. Cox, "Practical, transparent operating system support for superpages," in Proc. of OSDI, 2002.
[44]
A. Phansalkar, A. Joshi, and L. K. John, "Analysis of redundancy and application balance in the spec cpu2006 benchmark suite," in Proc. of ISCA, 2007.
[45]
A. Basu, M. D. Hill, and M. M. Swift, "Reducing memory reference energy with opportunistic virtual caching," in Proc. of ISCA, 2014.
[46]
A. Sodani, "Exascale: Opportunities and challenges," in MICRO 2011 Keynote address, 2011.
[47]
"Intel 64 and ia-32 architectures optimization reference manual." http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf.
[48]
M. Talluri, S. Kong, M. D. Hill, and D. A. Patterson, "Tradeoffs in supporting two page sizes," in Proc. of ISCA, 1992.
[49]
M. K. Qureshi, A. Jaleel, Y. N. Patt, S. C. S. Jr., and J. Emer, "Adaptive insertion policies for high performance caching," in Proc. of ISCA, 2007.
[50]
C. G. Nevill-Manning and I. H. Witten, "Identifying hierarchical structure in sequences: A linear-time algorithm," in Journal of Artificial Intelligence Research, 1997.
[51]
M. Ferdman, T. F. Wenisch, A. Ailamaki, B. Falsafi, and A. Moshovos, "Temporal instruction fetch streaming," in Proc. of MICRO, 2008.
[52]
E. Ebrahimi, O. Mutlu, C. J. Lee, and Y. N. Patt, "Coordinated control of multiple prefetchers in multi-core systems," in Proc. of MICRO, 2009.
[53]
E. Ebrahimi, O. Mutlu, and Y. N. Patt, "Techniques for bandwidth-efficient prefetching of linked data structures in hybrid prefetching systems," in HPCA, 2009.
[54]
"Cacti 5.3." http://www.hpl.hp.com/research/cacti.
[55]
C. Bienia, S. Kumar, J. P. Singh, and K. Li, "The parsec benchmark suite: Characterization and architectural implications," in Proc. of PACT, 2008.
[56]
S. Kanev, J. P. Darago, K. Hazelwood, P. Ranganathan, T. Moseley, G.-Y. Wei, D. Brooks, et al., "Profiling a warehouse-scale computer," in Proc. of ISCA, 2015.
[57]
K. Lim, D. Meisner, A. G. Said, P. Ranganathan, and T. F. Wenisch, "Thin servers with smart pipes: Designing soc accelerators for memcached," in Proc. of ISCA, 2013.
[58]
K. Lim, P. Ranganathan, J. Chang, C. Patel, T. Mudge, and S. Reinhardt, "Understanding and designing new server architectures for emerging warehouse-computing environments," in Proc. of ISCA, 2008.
[59]
V. S. Pai, P. Druschel, and W. Zwaenepoel, "Flash: An efficient and portable web server," in Proc. of USENIX ATC, 1999.
[60]
J. C. Hu, I. Pyarali, and D. C. Schmidt, "High performance web servers on windows nt: Design and performance," in Proc. of USENIX Windows NT Workshop, 1997.
[61]
J. Grossman, J. S. Kuskin, J. A. Bank, M. Theobald, R. O. Dror, D. J. Ierardi, R. H. Larson, U. B. Schafer, B. Towles, C. Young, and D. E. Shaw, "Hardware support for fine-grained event-driven computation in anton 2," in Proc. of ASPLOS, 2013.
[62]
B. Wang, Y. Zhu, and Y. Deng, "Distributed time, conservative parallel logic simulation on gpus," in Proc. of DAC, 2010.
[63]
R. W. Scheifler and J. Gettys, "The x window system," in Proc. of ACM Transactions on Graphics, 1986.
[64]
M. Hempstead, N. Tripathi, P. Mauro, G.-Y. Wei, and D. Brooks, "An ultra low power system architecture for sensor network applications," in Proc. of ISCA, 2005.
[65]
Y. Zhu, M. Halpern, and V. J. Reddi, "Event-based scheduling for energy-efficient qos (eqos) in mobile web applications," in Proc. of HPCA, 2015.
[66]
G. Richards, S. Lebresne, B. Burg, and J. Vitek, "An analysis of the dynamic behavior of javascript programs," in Proc. of PLDI, 2010.
[67]
W. Ahn, J. Choi, T. Shull, M. J. Garzarán, and J. Torrellas, "Improving javascript performance by deconstructing the type system," in Prof. of PLDI, 2014.
[68]
T. Ogasawara, "Workload characterization of server-side javascript," in Proc. of IISWC, 2014.

Cited By

View all
  • (2023)Optimizing Application Throughput with Condition-based Autoscaling and Employing Alternatives to Scaling In/OutProceedings of the 33rd Annual International Conference on Computer Science and Software Engineering10.5555/3615924.3615933(84-93)Online publication date: 11-Sep-2023
  • (2023)Protean: Resource-efficient Instruction PrefetchingProceedings of the International Symposium on Memory Systems10.1145/3631882.3631904(1-13)Online publication date: 2-Oct-2023
  • (2023)Warming Up a Cold Front-End with IgniteProceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/3613424.3614258(254-267)Online publication date: 28-Oct-2023
  • Show More Cited By

Index Terms

  1. Microarchitectural implications of event-driven server-side web applications

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    MICRO-48: Proceedings of the 48th International Symposium on Microarchitecture
    December 2015
    787 pages
    ISBN:9781450340342
    DOI:10.1145/2830772
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 05 December 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. JavaScript
    2. event-driven
    3. microarchitecture
    4. prefetcher

    Qualifiers

    • Research-article

    Conference

    MICRO-48
    Sponsor:

    Acceptance Rates

    MICRO-48 Paper Acceptance Rate 61 of 283 submissions, 22%;
    Overall Acceptance Rate 455 of 2,084 submissions, 22%

    Upcoming Conference

    MICRO '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)45
    • Downloads (Last 6 weeks)7
    Reflects downloads up to 16 Oct 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Optimizing Application Throughput with Condition-based Autoscaling and Employing Alternatives to Scaling In/OutProceedings of the 33rd Annual International Conference on Computer Science and Software Engineering10.5555/3615924.3615933(84-93)Online publication date: 11-Sep-2023
    • (2023)Protean: Resource-efficient Instruction PrefetchingProceedings of the International Symposium on Memory Systems10.1145/3631882.3631904(1-13)Online publication date: 2-Oct-2023
    • (2023)Warming Up a Cold Front-End with IgniteProceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/3613424.3614258(254-267)Online publication date: 28-Oct-2023
    • (2023)Ditto: End-to-End Application Cloning for Networked Cloud ServicesProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575751(222-236)Online publication date: 27-Jan-2023
    • (2023)An exploratory case study using events as a software size measureInformation Technology and Management10.1007/s10799-023-00394-y24:3(293-312)Online publication date: 13-Apr-2023
    • (2022)Lukewarm serverless functionsProceedings of the 49th Annual International Symposium on Computer Architecture10.1145/3470496.3527390(757-770)Online publication date: 18-Jun-2022
    • (2022)Supervisory Event Loop-based Autoscaling of Node.js Deployments2022 International Conference on High Performance Big Data and Intelligent Systems (HDIS)10.1109/HDIS56859.2022.9991325(1-7)Online publication date: 10-Dec-2022
    • (2022)Quantifying the interpretation overhead of PythonScience of Computer Programming10.1016/j.scico.2021.102759215:COnline publication date: 1-Mar-2022
    • (2021)SeBSProceedings of the 22nd International Middleware Conference10.1145/3464298.3476133(64-78)Online publication date: 6-Dec-2021
    • (2020)Software evaluation methodology of Node.js parallelism under variabilities in scalable systemsProceedings of the 30th Annual International Conference on Computer Science and Software Engineering10.5555/3432601.3432615(103-112)Online publication date: 10-Nov-2020
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media