A faster warm-up for VM-based services
Virtual machines (VMs) remain a common foundation for large-scale applications, but their runtime costs during startup are well documented. The warm-up phase, during which a just-in-time (JIT) compiler profiles and translates the application's abstract code into machine code, is particularly resource-intensive. Jump-Start is a technique designed to cut that overhead, and it has been implemented in the HipHop Virtual Machine (HHVM), which runs Facebook.com and numerous other web properties.
At Facebook's scale, the technique delivers a 54.9 percent reduction in HHVM's warm-up overhead for its applications. It also improves steady-state performance by 5.4 percent, a benefit that previously had not been achieved by warm-up mitigation strategies. Jump-Start is deployed across Facebook's data centers.
Reusing profile data from a phased rollout
Advanced JIT compilers like HHVM's compile code twice: once to gather behavioral profiles, and again to generate optimized machine code from those profiles. This two-pass approach produces strong steady-state performance but doubles compilation work and forces the application to run unoptimized while profile data accumulates.
Jump-Start avoids that repeated work by exploiting the phased rollouts Facebook already performs. Code updates are pushed to the server fleet in stages:
- The first phase (C1) restarts a very small fraction of servers.
- The second phase (C2) restarts roughly 2 percent of servers.
- The final phase (C3) restarts the remainder of the fleet.
These stages exist so that a problematic update can be caught early, before it reaches all machines. Jump-Start adds a second use for them: the profile data generated by servers in C2 is passed to servers in C3. The majority of servers can therefore skip both compiling the profiling code and executing it to collect data. In addition, since only the small C2 population bears the JIT profiling cost, Facebook can run more thorough profiling than before. That has made existing profile-guided optimizations more effective and enabled new optimizations that further improve steady-state HHVM performance.
Operational and performance impact
The improvements from Jump-Start matter on two fronts. Lower warm-up overhead reduces user-visible latency during deployments and makes continuous delivery practical, speeding up both developer iteration and feature rollout. The steady-state gains translate into a smaller overall footprint for the fleet serving Facebook traffic.
The technique is presented in the context of HHVM, but the underlying pattern—capturing JIT profile data from a small slice of a fleet and reusing it across the remainder—is generalizable to other virtual machines that rely on profile-guided JIT compilation.



