With the transition of enterprise workloads into the cloud, the number of Oracle workloads running on Linux continues to increase. Oracle has long invested in Linux (the first commercial database on Linux in 1998, the first cluster filesystem on Linux--OCFS2--a few years later), and with the continued shift towards cloud we want to ensure the best possible experience for customers running enterprise workloads on Linux. Our development effort focuses on performance, stability and ease-of-use with an eye towards traditional enterprise and cloud-oriented workloads.
Oracle is a consistent and long-time contributor to the Linux community. Since 2007 we have contributed more than 400,000 lines of code to Linux, been ranked in the top 15 corporate contributors to Linux, and add just under 2% of the kernel in each new release cycle. Oracle maintainers have committed more than 7,500 changesets to the kernel. If you're using a filesystem other than ext4, chances are it was written at Oracle or contains significant improvements from Oracle: whether it's NFS, where we've been significant contributors for years; btrfs, which was originally written and submitted at Oracle; or xfs, where the upstream kernel maintainer works at Oracle. For us, improving Linux means better performance, better security, and better diagnosability. We also focus on the fundamentals of the OS, improving the scheduler and core memory allocation routines.
Oracle is a long-time contributor to Linux and we have always had a strong emphasis on upstreaming and open-sourcing our changes to the kernel. We have never tried to keep our Linux changes in-house; we have always published the full source of our enterprise kernels, along with their full git commit histories, on the public internet. We believe that the competitive advantage of being able to rapidly bring mainline Linux improvements to our customers vastly outweighs any perceived benefit of keeping those changes in-house. Keeping our changes open source allows us to integrate with upstream Linux kernels quickly, which also means we have state-of-the-art drivers and filesystems, hardware support, and security fixes from the community...in addition to the work we have contributed ourselves.
But the integration with upstream code is only one aspect of how working with the kernel community benefits Oracle. The real benefit of working with the upstream Linux community comes from the ability to work together and invent collaborative solutions that solve generic problems. We'll often find projects that seem particular to our own use of the kernel, but once the conversation is opened up with the community we discover that we are not the only users with this problem, and that with a few tweaks (and sometimes none at all) we can contribute a general solution which has broader benefits. A few examples of specific problems that ended up being general problems include enhancements to hugetlbfs and userfaultfd (originally proposed for the Oracle database but having a significant benefit for enhancing post-copy live migration in kvm) and the proposal for a userspace contiguous memory allocation mechanism in the kernel (for which a proposal was presented at the most recent Linux Plumbers Conference).
Even as Linux has become the de facto standard for cloud deployments, a large proportion of Linux development continues to focus on small device, Android and IoT class workloads (for example, ARM specific patches comprise 25%+ of the patches to KVM). By contrast, our focus is to bring our long history of optimizing TPC-C benchmarks and increasing IO throughput on database workloads to ensure that Linux continues to be a top performer for large server systems running large workloads. These days, much less emphasis is given to raw benchmarks, but performance still matters: while an improvement of a few percent may not make an appreciable difference for a particular application or workload, at datacenter scale it can improve overall efficiencies and utilization across the server fleet and helps drive down cloud costs overall. One area of particular interest which we'll be writing about here is how we are improving the startup time performance for Linux systems by parallelizing kernel boot-time tasks, shaving precious seconds off the startup time for bare metal and virtualized workloads.
Even so, performance is no longer the singular objective for enterprise workloads. Usability and seamless integration with other technologies is just as important as pure benchmarks. Being able to seamlessly allocate large pages via hugetlbfs adds an abstraction layer around an existing concept but it also means that customers are more likely to be able to use these features without requiring onerous pre-planning and pre-allocation for such resources.
This blog seeks to introduce the critical role that Linux plays in Oracle success for enterprise workloads and especially in the cloud. Over the coming months, this blog will provide a showcase for the ways that Oracle improves Linux: highlighting the improvements we're making to the kernel, presenting new ideas for improving the OS, and also helping to provide a discussion of the state of the art for areas of the kernel which are so important to Oracle customers. Interested in a specific topic? Leave a comment below!