{"id":277,"date":"2021-08-31T14:40:23","date_gmt":"2021-08-31T14:40:23","guid":{"rendered":"https:\/\/fde.cat\/?p=277"},"modified":"2021-08-31T14:40:23","modified_gmt":"2021-08-31T14:40:23","slug":"boosting-the-performance-of-virtual-machines-with-jump-start","status":"publish","type":"post","link":"https:\/\/fde.cat\/index.php\/2021\/08\/31\/boosting-the-performance-of-virtual-machines-with-jump-start\/","title":{"rendered":"Boosting the performance of virtual machines with Jump-Start"},"content":{"rendered":"<h2><span>What the research is:<\/span><\/h2>\n<p><span>Jump-Start is a new approach for improving the performance of virtual machines at scale. Virtual machines are a modern and popular design to implement programming languages used to build applications in general, including large-scale websites like Facebook and Instagram. However, virtual machines incur well-known performance overhead in terms of the amount of memory and CPU resources required, particularly during the application\u2019s warm-up phase, when the code is being profiled and translated from the virtual machine\u2019s abstract language into real machine code by a just-in-time (JIT) compiler.<\/span> <span>We have developed the Jump-Start method to reduce virtual machines\u2019 overhead during the warm-up phase.\u00a0<\/span><\/p>\n<p><span>Jump-Start has successfully been implemented in the <\/span><a href=\"https:\/\/docs.hhvm.com\/hhvm\/getting-started\/getting-started\"><span>HipHop Virtual Machine<\/span><\/a><span> (HHVM), which powers not only Facebook.com but also many other sites across the web. HHVM Jump-Start has been deployed across our data centers, and our evaluation demonstrates that it reduces HHVM\u2019s overhead by 54.9 percent during warm-up for Facebook\u2019s apps and websites. Jump-Start has been used to improve our website\u2019s performance by 5.4 percent in steady state, i.e., even after HHVM is warmed up. Jump-Start is not only the first technique to address the warm-up overhead of virtual machines at scale but also the first to boost steady-state performance.<\/span><\/p>\n<h2><span>How it works:\u00a0<\/span><\/h2>\n<p><span>Like many advanced JIT compilers, in order to produce high-performance machine code, the HHVM JIT compiles the code twice: first to collect profile data about the application\u2019s behavior, and then to produce optimized code leveraging that profile data. Although this approach results in much better steady-state performance, it also incurs significant warm-up overhead by compiling the code twice and waiting to collect profile data.<\/span><\/p>\n<p><span>In order to greatly reduce HHVM\u2019s warm-up overhead, Jump-Start leverages our phased rollout. To keep Facebook running smoothly and add new features, updates are made every few hours. Each time, our global fleet of web servers (running HHVM) is restarted in three phases. In the first phase (C1), we restart a very small fraction of the servers. In the second phase (C2), we restart approximately 2 percent of the servers, and finally, in phase C3, we restart the remaining servers. This phased rollout was designed to provide enough signal about the health of the new version being rolled out to allow us to halt the rollout, if necessary, before the update has been deployed to the entire server fleet.<\/span><\/p>\n<p><span>Jump-Start leverages the phased rollout of Facebook to avoid some of HHVM\u2019s overhead during warm-up. More specifically, the profile data collected by the servers in C2 is shared with all the servers in C3. This way, the vast majority of our web servers can skip both the compilation of profiling code and the execution of this code to collect profile data. Furthermore, because only a small portion of the server fleet experiences the JIT profiling overhead, Jump-Start allows for more thorough profiling of the application. This enabled us not only to improve the effectiveness of the previous HHVM\u2019s profile-guided optimization but also add new optimizations that further improved HHVM\u2019s steady-state performance.<\/span><\/p>\n<h2><span>Why it matters:\u00a0<\/span><\/h2>\n<p><span>The Jump-Start technique has significantly improved HHVM\u2019s warm-up and steady-state performance. These improvements have enabled the continuous deployment of Facebook, which both improves developers\u2019 productivity and increases the speed at which new features are rolled out to the people who use Facebook. By improving HHVM\u2019s performance during warm-up, Jump-Start also reduces the latency observed by the people who use Facebook and allows for seamless updates to the website. By improving HHVM\u2019s steady-state performance, Jump-Start improves the efficiency and reduces the footprint of the server fleet that powers Facebook. Although this work describes and evaluates the Jump-Start technique only in the context of HHVM, this same approach can be used to improve the performance of other virtual machines.<\/span><\/p>\n<h2>Read the full paper:<\/h2>\n<p><a href=\"https:\/\/research.fb.com\/publications\/hhvm-jump-start-boosting-both-warmup-and-steady-state-performance-at-scale\/\"><span>HHVM Jump-Start: Boosting both warmup and steady-state performance at scale<\/span><\/a><\/p>\n<p>The post <a rel=\"nofollow\" href=\"https:\/\/engineering.fb.com\/2021\/03\/03\/developer-tools\/hhvm-jump-start\/\">Boosting the performance of virtual machines with Jump-Start<\/a> appeared first on <a rel=\"nofollow\" href=\"https:\/\/engineering.fb.com\/\">Facebook Engineering<\/a>.<\/p>\n<p><a href=\"https:\/\/engineering.fb.com\/2021\/03\/03\/developer-tools\/hhvm-jump-start\/\" target=\"_blank\" rel=\"noopener\">Read More<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What the research is: Jump-Start is a new approach for improving the performance of virtual machines at scale. Virtual machines are a modern and popular design to implement programming languages used to build applications in general, including large-scale websites like Facebook and Instagram. However, virtual machines incur well-known performance overhead in terms of the amount&hellip; <a class=\"more-link\" href=\"https:\/\/fde.cat\/index.php\/2021\/08\/31\/boosting-the-performance-of-virtual-machines-with-jump-start\/\">Continue reading <span class=\"screen-reader-text\">Boosting the performance of virtual machines with Jump-Start<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-277","post","type-post","status-publish","format-standard","hentry","category-technology","entry"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":728,"url":"https:\/\/fde.cat\/index.php\/2023\/06\/27\/meta-developer-tools-working-at-scale\/","url_meta":{"origin":277,"position":0},"title":"Meta developer tools: Working at scale","date":"June 27, 2023","format":false,"excerpt":"Every day, thousands of developers at Meta are working in repositories with millions of files. Those developers need tools that help them at every stage of the workflow while working at extreme scale. In this article we\u2019ll go through a few of the tools in the development process. And, as\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":604,"url":"https:\/\/fde.cat\/index.php\/2022\/07\/06\/watch-metas-engineers-discuss-quic-and-tcp-innovations-for-our-network\/","url_meta":{"origin":277,"position":1},"title":"Watch Meta\u2019s engineers discuss QUIC and TCP innovations for our network","date":"July 6, 2022","format":false,"excerpt":"With more than 75 percent of our internet traffic set to use QUIC and HTTP\/3 together, QUIC is slowly moving to become the de facto protocol used for internet communication at Meta. For Meta\u2019s data center network, TCP remains the primary network transport protocol that supports thousands of services on\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":644,"url":"https:\/\/fde.cat\/index.php\/2022\/10\/24\/how-salesforce-built-a-cloud-native-task-execution-service\/","url_meta":{"origin":277,"position":2},"title":"How Salesforce Built a Cloud-Native Task Execution Service","date":"October 24, 2022","format":false,"excerpt":"If you\u2019re paying attention to Salesforce technology, you\u2019ve no doubt heard about\u00a0Hyperforce, our new approach to deploying Salesforce on public cloud providers. Start with\u00a0a look at Hyperforce\u2019s architecture. There are many compelling reasons to move to Hyperforce, both for us and our customers. We\u2019re excited to do it in the\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":719,"url":"https:\/\/fde.cat\/index.php\/2023\/05\/23\/automation-at-scale-migrating-200000-machines-from-centos-7-to-rhel-9\/","url_meta":{"origin":277,"position":3},"title":"Automation at Scale: Migrating 200,000 Machines from CentOS 7 to RHEL 9","date":"May 23, 2023","format":false,"excerpt":"When a legacy operating system (OS) approaches its end-of-support date, some organizations will upgrade their OS as fast as possible. Others may kick the can down the road, delaying any headaches they might encounter during the upgrade process. Six years ago, Salesforce Engineering put the pedal to the metal, migrating\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":897,"url":"https:\/\/fde.cat\/index.php\/2024\/07\/16\/ai-lab-the-secrets-to-keeping-machine-learning-engineers-moving-fast\/","url_meta":{"origin":277,"position":4},"title":"AI Lab: The secrets to keeping machine learning engineers moving fast","date":"July 16, 2024","format":false,"excerpt":"The key to developer velocity across AI lies in minimizing time to first batch (TTFB) for machine learning (ML) engineers. AI Lab is a pre-production framework used internally at Meta. It allows us to continuously A\/B test common ML workflows \u2013 enabling proactive improvements and automatically preventing regressions on TTFB.\u00a0\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":818,"url":"https:\/\/fde.cat\/index.php\/2024\/01\/29\/improving-machine-learning-iteration-speed-with-faster-application-build-and-packaging\/","url_meta":{"origin":277,"position":5},"title":"Improving machine learning iteration speed with faster application build and packaging","date":"January 29, 2024","format":false,"excerpt":"Slow build times and inefficiencies in packaging and distributing execution files were costing our ML\/AI engineers a significant amount of time while working on our training stack. By addressing these issues head-on, we were able to reduce this overhead by double-digit percentages.\u00a0 In the fast-paced world of AI\/ML development, it\u2019s\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/comments?post=277"}],"version-history":[{"count":1,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/277\/revisions"}],"predecessor-version":[{"id":433,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/posts\/277\/revisions\/433"}],"wp:attachment":[{"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/media?parent=277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/categories?post=277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fde.cat\/index.php\/wp-json\/wp\/v2\/tags?post=277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}