Presented by

  • Matthew Wilcox

    Matthew Wilcox

    Matthew is a Technical Advisor for Oracle in the Linux Kernel Development group. He has been contributing to Linux since 1997. Some of his more notable contributions are to NVM Express, DAX and the PA-RISC architecture.

Abstract

Since 2002, Linux has used huge pages to improve CPU performance. Originally, huge pages supported 2MB pages on x86. They evolved to support other architectures and, eventually, 1GB pages on x86. Despite this relative success, the huge page mechanism is not flexible enough to support related hardware features. One desirable feature is a "medium" large page size (e.g., ARM CPUs support a 64kB page size). Another is a larger page size (e.g., some network devices support pages as large as 2GB). In this talk, I will argue that using larger pages to reduce software overhead is as important as enabling hardware optimisations. I'll talk about the recent patches to improve the performance of larger pages in the page cache. I'll also talk about patches to bring support for larger pages to normal filesystems. And I'll talk about some of the downsides of using larger pages, and some of the future limitations of using larger pages. This talk is for kernel developers and those who are interested in learning more about how some hardware works. Since these optimisations are supposed to be transparent to user space, no changes should be needed to userspace code to take advantage of them. End users should only notice their web browsers running faster, their database queries completing faster and their birds being slightly less angry.