Linux CacULE (feedback & testing)

Hey people! :grin:
I have another thing for you to test - this time its a kernel called linux-cacule by @ptr1337 !
Ive been testing this since about a week and was getting good results with it while doing my basic desktop usage & running VMs at the same time (responsiveness!). Since I dont really do gaming at all I cant really tell anything about this which is why Im asking you guys to do some testing. Also, feedback is of course welcome to help improving the kernel :smiley:

To make things easy for you, we got the linux-cacule package in our repo which will contain fixes for eventual reported incompatibilities or issues which may arise during testing.

So, what are the actual features of this kernel? :eyes:

  • CacULE scheduler (a CFS replacement which is really complex (read more here) which features really good responsiveness & latency - good for gaming! The following is taken from CacULEs GitHub repo, as example:

  • A selection of patches from Clear Linux, XanMod & Zen
  • Graysky's additional CPU optimizations for GCC / Clang (you can build it to your specific cpu arch)
  • BBRv2! tcp algorithm
  • mm-lru-v3 patches
  • Improved ZSTD upstream v1.5
  • ZSTD compression for modules
  • FUTEX2 Patch v2, PROTON-FSYNC and wineesync
  • BFQ Patch which is a better scheduler than mq_deadline and kyber
  • Improvements on BTRFS, initrafms & NTFS
  • Misc improvements

For even better results, create a /etc/sysctl.d/99-sysctl-cacule.conf using your favorite text editor and add:

```
 # Cacule-Settings # 
    kernel.sched_interactivity_factor= 65536
    kernel.sched_max_lifetime_ms=11000
   ### Some general Network-Settings ##
    net.core.netdev_max_backlog = 16384
    net.core.somaxconn = 8192
    net.core.rmem_default = 1048576
    net.core.rmem_max = 16777216
    net.core.wmem_default = 1048576
    net.core.wmem_max = 16777216
    net.core.optmem_max = 65536
    net.ipv4.tcp_rmem = 4096 1048576 2097152
    net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv4.udp_rmem_min = 8192
    net.ipv4.udp_wmem_min = 8192
    net.ipv4.tcp_fastopen = 3
    net.ipv4.tcp_keepalive_time = 60
    net.ipv4.tcp_keepalive_intvl = 10
    net.ipv4.tcp_keepalive_probes = 6
    net.ipv4.conf.default.log_martians = 1
    net.ipv4.conf.all.log_martians = 1
    net.ipv4.tcp_mtu_probing = 1
    net.ipv4.tcp_syncookies = 1
    net.core.default_qdisc = cake
    net.ipv4.tcp_congestion_control = bbr2
```

If you want to build the kernel yourself (actually this is advised as you can compile it for your actual CPU arch you can use your favorite AUR helper to install linux-cacule which enables setting own, preferred settings at compile time, eg. by running:

  • @ptr1337 is also providing kernels for RPi4/3 armv7h/aarch64 if you are interested in those, check out the GitHub repo. You can find some prebuilt kernels for March=x86-64-v3 at this file server.
    You can use this also a a own repo if you like to.

Looking forward to feedback from you guys! :dragon: :fire:

12 Likes

Does it work with broadcom I cannot send my feedback if wi-fi des not work[ᶜⁱᵗᵃᵗⁱᵒⁿ ⁿᵉᵉᵈᵉᵈ].

which kernel did you used to install?

The config is the orginal one from arch right now mostly, since with 5.12 many drivers got added.

3 Likes

I did nt install it yet but I will installet precompiled
But I use tkg-bmq and wifi works.

1 Like

as i saw you dont use any nvidia graphics, ill upload the newest build in some seconds :slight_smile:

@RUanauR Wifi has nothing to do with the scheduler.

5 Likes

There you go.
https://ptr1337.dev/?dir=Kernels/Generic-v3/linux-cacule

Download both files then sudo pacan -U linux-cacule linux-cacule-headers

4 Likes

ptr1337-sgs :wink:

:slight_smile:

14 Likes

as I'm compiling this for about two hours now, I wanted to say that in russian and other slavic languages "cacule" is a slightly ruined way of saying "poop". :grin:

8 Likes

So far it just works. haven't noticed any problems or improvements. Although I'm a bad tester as I don't play any games right now

3 Likes

Just put it on my i3 partition. Works fine :man_shrugging: The low latency thing intrigues me, so I might test some recording and monitoring side by side with zen and see if I can detect any difference.

3 Likes

For example try compile anything with all your cores (which takes some time) and use your desktop with many things, videos and so on.

Also at gaming (rocket league with controller, im high rank c3) i feel difference to bmq, pds, ... . I mean at controller responses.

Maybe i'll create some benchmarks with phoronix.
You can also use this and compare the results with other kernels:

Anbox will be supported in the next update.

Edit:
If some games dont run with protontkg/proton-ge change your proton settings::

remove '#' :

"PROTON_NO_ESYNC": "1",
"PROTON_NO_FSYNC": "1",

add '#' :

#"VKD3D_FEATURE_LEVEL": "12_0",
6 Likes

Kernel got updated again:

  • NTFS3 support added
  • Anbox support added
  • disabled CONFIG_FAIR_GROUP_SCHED and CONFIG_SCHED_AUTOGROUP because a new cacule-addon patch
    This on my gaming rig and server i got better results without these config settings, tested with above linked benchmark

Be sure to apply following sysctl settings:

## Cacule-Settings ## 
kernel.sched_interactivity_factor=32768  
kernel.sched_max_lifetime_ms=22000
kernel.sched_harsh_mode_enabled=0
kernel.sched_interactivity_threshold=20480

to disable new new patch effect just set:
kernel.sched_interactivity_threshold=0

Then you can test your system with different settings, every system is different.

Generic Kernel is already updated in the chaotic-aur.

Genericv3 Kernel can be found here:

https://ptr1337.dev/?dir=Kernels/Generic-v3/linux-cacule

Skylake Kernel can be found here:

https://ptr1337.dev/?dir=Kernels/Intel%20Skylake

6 Likes

Actually now I see an interesting effect. My browser is consuming only about 2 gigs of memory instead of usual 3.5 gigs.

6 Likes

Hmm. looks great, looks like I need to learn kernel compiling now.

3 Likes

Should I install linux-cacule from aur or chaotic-aur

You can use the kernel from the chaotic aur it is based on the generic (for every device working) which is compiled with gcc 10.2

I also uploaded on my Fileserver the generic v3 ( most modern cpu‘s support it)

And also uploaded a intel skylake one to the fileserver which are compiled with gcc 11.1.

If you’re running a Nvidia graphic card it can maybe get some problems due Nvidia dkms, but you see if it fails when installing the kernel you get a error message.

You can compile the kernel also yourself, but it takes some time depending on your hardware.

The fileserver can be found at
https://ptr1337.dev

When you want to compile your kernel yourself you can pull the needed files from the auf with:
paru -G linux-cacule or use it the gut pull link from this site : AUR (en) - linux-cacule

Then go into the directory and run makepkg -si

You will be then asked about your microarchetecture from your cpu. If unsure just use INTEL_NATIVE or AMD_NATIVE depending on your cpu.
GCC will then autodetect your optimal GCC Compile flags for your CPU.

Then it starts to compile :slight_smile:

It’s not that hard, it takes on a average rig with 6 cores about 30 minutes to compile.

Hope I can help you with that a little bit.

Edit:

  • @Hamadmarri (developer of cacule! )and me worked the last Night and tested some other values and found some good new standard values, also the new addon patch is now on default in the cacule Patch (it’s already in the kernel )

  • ZSTD Patches got updated this night and will be updated with the next kernel update

  • in the next Update i will also add the mm-lru v3 patches which are right now in developing phase

8 Likes

404 - Page Not Found

Sorry, the page you've requested does not exist.

  • Note: Git clone URLs are not meant to be opened in a browser.
  • To clone the Git repository of linux-cacule, run
git clone https://aur.archlinux.org/linux-cacule.git
2 Likes

Thank you updated the post. I’m on mobile right now, it’s hard to format a big post on mobile. :stuck_out_tongue:

3 Likes

Thanks!

lol I have a 2 core pc

3 Likes

Then use the prexompiled from the aur or if you got x86-v3 cpu you can use the generic v3 from the fileserver. I need so search the correct command how to check the architecture.

1 Like