Messages in this thread | | | Date | Fri, 2 Sep 2022 09:06:59 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] ipc/msg.c: mitigate the lock contention with percpu counter |
| |
On Fri, 2 Sep 2022 23:22:43 +0800 Jiebin Sun <jiebin.sun@intel.com> 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. Reading > of the count done in msgctl call, which is infrequent. So > the need to sum up the counts in each CPU is infrequent. > > Apply the patch and test the pts/stress-ng-1.4.0 > -- system v message passing (160 threads). > > Score gain: 3.38x
So this test became 3x faster?
> CPU: ICX 8380 x 2 sockets > Core number: 40 x 2 physical cores > Benchmark: pts/stress-ng-1.4.0 > -- system v message passing (160 threads) > > ... > > @@ -138,6 +139,14 @@ percpu_counter_add(struct percpu_counter *fbc, s64 amount) > preempt_enable(); > } > > +static inline void > +percpu_counter_add_local(struct percpu_counter *fbc, s64 amount) > +{ > + preempt_disable(); > + fbc->count += amount; > + preempt_enable(); > +}
What's this and why is it added?
It would be best to propose this as a separate preparatory patch. Fully changelogged and perhaps even with a code comment explaining why and when it should be used.
Thanks.
| |