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

Sista: Saving Optimized Code in Snapshots for Fast Start-Up

Published: 27 September 2017 Publication History

Abstract

Modern virtual machines for object-oriented languages such as Java HotSpot, Javascript V8 or Python PyPy reach high performance through just-in-time compilation techniques, involving on-the-fly optimization and deoptimization of the executed code. These techniques require a warm-up time for the virtual machine to collect information about the code it executes to be able to generate highly optimized code. This warm-up time required before reaching peak performance can be considerable and problematic. In this paper, we propose an approach, Sista (Speculative Inlining SmallTalk Architecture) to persist optimized code in a platform-independent representation as part of a snapshot. After explaining the overall approach, we show on a large set of benchmarks that the Sista virtual machine can reach peak performance almost immediately after start-up when using a snapshot where optimized code was persisted.

References

[1]
{Annamalai, 2013} Siva Annamalai. Snapshots in Dart, 2013. https://www.dartlang.org/articles/snapshots/.
[2]
{Arnold et al., 2002} Matthew Arnold, Michael Hind, and Barbara G. Ryder. Online feedback-directed optimization of java. In Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '02, pages 111--129, New York, NY, USA, 2002. ACM.
[3]
{Arnold et al., 2005} Matthew Arnold, Adam Welc, and V. T. Rajan. Improving virtual machine performance using a cross-run profile repository. In Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '05, pages 297--311, New York, NY, USA, 2005. ACM.
[4]
{Béra and Miranda, 2014} Clément Béra and Eliot Miranda. A bytecode set for adaptive optimizations. In International Workshop on Smalltalk Technologies 2014, IWST '14, 2014.
[5]
{Black et al., 2009} Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker. Pharo by Example. Square Bracket Associates, Kehrsatz, Switzerland, 2009.
[6]
{Bodík et al., 2000} Rastislav Bodík, Rajiv Gupta, and Vivek Sarkar. ABCD: Eliminating Array Bounds Checks on Demand. In Programming Language Design and Implementation, PLDI '00, pages 321--333, New York, NY, USA, 2000. ACM.
[7]
{Bornstein, 2008} Dan Bornstein. Dalvik virtual machine internal talk, google i/o, 2008.
[8]
{Deutsch and Schiffman, 1984} L. Peter Deutsch and Allan M. Schiffman. Efficient Implementation of the Smalltalk-80 system. In Principles of Programming Languages, POPL '84, pages 297--302, New York, NY, USA, 1984. ACM.
[9]
{Fink and Qian, 2003} Stephen J. Fink and Feng Qian. Design, implementation and evaluation of adaptive recompilation with on-stack replacement. In International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization, CGO '03, pages 241--252, Washington, DC, USA, 2003. IEEE Computer Society.
[10]
{Geoffray, 2015} Nicolas Geoffray. From dalvik to art: Jit! -> aot! -> jit! internal talk, Google compiler phd summit, 2015.
[11]
{Goldberg and Robson, 1983} Adele Goldberg and David Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1983.
[12]
{Google, 2008} Google. V8 source code repository, 2008. https://github.com/v8/v8.
[13]
{Gouy and Brent, 2004} Isaac Gouy and Fulgham Brent. The Computer Language Benchmarks Game, 2004. http://benchmarksgame.alioth.debian.org/.
[14]
{Hölzle and Ungar, 1994} Urs Hölzle and David Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In Programming Language Design and Implementation, PLDI '94, pages 326--336, New York, NY, USA, 1994. ACM.
[15]
{Hölzle et al., 1992} Urs Hölzle, Craig Chambers, and David Ungar. Debugging Optimized Code with Dynamic Deoptimization. In Programming Language Design and Implementation, PLDI '92, pages 32--43, New York, NY, USA, 1992. ACM.
[16]
{Ingalls et al., 1997} Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself. In Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '97, pages 318--326, New York, NY, USA, 1997. ACM.
[17]
{Kawachiya et al., 2007} Kiyokuni Kawachiya, Kazunori Ogata, Daniel Silva, Tamiya Onodera, Hideaki Komatsu, and Toshio Nakatani. Cloneable jvm: A new approach to start isolated java applications faster. In International Conference on Virtual Execution Environments, VEE '07, pages 1--11, New York, NY, USA, 2007. ACM.
[18]
{Krintz and Calder, 2001} Chandra Krintz and Brad Calder. Using annotations to reduce dynamic optimization time. In Programming Language Design and Implementation, PLDI '01, pages 156--167, New York, NY, USA, 2001. ACM.
[19]
{Miranda and Béra, 2015} Eliot Miranda and Clément Béra. A partial read barrier for efficient support of live object-oriented programming. In International Symposium on Memory Management, ISMM '15, pages 93--104, New York, NY, USA, 2015. ACM.
[20]
{Miranda, 2008} Eliot Miranda. Cog Blog: Speeding Up Terf, Squeak, Pharo and Croquet with a fast open-source Smalltalk VM, 2008. http://www.mirandabanda.org/cogblog/.
[21]
{Ogasawara et al., 2001} Takeshi Ogasawara, Hideaki Komatsu, and Toshio Nakatani. A Study of Exception Handling and Its Dynamic Optimization in Java. In Object-oriented Programming, Systems, Languages, and Applications, OOPSLA '01, pages 83--95, New York, NY, USA, 2001. ACM.
[22]
{Oracle, 2007} Oracle. Jrockit, 2007. https://docs.oracle.com/cd/E13188_01/jrockit/docs142/.
[23]
{Oracle, 2011} Oracle. Java HotSpot™ Virtual Machine Performance Enhancements, 2011. http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html.
[24]
{Oracle, 2014} Oracle. The java virtual machine specification, java se 8 edition, 2014.
[25]
{Reddi et al., 2007} Vijay Janapa Reddi, Dan Connors, Robert Cohn, and Michael D. Smith. Persistent code caching: Exploiting code reuse across executions and applications. In Proceedings of the International Symposium on Code Generation and Optimization, CGO '07, pages 74--88, Washington, DC, USA, 2007. IEEE Computer Society.
[26]
{Sun Microsystems, 2006} Inc. Sun Microsystems. Strongtalk official website, 2006. http://www.strongtalk.org/.
[27]
{Systems, 2002} Azul Systems. Azul official website, 2002. https://www.azul.com/.
[28]
{Webkit, 2015} Webkit. Introducing the Webkit FTL JIT, 2015. https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/.

Cited By

View all
  • (2021)HHVM jump-startProceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO51591.2021.9370314(340-350)Online publication date: 27-Feb-2021
  • (2020)Two decades of live coding and debugging of virtual machines through simulationSoftware: Practice and Experience10.1002/spe.284150:9(1629-1650)Online publication date: 8-May-2020
  • (2019)GraalSqueak: toward a smalltalk-based tooling platform for polyglot programmingProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361024(14-26)Online publication date: 21-Oct-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
ManLang 2017: Proceedings of the 14th International Conference on Managed Languages and Runtimes
September 2017
125 pages
ISBN:9781450353403
DOI:10.1145/3132190
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 the author(s) 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].

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 27 September 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Just-in-time compilation
  2. Language virtual machine
  3. Object-oriented language
  4. Runtime compiler

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

ManLang 2017

Acceptance Rates

Overall Acceptance Rate 12 of 25 submissions, 48%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)0
Reflects downloads up to 21 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2021)HHVM jump-startProceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO51591.2021.9370314(340-350)Online publication date: 27-Feb-2021
  • (2020)Two decades of live coding and debugging of virtual machines through simulationSoftware: Practice and Experience10.1002/spe.284150:9(1629-1650)Online publication date: 8-May-2020
  • (2019)GraalSqueak: toward a smalltalk-based tooling platform for polyglot programmingProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3357390.3361024(14-26)Online publication date: 21-Oct-2019
  • (2019)Improving Startup Performance in Dynamic Binary Translators2019 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP)10.1109/EMPDP.2019.8671644(67-74)Online publication date: Feb-2019
  • (2018)Two decades of smalltalk VM development: live VM development through simulation toolsProceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3281287.3281295(57-66)Online publication date: 4-Nov-2018
  • (2018)Assessing primitives performance on multi-stage executionProceedings of the 13th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems10.1145/3242947.3242950(1-10)Online publication date: 17-Jul-2018
  • (2018)GraalSqueakProceedings of the 13th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems10.1145/3242947.3242948(30-35)Online publication date: 17-Jul-2018

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