Runtimeperformanceoptimizationblueprint Largecodepages Q1update
Runtimeperformanceoptimizationblueprint Largecodepages Q1update
OPTIMIZATION BLUEPRINT:
INTEL® ARCHITECTURE OPTIMIZATION WITH LARGE CODE PAGES
Authors: Suresh Srinivas, Uttam Pawar, Dunni Aribuki, Catalin Manciu, Gabriel Schulhof, Aravinda Prasad
Contact: suresh.srinivas@intel.com
CONTENTS
Abstract ......................................................................................................................................................................... 2
Overview ....................................................................................................................................................................... 2
Problem .................................................................................................................................................................. 2
ITLBs and Stalls ...................................................................................................................................................... 3
Large Pages ........................................................................................................................................................... 4
Diagnosing the Problem ................................................................................................................................................ 4
Are ITLB Misses a Problem? .................................................................................................................................. 4
How do you measure the ITLB Miss Stall? ............................................................................................................ 6
Where are the ITLB Misses coming from? ............................................................................................................. 7
Solution ......................................................................................................................................................................... 7
Linux and Large Pages ........................................................................................................................................... 7
Large Pages for .text ........................................................................................................................................... 8
Reference code ...................................................................................................................................................... 8
Large Pages for the Heap ...................................................................................................................................... 9
Solution Integration ....................................................................................................................................................... 9
V8 integration with the reference implementation ................................................................................................10
Java JVM integration with the reference implementation .....................................................................................10
Limitations ...................................................................................................................................................................10
Case Study ..................................................................................................................................................................11
Ghost.js Workload ................................................................................................................................................11
Web Tooling Workload .........................................................................................................................................12
Node Version .................................................................................................................................................12
Web Tooling ...................................................................................................................................................12
Comparing Clear Linux* OS and Ubuntu*......................................................................................................12
MediaWiki Workload .............................................................................................................................................13
Visualization of benefits ........................................................................................................................................15
Precise Events ...............................................................................................................................................15
Visualizing Precise ITLB Miss ........................................................................................................................15
Summary .....................................................................................................................................................................16
Call to Action .........................................................................................................................................................17
Acknowledgements .....................................................................................................................................................17
References ..................................................................................................................................................................18
Notices and Disclaimers ..............................................................................................................................................19
Test Configuration ................................................................................................................................................20
OVERVIEW
PROBLEM
Modern microprocessors support multiple page sizes for program code. For example, the current generation server
platform Intel® Xeon® 8280 processor (formerly Cascade Lake) supports 4 KB, 2 MB, 4 MB pages for instructions and 4
KB, 2 MB, 4 MB, and 1 GB for data. Intel platforms have supported 4 KB, and 2 MB pages for instructions as far back as
2011 in Intel Xeon E5 processor (formerly Intel® microarchitecture code name Ivy Bridge). Nevertheless, most programs
use only one page size, which is the default of 4 KB. On Linux*, all applications are loaded into 4 KB memory pages by
default. When we examine performance bottlenecks for workloads on language runtimes, we find high stalls due to ITLB
misses. This is largely due to the runtimes using only 4 KB pages for instructions.
Figure 1 shows the CPU stalls resulting from ITLB misses on anIntel Xeon 8180 processor across a range of runtime
workloads. On average, 7% of the cycles are stalled on ITLB misses. Benchmarks such as SPECjbb2015*
(SPECjbb2015, n.d.) have low ITLB stalls (2.6%) compared to SPECjEnterprise* (SPECjEnterprise, n.d.) which has high
ITLB stalls (13%).
Figure 1: ITLB Miss Stalls in Language Runtimes on Intel Xeon 8180 Processor
On the Intel Xeon Platinum 8180 (Intel® microarchitecture code name Skylake), each CPU TLB consists of dedicated L1
TLB for instruction cache (ITLB). (For details, refer to the (Intel 64 and IA-32 Architectures Optimization Reference
Manual).) Additionally, there is a unified L2 Second Level TLB (STLB) which is shared across both Data and Instructions,
as shown below.
▪ TLBs:
▪ ITLB
▪ 4 KB page translations:
▪ 128 entries; 8-way set associative
▪ Dynamic partitioning
▪ 2 MB / 4 MB page translations:
▪ 8 entries per thread; fully associative
▪ Duplicated for each thread
▪ STLB
▪ 4 KB + 2 MB page translations:
▪ 1536 entries; 12-way set associative. fixed partition
When the CPU does not find an entry in the ITLB, it has to do a page walk and populate the entry. A miss in the L1 (first
level) ITLBs results in a very small penalty that can usually be hidden by the Out of Order (OOO) execution. A miss in the
STLB results in the page walker being invoked -- this penalty can be noticeable in the execution. (Intel 64 and IA-32
Architectures Optimization Reference Manual) During this process, the CPU is stalled. The following table lists the TLB
sizes across different Intel product generations.
Table 1: Core TLB Structure Size and Organization across Multiple Intel Product Generations
From Table 1 we can see that 2M page entries are shared in the L2 Unified TLB from Haswell onwards.
LARGE PAGES
Both Windows* and Linux allow server applications to establish large-page memory regions. Using large 2MB pages,
20MB of memory can be mapped with just 10 pages; whereas with 4KB pages, 5120 pages are required. This means
fewer TLB entries are needed, in turn reducing the number of TLB misses. Large pages can be used for code, data, or
both. Large pages for data are good to try if your workload has large heap. The blueprint described here focuses on using
large pages for code.
One of the components of the front-end latency is the ITLB miss stall. This metric represents the fraction of cycles the
CPU was stalled due to instruction TLB misses. On the Intel Xeon Scalable family of processors (formerly Intel®
microarchitecture code name Skylake), ITLB miss stall can be computed through two PMU counters,
ICACHE_64B.IFTAG_STALL and CPU_CLK_UNHALTED.THREAD, using Equation 1.
CPU_CLK_UNHALTED.THREAD 69838983
ICACHE_64B.IFTAG_STALL 7412534
In the Case Study section, we show that even while running in single instance mode, Ghost.js has a 6.47% stall due to
ITLB misses. When large pages are implemented, the performance improves by 5% and the ITLB misses are reduced by
30% and the ITLB Miss Stall is reduced from 6.47% to 2.87% .
Another key metric is the ITLB Misses Per Kilo Instructions (MPKI). This metric is a normalization of the ITLB misses
against number of instructions, and it allows comparison between different systems. This metric is calculated using two
PMU counters ITLB_MISSES.WALK_COMPLETED, and INST_RETIRED.ANY as described in Equation 2. There are distinct
PMU counters for large pages and 4KB pages, so Equation 2 shows the calculation for each PMU counter, respectively.
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀. 𝑊𝑊𝑊𝑊𝑊𝑊𝑊𝑊_𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶_4𝐾𝐾
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_4𝐾𝐾_𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 1000 ∗ ( )
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅. 𝐴𝐴𝐴𝐴𝐴𝐴
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀. 𝑊𝑊𝑊𝑊𝑊𝑊𝑊𝑊_𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶_2𝑀𝑀_4𝑀𝑀
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_2𝑀𝑀_4𝑀𝑀_𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀 = 1000 ∗ ( )
𝐼𝐼𝐼𝐼𝐼𝐼𝐼𝐼_𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅. 𝐴𝐴𝐴𝐴𝐴𝐴
Upon calculating the MPKI for the runtime workloads in Figure 2, we find that the ITLB MPKI and the ITLB 4K MPKI are
very close to each other across the workloads. We can thus infer that most of the misses are from 4KB page walks.
Another observation is that the benchmarks have lower ITLB MPKI than large real-world software, which means that
optimization decisions made on benchmarks might not translate to open source software.
Having ITLB MPKI also enables us to do comparisons across different systems and workloads. Table 3 compiles the ITLB
MPKI across various workloads published in (Ottoni & Bertrand, 2017) and (Lavaee, Criswell, & Ding, Oct 2018). We can
observe that there isn’t a direct correlation of binary size to ITLB MPKI. Some smaller binaries such as MySQL* have one
of the largest ITLB MPKI. When multiple threads are active, the ITLB MPKI almost doubles for both Ghost.js (single
instance vs multi instance) and Clang (-j1 vs -j4). The ITLB MPKI is much lower on newer servers (Intel Xeon 8180
processors) as compared to older generation servers (Intel Xeon E5 processors).
=================================================
Final ITLB_stalls metric
--------------------------------------------------
FORMULA: metric_ITLB_Misses(%) = 100*(a/b)
where, a=icache_64b.iftag_stall
b=cycles
=================================================
metric_ITLB_Misses(%)=3.09
In the case of Ghost.js that we examined earlier, most of the ITLB misses are coming from the .text segment of the
Node.js [Node.js] binary. We find this to be the case for several other Node.js workloads. Using the current release of
node.js (v12.8.0) and the measure-perf-metric.sh tool, we can determine it for a Node.js workload. Figure 4 shows
that 65.23% of the stalls are in the node binary. The ‘-r’ option to measure-perf-metric.sh uses perf record
underneath to record the location in the source code that is causing the ITLB_stalls.
Figure 4: Using measure-perf-metric.sh with -r to determine where the TLB Misses are coming from
On Linux and Windows systems, applications are loaded into memory into 4KB pages, which is the default on most
systems. One way to reduce the ITLB misses is to use the larger page size, which has two benefits. The first benefit is
fewer translations are required leading to fewer page walks. The second benefit is less space is used in the cache for
storing translations, causing more space to be available for the application code. Some older systems, like Intel Xeon E5-
2680 v2 processors (Intel® microarchitecture code name Ivy Bridge), have only eight huge-page ITLB entries that are
organized in a single level, so mapping all the text to large pages could cause a regression. However onIntel Xeon
Platinum 8180 processors (Intel® microarchitecture code name Skylake), the STLB is shared by both 4KB and 2MB
pages and has 1536 entries.
SOLUTION
LINUX AND LARGE PAGES
On Linux OS, there are two ways of using large pages in an application:
● Explicit Huge Pages (hugetlbfs). Part of the system memory is exposed as a file system that applications can
mmap from. You can check the system through cat /proc/meminfo and see if lines like HugePages_Total are
present.
● Transparent Huge Pages (THP). Linux also offers Transparent Hugepage Support, which manages large pages
automatically and is transparent for applications. The application can tell Linux to use large-pages-backed
memory through madvise. You can check the system through cat
/sys/kernel/mm/transparent_hugepage/enabled. If the values are always or madvise, then THP is
available for your application. With madvise, THP is enabled only inside MADV_HUGEPAGE regions. Figure 5 shows
how you can check your distribution for THP.
● Linking runtime with libhugetlbfs: There are a number of support utilities and a library packaged collectively as
libhugetlbfs. The library provides support for automatically backing text, data, heap, and shared memory
segments with huge pages. This relies on explicit huge pages that the system administrator has to manage using
tools like hugeadm.
● Using the Intel Reference Implementation: The reference implementations have both a C and a C++ module
that automates the process using Transparent Huge Pages. A couple of API calls described below may be
invoked at the beginning of the runtime to map a subset of the applications .text segment to 2MB pages.
● Using an explicit option or flag in the runtime: The Node.js runtime has an implementation that is exposed
using --enable-largepages=on when you run Node.js. The PHP runtime has a flag that can be added to the .ini
file. For details, see: https://www.php.net/manual/en/opcache.configuration.php
REFERENCE CODE
This Blueprint offers a reference implementation that enables an application to utilize large pages for its execution. The
open source reference implementation is available for download at http://github.com/intel/iodlr. We provide both a C and
C++ implementation.
The following is a high-level description of the reference implementation and its APIs.
There are five API calls provided in the reference implementation as shown in Figure 6. Since the initial release we have
added the ability to map DSO’s
/* Retrieves an address range from the process' maps file associated with a DSO
whose name matches lib_regex and attempts to map it to large pages */
map_status MapDSOToLargePages(const char* lib_regex);
/* A string containing the textual error message. The string is owned by the
implementation and must not be freed. */
const char* MapStatusStr(map_status status, bool fulltext);
The runtime can allocate heap on large pages using mmap with the flags argument set as MAP_HUGETLB (available since
Linux 2.6.32) or MAP_HUGE_2MB/ MAP_HUGE_1GB (available since Linux 3.8). Alternatively, the heap region can be set to
use transparent huge pages on Linux by using the madvise system call with MADV_HUGE_PAGES. When using madvise,
the runtime must check that transparent_hugepage is set appropriately in the OS as either madvise or always, and not
set to never.
The Java* VM has several options for mapping the Java heap with large pages (Aleksey Shipilev, Redhat, 2019). Since
the JITted code is also on the heap, it allocates both the code and the data to large pages.
-XX:+UseHugeTLBFS mmaps Java* heap into hugetlbfs, which should be prepared separately.
SOLUTION INTEGRATION
Integrating the solution into a new runtime requires the following changes:
1. Follow the style guide of the runtime and update the reference code.
2. Determine in the runtime where to make the API calls to remap the .text segment.
3. Change the build to link with the new files/library.
4. Provide a build time or runtime option to turn on this feature.
Here are the specific steps that we used to integrate the reference implementation within V8:
a. Update out/foo/obj/d8.ninja
Add –Ipath/to/huge_page.h to include_dirs variable
Add -Wl,-T path/to/ld.implicit.script to ldflags variable
b. Update out/foo/toolchain.ninja
Add path/to/libhuge_page.a –lstdc++ to link command, before –Wl,–endgroup
We integrated Intel’s C large pages reference implementation with OpenJDK. Here are the specific steps that we used to
integrate the reference implementation
LIMITATIONS
There are several limitations to be aware of when using large pages:
● Fragmentation is an issue that is introduced when using large pages. If there's insufficient contiguous memory to
assemble the large page, the operating system tries to reorganize the memory to satisfy the large page request,
which can result in longer latencies. This can be mitigated by allocating large pages explicitly ahead of time. The
reference code does not have support for explicit huge pages.
Figure 7: perf output will not have the proper symbols after Large Page Mapping
CASE STUDY
This section details how this optimization helps performance and reduces ITLB misses in three workloads in three
environments. The workloads are:
● Ghost (Ghost Team, n.d.), a fully open source, adaptable platform for building and running a modern online
publication.
● Web Tooling (Google Web Tooling, 2019), a suite designed to measure JavaScript-related workloads.
● MediaWiki* (WikiMedia Foundation, 2019), a free and open-source wiki engine written in PHP.
This case study uses data running on the Intel Xeon Platinum 8180 processor (Intel® microarchitecture code name
Skylake) for Ghost.js and Web Tooling and uses the Intel Xeon D-2100 (Xeon-D, n.d.) processor for MediaWiki to
showcase the benefits of large pages. The last case study demonstrates how to use Visualization tools to identify patterns
in the data.
GHOST.JS WORKLOAD
Ghost is an open source blogging platform written in JavaScript and running on Node.js. We created a workload that has
a single instance of Ghost.js running on Node.js as a server and uses Apache Bench as a client to make requests. The
performance is measured by a metric called Requests Per Second (RPS).
Intel developed and contributed the 2MB for Code PR which is now merged into Node.js master. You can turn on large
pages at runtime with the switch --enable-largepages=on in recent builds of Node.js. In older ones. you can enable large
pages by building with --use-largepages. You can then compare the default build of Node.js with a build configured to
use large pages.
Table 4 shows the key metrics with Node.js and Node.js with large pages. RPS improved by 5%. The stalls due to the
ITLB misses were reduced by 56%. The ITLB MPKI improved by 57%. The gains are mostly coming from the ITLB walk
reduction which was reduced by 55%. Note that the number of 2MB walks increased due to the use of 2MB pages.
Table 4: Key Metrics for Ghost.js With and Without Large Pages
Web Tooling
Web Tooling is a suite designed to measure the JavaScript-related workloads commonly used by web developers, such
as the core workloads in popular tools like Babel or TypeScript. It has a number of sub-components and reports a
throughput score.
Table 5: Key Metrics for Web Tooling across Clear Linux and Ubuntu 18.04
MEDIAWIKI WORKLOAD
MediaWiki is a free and open-source wiki engine written in PHP. We used HHVM 3.25 to execute MediaWiki. HHVM
maps the hot text pages to 2MB pages (Ottoni & Bertrand, 2017) and uses both the 4 KB and 2 MB pages. HHVM
provides command line options -vEval.MaxHotTextHugePages and -vEval.MapTCHuge to enable large pages for the hot
text pages and the Translation Cache pages (which holds the JIT generated code). In addition, it relies on code ordering
to reduce the TLB misses. Table 6 shows the improvement in metrics with large pages. There is a reduction of 16% for
the ITLB miss stalls, a 29% reduction for the overall walks completed, and a 66% reduction in the hits to the shared TLBs.
Intel® microarchitecture code name Skylake introduced new precise frontend events (e.g.,
FRONTEND_RETIRED.ITLB_MISS Counts retired Instructions that experienced ITLB (Instruction TLB) true miss) and we
can see that all those are lower with Large Pages with STLB_MISS reducing by 23%.
Event Description.
FRONTEND_RETIRED.STLB_MISS (2nd level) Retired Instructions following an ITLB & STLB miss (2nd
level)
Figure 8: Using perf record with -e frontend_retired.ITLB_miss to determine ITLB Misses & running
perf script to obtain data for importing into FlameScope.
The output of the perf script can be imported into FlameScope and we can visualize the ITLB Misses. We can see that
some portions of the workload have much more ITLB misses than others. When we compare Figure 9 and Figure 10 we
can see that the heatmap is much sparser for the ITLB misses when we are using Large Pages in Node.js.
Figure 9: Using FlameScope to visualize the ITLB misses heatmap from the WebTooling workload.
SUMMARY
This Runtime Optimization Blueprint described the problem that runtimes have with high ITLB miss stalls, and discussed
how to diagnose the problem as well as techniques and a reference implementation to solve the problem. A case study
showed the benefits of integrating the solution into a new runtime. The three examples in the case study demonstrated
that the use of 2M pages has the potential to improve ITLB Miss Stalls by 43%, ITLB Walks by 45%, and ITLB MPKI by
46%.
● Determine if your workload on a runtime has ITLB miss stalls in the .text segment or in dynamic library.
● Augment the runtime with the Intel Reference solution to solve the problem.
● Contribute any code changes or challenges you faced in integration.
● Contribute your integration to a runtime following their open source methods.
● Partner with Intel to share your solution and effect on your workload with customers.
ACKNOWLEDGEMENTS
The document substantially improved due to the efforts of the reviewers. We want to thank and acknowledge their effort.
Several of our partners and customers provided valuable feedback, including Guilherme Ottoni (Facebook), Vijay
Sundaresan (IBM), Kingsum Chow (Alibaba), and Toon Verwaest (Google). Several Intel engineers provided detailed
feedback, including Sandhya Viswanathan, Milind Damle, Suleyman Sair, Vish Viswanathan, Andres Mejia, Hirally
Santiago, Andrew Brown, Graham Whaley, and Sree Subramoney. Thanks also to Mary Camp and Deb Taylor for their
tech writing, formatting, and staging.
Ahmad, Y. (2017). Performance Monitoring Event List. Retrieved from 01.org: https://download.01.org/perfmon/SKX/
Aleksey Shipilev, Redhat. (2019, 03 03). Transparent Huge Pages. Retrieved from JVM Anatomy Quarks:
https://shipilev.net/jvm/anatomy-quarks/2-transparent-huge-pages/
Ghost Team. (n.d.). Ghost: The professional publishing platform. Retrieved from Ghost Non Profit Web Site:
https://ghost.org/
Google V8 JavaScript. (2019, August). V8 JavaScript Engine. Retrieved from V8 JavaScript Engine: https://v8.dev/
Google Web Tooling. (2019, August). Web Tooling Benchmark. Retrieved from Web Tooling Benchmark:
https://github.com/v8/web-tooling-benchmark
Intel 64 and IA-32 Architectures Optimization Reference Manual. (n.d.). Retrieved from intel.com:
https://software.intel.com/sites/default/files/managed/9e/bc/64-ia-32-architectures-optimization-manual.pdf
Lavaee, R., Criswell, J., & Ding, C. (Oct 2018). Codestitcher: Inter-Procedural Basic Block Layout Optimization.
arXiv:1810.00905v1 [cs.PL].
NodeJS Foundation. (2019, August). Node.js JavaScript Runtime. Retrieved from Node.js JavaScript Runtime:
https://nodejs.org/en
Ottoni, G., & Bertrand, M. (2017). Optimizing Function Placement for Large-Scale Data-Center Applications. CGO 2017.
Panchenko, M. (2017). Building Binary Optimizer with LLVM. Retrieved from LLVM.ORG: https://llvm.org/devmtg/2016-
03/Presentations/BOLT_EuroLLVM_2016.pdf
Panchenko, M., Auler, R., Nell, B., Ottoni, & Guilherme. (n.d.). BOLT: A Practical Binary Optimizer for Datacenters and
Beyond.
SPECjbb2015. (n.d.). SPECjbb2015 Design Document. Retrieved from SPEC - Standard Performance Evaluation
Corporation: https://www.spec.org/jbb2015/docs/designdocument.pdf
SPECjEnterprise. (n.d.). SPECjEnterpise 2018 Web Profile. Retrieved from SPEC - Standard Performance Evaluation
Corporation: https://www.spec.org/jEnterprise2018web/
WikiMedia Foundation. (2019, August). Mediawiki Software. Retrieved from Mediawiki Software:
http://mediawiki.org/wiki/MediaWiki
Differences in hardware, software, or configuration will affect actual performance. Consult other sources of information to evaluate
performance as you consider your purchase. For more complete information about performance and benchmark results, visit
www.intel.com/benchmarks
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service
activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your
system manufacturer or retailer or learn more at www.intel.com
You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel
products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which
includes subject matter disclosed herein.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product
specifications and roadmaps.
The products described may contain design defects or errors known as errata which may cause the product to deviate from published
specifications. Current characterized errata are available on request.
Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or
by visiting: http://www.intel.com/design/literature.htm
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service
activation. Learn more at http://www.intel.com/ or from the OEM or retailer.
Intel, the Intel logo, Intel Core, VTune, and Xeon are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other
countries.
Kernel 4.15.0-58-generic
Microcode 0x200005e
CPU Info
Sockets 2
NUMA Nodes 2
L2 Cache 1024K
L3 Cache 39424K
CVE-2018-3639 OK (Mitigation: Speculative Store Bypass disabled via prctl and seccomp)
CVE-2018-3615 OK (your CPU vendor reported your CPU model as not vulnerable)