Hi guys, I’ve been using Fedora 45 beta since it was released and wanted to share with you guys a little gift, and also get your ideas, on high performance (maximum performance) kernel/system configurations
This is my Hyper Kconfig that I use to maximise performance, actually for regular desktop usage, and as well as building programs from source such as the linux kernel. It includes basic hardening where there isn’t a performance tradeoff, and otherwise seeks to simply maximise performance to the greatest extent possible.
Sometimes I go in and manually modify the Makefile or add patches, but generally I just use the default facillities for modifying the kernel through make menuconfig
It could be improved a lot more, and fine tuned for a specific system, but this is the generic Hyper Kernel config, based off the stock Libre-Linux Kconfig that comes with Trisquel, which I build routinely across all of the different linux distro’s, and it is a real “Hyper” kernel.
This one sets the timer frequency to 100hz, if I’m gaming I prefer 1000hz then combined with the low latency or real time scheduling, but right now since I’m mostly building things like the linux kernel from source, I put it at 100 or 300 hz, and use normal scheduling.
Also I always use periodic timer ticks, and do lots of different things that have become a habitual ritual for me now, whenever I → build a new linux system → configure everything from the ground up → build a new linux kernel/drivers.
I have taken to ignoring a lot of the driver options, so it includes all the support for devices/hardware common in default kernels shipped by mainstream distributions, but I do go all around and disable things, such as verbose error reporting. I made some notes about it here.
notes!: started with stock libre-linux kconfig from trisquel, dependencies for building the kernel on fedora here https://docs.fedoraproject.org/en-US/quick-docs/kernel-build-custom/, the root account enabled, and libre-linux-7.2 here https://linux-libre.fsfla.org/pub/linux-libre/releases/LATEST-7.2.0/linux-libre-7.2-gnu.tar.lz
make olddefconfig
make menuconfig
I start from the bottom and work my way up (the notes are kind of mixed up)
disabled all options for security/mitigations/virtualization and kernel hacking, except for a few that boost performance
turned off support for network file systems
turned off the watchdog
turned off network block device support
turned off debugging all over the place
- advanced error reporting/verbose error reporting
turned off all hotplug support
turned off all tracking/auditing
left the default device support options that are common to debian/ubuntu/fedora ect
turned off macintosh/microsoft/chrome device drivers
turned off tablet/joystick device drivers
left networking at defaults, disabled net flow limit, byte queue limits and networking cgroups, and receive packet steering
disabled all memory security/randomization/overhead
turned off all poisoning/injectors
turned off some statistics gathering that I thought was superfluous
disabled suspend/hibernate, power-efficient by default,
set default cpufreq governor to performance
disabled linux guest support
disabled flexible return and event delivery, default low
memory corruption check, enabled ibt, enabled tsx
set the timer frequency to 100 hz
disabled high resolution timer support, enabled periodic timer ticks
disabled all cgroup support except for the cpu, and a bunch of different things
make -j$(nproc) && make modules && make modules_install && make install && sync
Its a real Hyper system like I said, but lacking security mitigations that are standard, requires extra precautions, like refusing to install software on the system, or access untrusted resources on the web, and maintaining backups of the base system prior to installing any major software packages.
The libre-linux kernel is a deliberate, and has become a standard choice for me, that I find is a major improvement to performance. There are also obviously patches that could be included, such as from cachy-os. It has room for lots of improvement, that is pretty easy to perform.
Some workarounds I’ve learned to use while using this specific kind of configuration include adding reboot=cold to the kernel command line, and running sync routinely, after any major changes to disk drives, as well as avoiding rebooting/shutting down generally, and instead using sudo poweroff which includes sometimes manually clearing power cells which sometimes presents issues. That even includes removing the cmos battery, or using the physical power switch, while the system is still plugged in, and pressing + holding down, the power button.
It’s very fast and zippy without any standard mitigations, so ensuring proper shut downs / start ups, is the lone caveat over all, and obviously it can be configured to an even greater extent in order to improve performance.
On Fedora 45 it’s raging fast, like a sports car, and really enjoyable, so I thought I would share it with you guys, and see if Fedora has any tips/hints or inclusions they would recommend to add to the Hyper Linux Kernel.
you have to install lzip, and the prerequisites for building the kernel listed at the top of the wiki post linked above, but other than that, I made it very generic like a stock distro kernel config, so everyone should be able to use it.
this is the .config file that goes into the linux kernel source directory, it’s sort of hard to upload here, I tried a bunch of different distro pastebins, but it’s such a large text file, so I ended up using pastebin
(ill just add I wouldn’t dream of using anything else available on the internet in terms of a high performance kernel, other than patches+configuration tweaks)
It is tested and working on Fedora 45 beta, debian 11-14, Ubuntu/trisquel, slackware current, it obviously assumes some things like tweaking the bios/uefi disabling virtualization, but sometimes I turn on virtualization in order to put the web browser into a container, or other operating systems, and it’s a little less quick then. The basic default configuration disables virtualization.
(edited it a little bit again, to make it smaller, disabled wifi powersave mode by default, and improved it again slightly)
It’s basically my own personal Linux bonsai tree, I am constantly improving