Jump to content
 Share

annoying furry

GFL's Kernels for Linux Game Servers

Recommended Posts

Hello!

 

I've recently been experimenting with building game server node optimized builds of the Linux kernel. In our incredibly unscientific testing, we noticed some fairly significant improvements to game server performance. I'm still experimenting with what works best, so the exact configuration we're using will likely change (it's difficult to test a lot of different combinations due to build length making it difficult to iterate).

 

Some of the things we're doing include:

  • Processor type specific optimizations
  • Clang builds with LTO (is not supported with GCC)
  • PREEMPT kernel w/ full dynticks (not entirely sure if we're gonna stick with full dynticks yet, still waiting to see how it goes)

 

We're hosting our builds at https://deb.gflclan.com so if you trust us not to give you a virus, you can use those like so:

 

curl https://deb.gflclan.com/key.gpg | sudo apt-key add -
echo 'deb https://deb.gflclan.com/ focal main' | sudo tee /etc/apt/sources.list.d/gfl-kernels.list
sudo apt update

# If you have an AMD CPU
sudo apt install linux-image-gfl-amd
# If you have an Intel CPU
sudo apt install linux-image-gfl-intel

 

Per the cliche: The package is provided as is without any warranty, so if you use this and it doesn't work / breaks your system, you're on your own. We run the latest Ubuntu LTS, so you'll most likely have the best luck with that.

 

After installing the package, you should be able to just reboot (you may find you need to change the grub configuration to always use the new kernel). You can check that you're running it like so:

 

uname -r
# should be something like 5.15.16-gfl-intel

 

Alternatively, if you want to build your own, you can use these configs by adding them to your kernel's build directory as .config (likely won't be updated if we make changes though):

configs.zip

 

We don't patch our kernels (yet, might change), so the upstream sources from kernel.org are fine.

 

They're intended for Linux 5.15.16 (the latest LTS at writing), so if you're using them on a newer version (or in general if your build env doesn't match mine), you should do this:

 

make LLVM=1 LLVM_IAS=1 oldconfig

 

We build the kernel with clang, so you'll want the appropriate llvm packages too. The ones in the Ubuntu LTS are too old, so I recommend building with Ubuntu 21.10. When it's all setup, you can build with:

 

# replace the 4 below with the number of processor cores of the build machine minus 1
make LLVM=1 LLVM_IAS=1 -j4 bindeb-pkg

 

Feedback is welcome as always :furretlove:


71CFA5EE-923C-4740-ACF4-508B753C9AD7.png.92a0d40c0fa7773f71fea2453f581d16.png

(signature made by @Kaylode)

Previously known as Xy.

 

Twitter ❤️Ko-Fi ❤️Github

 

 IMG_0248.jpg

 

ben_mixed_opinions.png

 

Share this post


Link to post
Share on other sites


  • 2 months later...

Updated for Linux 5.17.1. No changes to the configuration other than we opted to use ThinLTO over Full LTO for faster builds.


71CFA5EE-923C-4740-ACF4-508B753C9AD7.png.92a0d40c0fa7773f71fea2453f581d16.png

(signature made by @Kaylode)

Previously known as Xy.

 

Twitter ❤️Ko-Fi ❤️Github

 

 IMG_0248.jpg

 

ben_mixed_opinions.png

 

Share this post


Link to post
Share on other sites


  • 2 months later...


×
×
  • Create New...