View Issue Details

IDProjectCategoryView StatusLast Update
0001442channel: elrepo/el8--kernel--request-for-enhancement--public2024-09-24 16:34
Reporteragoodm Assigned Totoracat  
PrioritynormalSeverityfeatureReproducibilityN/A
Status assignedResolutionreopened 
Platformx86_64OSAlma LinuxOS Version8
Summary0001442: Please provide tc-sched-cake kernel module
DescriptionSome features of iproute-tc require kernel module sch_cake. Source code for the module is provided within the kernel srpm however the module is not available by default.

I've compiled the module and it appears to work correctly once installed.
Steps To Reproducemkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
rpm -i https://repo.almalinux.org/vault/8.9/BaseOS/Source/Packages/kernel-4.18.0-513.18.1.el8_9.src.rpm
rpmbuild -bp --target=$(uname -m) kernel.spec
cd BUILD/kernel-4.18.0-513.18.1.el8_9/
make oldconfig
Then I manually edited the config to enable the module
Then I spent ages trying to work out what make line to build the module - eg make -j4 M=something before giving up and just building all the modules make -j4 modules

The cp net/sched/sch_cake.ko /lib/modules/4.18.0-513.18.1.el8_9.x86_64/kernel/net/sched/
TagsNo tags attached.

Activities

toracat

2024-04-03 17:39

administrator   ~0009649

Acknowledged.

toracat

2024-04-03 17:45

administrator   ~0009651

We will work on building a kmod for sch_cake. In the meantime, you might want to do a test install of our kernel-lt (1) or kernel-ml (2). The sch_cake kernel module is enabled in those kernels.

(1) https://elrepo.org/wiki/doku.php?id=kernel-lt
(2) https://elrepo.org/wiki/doku.php?id=kernel-ml

toracat

2024-04-03 21:24

administrator   ~0009654

The following package has been built and will be syncing to our mirrors shortly:

kmod-sch_cake-0.0-1.el8_9.elrepo.x86_64.rpm

agoodm

2024-04-04 10:36

reporter   ~0009655

Thank you for adding this module. I installed it on some test systems and it appears to function as expected.

toracat

2024-04-04 12:00

administrator   ~0009656

Great to hear it's working. Now closing as resolved.

agoodm

2024-08-07 13:10

reporter   ~0010009

If you want to adjust the 'tin' sizes in cake the expectation is that you patch the kernel module. I dont personally like the approach however its safe to say that all the latest and greatest traffic shaping innovations are in cake and cake only. In some of my setups I actually do need to adjus the tin sizes in order to get performance parity with my previous hfsc+fq_codel approach.

Therefore I ponder if its possible to supply a patch file; which could be applied to the source code (if it exists) before the module is compiled?

pperry

2024-08-14 11:49

administrator   ~0010025

If you need to patch the source, you are welcome to take our SRPM, apply your own patch as required and rebuild the package for your own use.
However, a better solution might be to ask the code maintainer to allow such variables to be passed to the kernel module at load time, if this is not already the case?

agoodm

2024-09-24 07:54

reporter   ~0010117

Could you provide a high level overview of that process? I need to try and automate this.

Re improving the originating source code... Yes I agree this would be better. Sadly the view of the author is that they were creating a no knobs and dials solution as a one size fits most approach. I think largely because most users cant be trusted to change the settings without screwing them up. Ultimately this works in most scenarios. Unfortunately I dont install networks in normal scenarios some of the time I do need to adjust the splits. Add to this the stagnant nature of development for most of the linux kernel cqm stuff and the fact this software is the only place to get loads of useful features and you can perhaps understand why I am looking to do this.

tqhoang

2024-09-24 09:16

manager   ~0010118

What you want to do is make whatever variables into kernel module parameters.
https://tldp.org/LDP/lkmpg/2.6/html/x323.html

We don't know the CAKE scheduler code, so you need to be very specific with what you're asking:
- names of variable
- description of variable
- default value will be whatever the current value is
- recommend to have a valid range

Here is the current source code for our sch_cake kmod package:
https://github.com/elrepo/packages/blob/master/sch_cake-kmod/el8/sch_cake.c

agoodm

2024-09-24 10:59

reporter   ~0010119

In my application I override the default 'tin mapping'. I use diffserv3 or diffserv4 mode which makes 3/4 'tins'. I am not 100% certain which lines I need to adjust but most likely I need to adjust lines 2502, 2504, 2508, 2509, 2510. This would then change the bandwidth split between the tins. Specifically I need more bandwidth in my real time (voice) tin. I was somewhat expecting to download the srpm, 'install it' (which seems to extract it to a pre determined directory usually) then apply a patch file which I could create programmatically, do whatever was needed to install/reload the module?

tqhoang

2024-09-24 16:34

manager   ~0010121

Here's the current RHEL 8.10 SRPM:
https://elrepo.org/linux/elrepo/el8/SRPMS/kmod-sch_cake-0.0-2.el8_10.elrepo.src.rpm

Here are some directions on rpmbuild.
https://www.redhat.com/sysadmin/create-rpm-package

If you have a patch file, we can help you get it integrated with a test build. But as of right now, I don't think there is anything further for us to do.

Issue History

Date Modified Username Field Change
2024-04-03 17:36 agoodm New Issue
2024-04-03 17:36 agoodm Status new => assigned
2024-04-03 17:36 agoodm Assigned To => toracat
2024-04-03 17:39 toracat Status assigned => acknowledged
2024-04-03 17:39 toracat Note Added: 0009649
2024-04-03 17:45 toracat Note Added: 0009651
2024-04-03 21:24 toracat Note Added: 0009654
2024-04-03 21:24 toracat Status acknowledged => feedback
2024-04-04 10:36 agoodm Note Added: 0009655
2024-04-04 10:36 agoodm Status feedback => assigned
2024-04-04 12:00 toracat Status assigned => resolved
2024-04-04 12:00 toracat Resolution open => fixed
2024-04-04 12:00 toracat Note Added: 0009656
2024-08-07 13:10 agoodm Status resolved => assigned
2024-08-07 13:10 agoodm Resolution fixed => reopened
2024-08-07 13:10 agoodm Note Added: 0010009
2024-08-14 11:49 pperry Note Added: 0010025
2024-09-24 07:54 agoodm Note Added: 0010117
2024-09-24 09:16 tqhoang Note Added: 0010118
2024-09-24 10:59 agoodm Note Added: 0010119
2024-09-24 16:34 tqhoang Note Added: 0010121