Comment by jorvi

Comment by jorvi 3 days ago

13 replies

I really dislike that Linux proper doesn't by default have x.xx-server, x.xx-workstation, x.xx-laptop and x.xx-desktop kernel variants. Or just doesn't have defaults, requiring distros to think about what to set during compilation.

A lot of the current defaults stem from the 90s, and often were eyeballed by the creator of said code. They're not good defaults for modern servers nor workstations nor laptops nor desktops. And all of those devices work best with different defaults.

It doesn't seem (yes, appearances can be deceiving) to be that much work, because no extra code needs to be written. For each variant, just set different default parameter values for stuff like swappiness, lazy RCUs and what not. Make it a thing to revisit the defaults every 10 years.

CachyOS and some other distros already do this, but a big chunk of distros doesn't because they think the defaults are well-thought out.

embedding-shape 3 days ago

> CachyOS and some other distros already do this, but a big chunk of distros doesn't because they think the defaults are well-thought out.

Based on what I saw 1-2 years ago last time I looked at it, most distributions to customize and don't use the defaults straight up. From memory, so someone correct me if I'm wrong:

- RHEL/SLES - Lots of patches to kernels

- Arch - Closer to just using defaults, some config choices and downstream adjustments (so the opposite of CachyOS almost, which is why we have CachyOS in the first place)

- Ubuntu - Probably the most patched distribution compared to upstream components, also includes a lot of Canonical-specific stuff on top of that.

- Fedora - Has some bleeding edge bits and bobs

- Debian - Bit more conservative than Ubuntu, but still has patches for stability, security and backports.

In my experience, distributions changing the defaults and customizations seems to be the norm rather than the exception.

  • dabockster 3 days ago

    > In my experience, distributions changing the defaults and customizations seems to be the norm rather than the exception.

    Which makes each and every one of those totally different operating systems that can run similar code to each other. We need to stop thinking of these as Linux "distros" and start thinking of these as totally separate and distinct operating systems that are based around the Linux kernel. Sort of like a business cooperative model.

  • lazylizard 2 days ago

    yes. i use rhel+derivatives in the datacenter and ubuntu+derivatives outside it. in general. theres an OS for every purpose..or something like that...

bflesch 3 days ago

I love the separation of concerns. It provides an amazing terminal-first kernel and everything graphical is maintained by various different organizations, and you can choose between many different options.

Maintaining a large distro is extremely difficult and every decision has several trade-offs.

malwrar 3 days ago

Why would you want different kernels for different device types?

Genuine question! I maintain my own Linux distro (upstream Linux + portage) for all my devices and haven’t found much reason to go beyond kernel per arch. I’m curious if there’s something I could be missing.

  • jorvi 3 days ago

    Well, for the two examples I named:

    vm.swappiness defaults to 60, which is default from when everyone was still running spinning rust with a swap partition. Servers these days usually have very specific storage+memory configurations, whereas the usual desktop or laptop has an SSD and 16GB+ of RAM with RAM compression expanding it.

    Lazy RCU loading is good on a laptop because you only lose about 10% performance and only with specific workloads, but your idle and light load energy consumption improves. Most laptops spend like 95%+ in light or idle load scenarios. Conversely, on a desktop you don't care (much) about idle and light load energy consumption, you only care about keeping max load consumption low enough so that your fans stay quiet. And on a workstation you don't care about a system being whisper quiet so you can go nuts with the energy consumption.

    • prmoustache 3 days ago

      > vm.swappiness defaults to 60, which is default from when everyone was still running spinning rust with a swap partition. Servers these days usually have very specific storage+memory configurations, whereas the usual desktop or laptop has an SSD and 16GB+ of RAM with RAM compression expanding it.

      You don't need to compile a specific kernel for that, this is setup via sysctl.

    • jcalvinowens 3 days ago

      > Lazy RCU loading is good on a laptop

      Do you mean RCU_LAZY? Most distros will already enable that: it doesn't do anything without rcu_nocbs, so there's no negative impact on server workloads.

          [calvin@debian-trixie ~] grep RCU_LAZY /boot/config-6.12.57+deb13-amd64
          CONFIG_RCU_LAZY=y
          # CONFIG_RCU_LAZY_DEFAULT_OFF is not set
          [calvin@debian-trixie ~] grep RCU_NOCB_CPU /boot/config-6.12.57+deb13-amd64 
          CONFIG_RCU_NOCB_CPU=y
          # CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set
      
      https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

      You just have to set rcu_nocbs on the kernel cmdline.

    • johnny22 3 days ago

      Swappiness and many others can be changed by some sort of system preset rather built that way. I know not ALL options can be done that way, but I'd want to see changes start there where feasible.

    • malwrar 3 days ago

      I totally missed that part of your comment, my bad. Thanks for elaborating on those, I feel inspired to experiment!

      So far my kernel journey has been about making my hardware work + enabling features, and that’s mostly how I’ve been discovering config options. Do you have any suggestions on where one aught to read further on this sort of kernel tuning?

      EDIT: doing some further research, couldn’t you just set those options via sysctl w/o needing to build a separate kernel?

      • jorvi 2 days ago

        Yes you can adjust them via sysctl or directly as kernel parameter arguments. That isn't my point. My point is that Linux has some horrible defaults :+)

        • malwrar a day ago

          Makes sense! Thanks for turning me on to them, I hadn’t come across those yet in my journey.

  • embedding-shape 2 days ago

    I generally have three types of Linux devices I typically use. My desktop, servers locally/remotely, and "mobile" devices (more like tablets I guess).

    For the first, I want the lowest latency for everything I do, together with the highest burstable speed whenever possible, for pretty much all the components.

    For the servers, I basically have two types, one which does storage, they just need large disks that can be slow, and one which users actually connect to, that one needs focus on throughput, latency and performance isn't as important as "can serve all requests in a reasonable timeframe, even under load".

    Finally, many of the portable devices run on batteries, so on those the focus is power-saving, even if it compromises on performance.

    I'm sure others out there have more device types, like ultraweight watches, security devices, monitors, radios and much more. Each one of these have different tradeoffs, and tuning the kernel and OS for each use case makes it a lot better usually. Personally I use NixOS for everything except my desktop (CachyOS right now!), and it makes it really trivial to create profiles based on the same configuration, deployed to all devices, and today they're are tuned for exactly their purpose, as Linus intended :)