ACK: [SRU][J][PATCH 0/9] ipc/msg: mitigate the lock contention with percpu counter

Roxana Nicolescu roxana.nicolescu at canonical.com
Thu Mar 28 10:44:37 UTC 2024


On 21/03/2024 13:14, Thibault Ferrante wrote:
> BugLink: https://bugs.launchpad.net/bugs/2058485
>
> [Impact]
>
> The msg_bytes and msg_hdrs atomic counters are frequently updated when IPC msg queue is in heavy use, causing heavy
> cache bounce and overhead. Change them to percpu_counter greatly improve the performance. Since there is one percpu
> struct per namespace, additional memory cost is minimal. Reading of the count done in msgctl call, which is infrequent.
> So the need to sum up the counts in each CPU is infrequent.
>
> [Fix]
>
> Backport:
>    72d1e611082e ipc/msg: mitigate the lock contention with percpu counter
>
> For clean backport/build, those are also required:
>
> 5d0ce3595ab75 percpu: add percpu_counter_add_local and percpu_counter_sub_local
> 38cd5b12b7854 ipc: Remove extra braces
> 0889f44e28103 ipc: Check permissions for checkpoint_restart sysctls at open time
> dd141a4955d5e ipc: Remove extra1 field abuse to pass ipc namespace
> def7343ff03bb ipc: Use the same namespace to modify and validate
> 1f5c135ee509e ipc: Store ipc sysctls in the ipc namespace
> dc55e35f9e810 ipc: Store mqueue sysctls in the ipc namespace
> 0e9beb8a96f21 ipc/ipc_sysctl.c: remove fallback for !CONFIG_PROC_SYSCTL
> 5563cabdde7ee ipc: check checkpoint_restore_ns_capable() to modify C/R proc files
>
>
> [Test Plan]
>
> Test as the original patch, with pts/stress-ng message passing
> and compare performance.
>
> [Where problems could occur]
>
> Performance regression in IPC communication/workload.
>
> Alexey Gladkov (5):
>    ipc: Store mqueue sysctls in the ipc namespace
>    ipc: Store ipc sysctls in the ipc namespace
>    ipc: Use the same namespace to modify and validate
>    ipc: Remove extra1 field abuse to pass ipc namespace
>    ipc: Check permissions for checkpoint_restart sysctls at open time
>
> Jiebin Sun (2):
>    percpu: add percpu_counter_add_local and percpu_counter_sub_local
>    ipc/msg: mitigate the lock contention with percpu counter
>
> Manfred Spraul (1):
>    ipc/ipc_sysctl.c: remove fallback for !CONFIG_PROC_SYSCTL
>
> Michal Clapinski (1):
>    ipc: check checkpoint_restore_ns_capable() to modify C/R proc files
>
>   include/linux/ipc_namespace.h  |  42 ++++++-
>   include/linux/percpu_counter.h |  32 ++++++
>   ipc/ipc_sysctl.c               | 204 ++++++++++++++++++++-------------
>   ipc/mq_sysctl.c                | 121 ++++++++++---------
>   ipc/mqueue.c                   |  10 +-
>   ipc/msg.c                      |  48 +++++---
>   ipc/namespace.c                |  15 ++-
>   ipc/util.h                     |   4 +-
>   8 files changed, 315 insertions(+), 161 deletions(-)
Acked-by: Roxana Nicolescu <roxana.nicolescu at canonical.com>



More information about the kernel-team mailing list