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.
