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

Stefan Bader stefan.bader at canonical.com
Thu Mar 28 09:22:53 UTC 2024


On 21.03.24 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(-)
> 
As those are all cherry picks and already (confirmed via back channel) 
regression tested with stress-ng and the improvements are valuable for 
distro-users.

Acked-by: Stefan Bader <stefan.bader at canonical.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 48643 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20240328/f1e96b26/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20240328/f1e96b26/attachment-0001.sig>


More information about the kernel-team mailing list