gecko-dev/ipc/chromium
Nika Layzell fbe1612f10 Bug 1794282 - Part 2: Reduce locking contention in IPC::Channel, r=ipc-reviewers,mccr8
In profiles of the regressing benchmarks, it appears that there is some amount
of locking contention when large numbers of small messages messages over IPC.
While the bulk of this contention is probably caused by the OnIOCompleted
callbacks on the IO thread, there's not much we can do about those wake-ups.

This patch tries to reduce the contention by avoiding acquiring the mutex when
receiving IPC messages using the ChannelCapability introduced in part 1.

I am hopeful that this will slightly improve performance, however it seems
likely that there will still be slowdowns due to other parts (like NtWriteFile)
not being easy to optimize.

Future changes such as using a shared memory ring buffer for IPC on windows, or
an approach like ipcz which uses shared memory to avoid signalling messages in
some situations, may improve performance here in the future.

Differential Revision: https://phabricator.services.mozilla.com/D161855
2022-11-14 18:48:49 +00:00
..
gtest Bug 1775148 - Cleanup ipc/ includes r=sylvestre 2022-06-23 15:49:57 +00:00
src Bug 1794282 - Part 2: Reduce locking contention in IPC::Channel, r=ipc-reviewers,mccr8 2022-11-14 18:48:49 +00:00
chromium-config.mozbuild Bug 1715144 - Part 1: Stop adding /ipc/glue to LOCAL_INCLUDES when including chromium-config.mozbuild, r=ipc-reviewers,necko-reviewers,mccr8,valentin 2021-06-09 04:56:48 +00:00
moz.build Bug 1783240 - Part 2: Automatically serialize large blocks of binary data in shared memory, r=ipc-reviewers,jld 2022-09-28 19:25:12 +00:00