Skip to content

a-catgirl-dev/linux-catgirl-edition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Linux Catgirl Edition kernel

A custom Linux build system forked from the work by CachyOS, aiming to provide the foundation for compiling highly scalable Linux systems.

To achieve this goal, we provide the option to disable certain Linux kernel features and pull in certain patches.

List of optimizations

Note that the precompiled binaries and PKGBUILD do not enable all of these by default. This list is non-exhaustive.

Review the PKGBUILD file to see the tradeoff(s) (if any) in more detail.

perf:

  • Use Guess unwinder by default (Has zero overhead as opposed to ORC/frame pointer)
  • Fine grained kernel tickrates (default: 1000Hz)
  • Remove paravirtualized layer
  • Google's TCP BBRv3 congestion protocol
  • Disable memory zero-init (dangerous, but is ~1% faster 🚀)
  • Disable stack zero-init (also dangerous, but is faster 🚀)
  • No structure corruption checking (disabled in upstream but arch kernel enables)
  • -march=native (or similar) optimization to guide the compiler to optimize better w.r.t. cache sizes
  • CachyOS kernel patches
  • Choose between BORE, EEVDF, or BMQ schedulers (and also real-time)
  • -O3 optimization (!)
  • Fine grained preemption control (rt, full, lazy, voluntary, none)
  • No module unloading
  • modify_ldt(2) removed for lower context switch latency

size:

  • Remove BUG()
  • Remove coredump support
  • Remove tracing (profiling) infrastructure
  • Remove module decompression in kernel
  • Remove 16/32 bit app support

size & perf:

  • Clang [Thin]LTO;
  • No printk() support. This reduces kernel size (no more strings) and reduces overhead where printk() calls are plenty (eg during boot, resume);
  • Remove scheduler debugging;
  • Trim unused headers to help LTO and optimization if headers are disabled

... aaaand much more that you can still set yourself in make nconfig (in which case, submit a PR!)

What does linux-catgirl-edition not do?

linux-catgirl-edition avoids doing tweaks that can be easier set during runtime instead of compile time. that means sysctl values will still have to be set by you.

this kernel only changes things that cannot be easily changed or straight up impossible to change during runtime (e.g. module support)


Where can I get linux-catgirl-edition?

You can download the precompiled package either from the releases page or build from the actions page.

How do I compile linux-catgirl-edition locally?

  • Clone this repository, and change directory into it.
  • This is important, open the PKGBUILD file and enable or disable any optimizations you may or may not want1.
  • Run the command makepkg -scf --cleanbuild --skipchecksums to install the package.

I don't use Arch Linux (btw)

You can use an Arch Linux docker container to build the kernel. It's probably trivial to turn a .tar.zst into a .deb or whatever packaging type (except for flatpak) you prefer

Footnotes

  1. don't worry, its very documented. and to clarify the important part: many optimizations displayed in the optimizations section are disabled by default because I know some of you will blindly makepkg -s anyway.

About

Striving to offer the best possible Linux experience. No holding back.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages