Re: [PATCH] ipc/msg.c: mitigate the lock contention with percpu counter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux