Language Selection

English French German Italian Portuguese Spanish

Ingo Molnar on "Fast Kernel Headers"

Filed under
Linux
  • "Fast Kernel Headers" Tree -v1: Eliminate the Linux kernel's "Dependency Hell"
    I'm pleased to announce the first public version of my new "Fast Kernel 
    Headers" project that I've been working on since late 2020, which is a 
    comprehensive rework of the Linux kernel's header hierarchy & header 
    dependencies, with the dual goals of:
    
     - speeding up the kernel build (both absolute and incremental build times)
    
     - decoupling subsystem type & API definitions from each other
    
    The fast-headers tree consists of over 25 sub-trees internally, spanning 
    over 2,200 commits, which can be found here:
    
       git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git master
    
    As most kernel developers know, there's around ~10,000 main .h headers in 
    the Linux kernel, in the include/ and arch/*/include/ hierarchies. Over the 
    last 30+ years they have grown into a complicated & painful set of 
    cross-dependencies we are affectionately calling 'Dependency Hell'.
    
  • The fast kernel headers tree

    Kernel developer Ingo Molnar has been quiet for a while; now we know why. He has just announced a massive set of patches (touching over half of the files in the kernel tree) reworking how header files are handled.

And now by Michael Larabel

  • Massive ~2.3k Patch Series Would Improve Linux Build Times 50~80% & Fix "Dependency Hell" - Phoronix

    Longtime Linux kernel developer Ingo Molnar posted a massive set of patches today: 2,297 patches that have been in the works since late 2020 and completely rework the Linux kernel's header file hierarchy. The goal of this "fast kernel headers" effort is to speed up kernel build times and also clean=up a lot of things in the proces to address the "dependency hell".

    This massive set of patches touches most of the Linux kernel code-base as it reworks the header file handling for the kernel builds. But the end result is faster Linux kernel compilations both for clean builds and incremental builds.

    Molnar wrote in the patch cover letter, "As most kernel developers know, there's around ~10,000 main .h headers in the Linux kernel, in the include/ and arch/*/include/ hierarchies. Over the last 30+ years they have grown into a complicated & painful set of cross-dependencies we are affectionately calling 'Dependency Hell'."

A set of patches has been published that speed up the assembly

  • A set of patches has been published that speed up the assembly of the Linux kernel by 50-80%

    Ingo Molnar ( by Ingo Molnar is ), a well-known Linux kernel developer and author of CFS Task Scheduler (Completely Fair Scheduler), proposed for discussion of Linux kernel development mailing list a series of patches, affecting more than half of all the files in the kernel source and provides an increase in the total rebuilding core speed 50-80% depending on the settings. The implemented optimization is remarkable in that it is associated with the addition of the largest set of changes in the history of kernel development – 2297 patches were proposed for inclusion at once, changing more than 25 thousand files (10 thousand header files in the directories “include /” and “arch / * / include / “and 15 thousand source files).

    The performance gain is achieved by changing the method of handling header files. It is noted that over thirty years of kernel development, the state of header files has taken on a depressing form due to the presence of a large number of cross-dependencies between files. The restructuring of the header files took over a year and required a significant redesign of the hierarchy and dependencies. During the restructuring, work was done to separate the type definitions and APIs for different kernel subsystems.

    Among the changes made are: separation of high-level header files from each other, exclusion of inline functions that bind header files, allocation of header files for types and APIs, provision of a separate assembly of header files (about 80 files had indirect dependencies that interfere with assembly, exposed through other header files), automatic addition of dependencies to “.h” and “.c” files, step-by-step optimization of header files, use of the “CONFIG_KALLSYMS_FAST = y” mode, selective consolidation of C files into assembly blocks to reduce the number of object files.

From SJVN

  • Cleaning up the Linux kernel's 'Dependency Hell': This developer is proposing 2,200 commit changes | ZDNet

    Last year, Linux's source code came to a whopping 27.8 million lines of code. It's only gotten bigger since then. Like any 30-year old software project, Linux has picked up its fair share of cruft over the years. Now, after months of work, senior Linux kernel developer Ingo Molnar is releasing his first stab at cleaning it up at a fundamental level with his "Fast Kernel Headers" project.

    The object? No less than a comprehensive clean-up and rework of the Linux kernel's header hierarchy and header dependencies. Linux contains many header, .h, files. To be exact there are about 10,000 main .h headers in the Linux kernel with the include/ and arch/*/include/ hierarchies. As Molnar explained, "Over the last 30+ years they have grown into a complicated & painful set of cross-dependencies we are affectionately calling 'Dependency Hell'."

    To bring rhyme and reason to all this, Molnar is proposing to make 2,200 commit changes to the code. That's a lot of commits! Why so many? Well, Molnar continued, it turns out there's a lot more mess in all that code than he thought there was when he started his clean-up project in late 2020.

The Linux kernel could soon be 50 to 80% faster to build

  • The Linux kernel could soon be 50 to 80% faster to build - CNX Software

    The Linux kernel takes around 5 minutes (without modules) to build on an Intel Core i5 Jasper Lake mini PC with 16 GB RAM and a fast SSD based on our recent review of Beelink GTi 11 mini PC. Kernel developers may have to build for different targets and configurations, plus all modules so the build times may add up. While it is always possible to throw more hardware to quicken the builds, it would be good if significantly faster builts could be achieved with software optimizations.

    That’s exactly what Ingo Molnar has been working on since late 2020 with his “Fast Kernel Headers” project aiming to eliminate the Linux kernel’s “Dependency Hell”. At the time he aimed for a 20% speedup, but a little over one year later, the results are much more impressive with 50 to 80% faster builds depending on the target platform (x86-64, arm64, etc…) and config.

Ingo Molnar is not “solo developer," he has well known employer

  • Linux: A solo developer is attempting to clean up 30 years of mess | TechRadar

    A senior Linux developer believes the platform can be a lot faster and more efficient - if its source code was lighter.

    To make this happen, Ingo Molnar has announced the “Fast Kernel Headers” project, an attempt to clean up and rework Linux kernel's header hierarchy and header dependencies.

    Linux apparently contains around 10,000 main .h header files with the include/ and arch/*/include hierarchies. Molnar says that over the years, these have “grown into a complicated & painful set of cross-dependencies we are affectionately calling 'Dependency Hell'."

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

More in Tux Machines

today's howtos

  • How to install go1.19beta on Ubuntu 22.04 – NextGenTips

    In this tutorial, we are going to explore how to install go on Ubuntu 22.04 Golang is an open-source programming language that is easy to learn and use. It is built-in concurrency and has a robust standard library. It is reliable, builds fast, and efficient software that scales fast. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel-type systems enable flexible and modular program constructions. Go compiles quickly to machine code and has the convenience of garbage collection and the power of run-time reflection. In this guide, we are going to learn how to install golang 1.19beta on Ubuntu 22.04. Go 1.19beta1 is not yet released. There is so much work in progress with all the documentation.

  • molecule test: failed to connect to bus in systemd container - openQA bites

    Ansible Molecule is a project to help you test your ansible roles. I’m using molecule for automatically testing the ansible roles of geekoops.

  • How To Install MongoDB on AlmaLinux 9 - idroot

    In this tutorial, we will show you how to install MongoDB on AlmaLinux 9. For those of you who didn’t know, MongoDB is a high-performance, highly scalable document-oriented NoSQL database. Unlike in SQL databases where data is stored in rows and columns inside tables, in MongoDB, data is structured in JSON-like format inside records which are referred to as documents. The open-source attribute of MongoDB as a database software makes it an ideal candidate for almost any database-related project. This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you the step-by-step installation of the MongoDB NoSQL database on AlmaLinux 9. You can follow the same instructions for CentOS and Rocky Linux.

  • An introduction (and how-to) to Plugin Loader for the Steam Deck. - Invidious
  • Self-host a Ghost Blog With Traefik

    Ghost is a very popular open-source content management system. Started as an alternative to WordPress and it went on to become an alternative to Substack by focusing on membership and newsletter. The creators of Ghost offer managed Pro hosting but it may not fit everyone's budget. Alternatively, you can self-host it on your own cloud servers. On Linux handbook, we already have a guide on deploying Ghost with Docker in a reverse proxy setup. Instead of Ngnix reverse proxy, you can also use another software called Traefik with Docker. It is a popular open-source cloud-native application proxy, API Gateway, Edge-router, and more. I use Traefik to secure my websites using an SSL certificate obtained from Let's Encrypt. Once deployed, Traefik can automatically manage your certificates and their renewals. In this tutorial, I'll share the necessary steps for deploying a Ghost blog with Docker and Traefik.

Red Hat Hires a Blind Software Engineer to Improve Accessibility on Linux Desktop

Accessibility on a Linux desktop is not one of the strongest points to highlight. However, GNOME, one of the best desktop environments, has managed to do better comparatively (I think). In a blog post by Christian Fredrik Schaller (Director for Desktop/Graphics, Red Hat), he mentions that they are making serious efforts to improve accessibility. Starting with Red Hat hiring Lukas Tyrychtr, who is a blind software engineer to lead the effort in improving Red Hat Enterprise Linux, and Fedora Workstation in terms of accessibility. Read more

Today in Techrights

Android Leftovers