
Queued into the Linux networking subsystem’s "net-next" branch ahead of the Linux 6.20~7.0 merge window next month is cake_mq as a multi-queue aware variant of the sch_cake network scheduler. The intent with cake_mq is to better scale the network traffic rate shaper across multiple CPU cores.
Rather than being bound to a single CPU core and with network speeds outpacing the rate of single core performance with modern CPUs, to meet the needs of modern data centers, cake_mq was developed for making sch_cake multi-queue aware and efficiently scaling out the work to multiple CPU cores.
This Multi-Queue Common Applications Kept Enhanced "cake_mq" work led by Red Hat made it into net-next last …

Queued into the Linux networking subsystem’s "net-next" branch ahead of the Linux 6.20~7.0 merge window next month is cake_mq as a multi-queue aware variant of the sch_cake network scheduler. The intent with cake_mq is to better scale the network traffic rate shaper across multiple CPU cores.
Rather than being bound to a single CPU core and with network speeds outpacing the rate of single core performance with modern CPUs, to meet the needs of modern data centers, cake_mq was developed for making sch_cake multi-queue aware and efficiently scaling out the work to multiple CPU cores.
This Multi-Queue Common Applications Kept Enhanced "cake_mq" work led by Red Hat made it into net-next last week and thus should be part of the upcoming kernel cycle. The Git merge to net-next sums up cake_mq as:
"This series adds a multi-queue aware variant of the sch_cake scheduler, called ‘cake_mq’. Using this makes it possible to scale the rate shaper of sch_cake across multiple CPUs, while still enforcing a single global rate on the interface.
The approach taken in this patch series is to implement a separate qdisc called ‘cake_mq’, which is based on the existing ‘mq’ qdisc, but differs in a couple of aspects:
It will always install a cake instance on each hardware queue (instead of using the default qdisc for each queue like ‘mq’ does).
The cake instances on the queues will share their configuration, which can only be modified through the parent cake_mq instance.
Doing things this way simplifies user configuration by centralising all configuration through the cake_mq qdisc (which also serves as an obvious way of opting into the multi-queue aware behaviour). The cake_mq qdisc takes all the same configuration parameters as the cake qdisc.
An earlier version of this work was presented at this year’s Netdevconf."
Cake_mq should allow for better traffic shaping performance especially with today’s high-end data center hardware with many-core CPUs and ever increasing networking speeds.