CAKE_MQ Slated For Linux 7.0 To Adapt SCH_CAKE For Today's Multi-Core World
([Linux Networking] 66 Minutes Ago
CAKE_MQ)
- Reference: 0001607105
- News link: https://www.phoronix.com/news/Linux-7.0-CAKE-MQ
- Source link:
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 [1]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.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=ff420c568b4cda293d9ef516a85c2f29fafc41d6
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 [1]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.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=ff420c568b4cda293d9ef516a85c2f29fafc41d6