Messages in this thread | | | Date | Mon, 5 Sep 2022 20:12:04 +0800 | Subject | Re: [PATCH] ipc/msg.c: mitigate the lock contention with percpu counter | From | "Sun, Jiebin" <> |
| |
On 9/4/2022 3:35 AM, Manfred Spraul wrote: > Hi Jiebin, > > On 9/2/22 17:22, Jiebin Sun wrote: >> 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_counters >> greatly improve the performance. Since there is one unique >> ipc namespace, additional memory cost is minimal. > > With ipc namespaces, there is one struct per namespace, correct? > > The cost is probably still ok, but the change log should be correct. > Yes, that's what I want to summarize. The IPC msg namespace is unique
and there is only one percpu counter in IPC msg namespace.
Thanks.
> >> @@ -1303,14 +1305,16 @@ void msg_init_ns(struct ipc_namespace *ns) >> ns->msg_ctlmnb = MSGMNB; >> ns->msg_ctlmni = MSGMNI; >> - atomic_set(&ns->msg_bytes, 0); >> - atomic_set(&ns->msg_hdrs, 0); >> + percpu_counter_init(&ns->percpu_msg_bytes, 0, GFP_KERNEL); >> + percpu_counter_init(&ns->percpu_msg_hdrs, 0, GFP_KERNEL); >> ipc_init_ids(&ns->ids[IPC_MSG_IDS]); > > These calls can fail. You must add error handling.
I have add error handling for percpu_counter_init.
Thanks.
> > -- > > Manfred > >
| |