[PATCH v12 0/3] ipc: Increase IPCMNI limit

From: Waiman Long
Date: Thu Feb 28 2019 - 13:47:42 EST


v11->v12:
- As suggested by Matthew, change patch 2 to increment sequence number
when there is a wrap around in generated ID instead of after a
ID deletion.

v10->v11:
- Remove the sysctl parameter. Now delete mode is the only way the
sequence number is updated. The only choice users had to make is
whether they need to specify ipcmni_extend in the boot command line
or not.
- Cyclical id allocation is enabled only in the ipcmni_extend mode.
- Increase max # of ids in ipcmni_extend mode to 16M.

v9 patch: https://lkml.org/lkml/2018/9/7/1141
v10 patch: https://lkml.org/lkml/2018/11/5/791
v11 patch: https://lkml.org/lkml/2018/11/10/32

There are users out there requesting increase in the IPCMNI value to
more than 32k. This patchset does that by using a boot kernel parameter
"ipcmni_extend" to increase the IPCMNI limit from 32k to 16M when that
boot command line option is specified.

Patch 1 adds a "ipcmni_extend" boot command line parameter to extend
the IPCMNI limit from 32k to 16M.

Patch 2 changes how the sequence number within an id is being generated
by incrementing it only when the generated id is not greater than the
previous one. That reduces the chance of id reuse whether "ipcmni_extend"
is set or not.

Patch 3 makes identifier allocation go cyclical through the entire
24-bit id space with "ipcmni_extend" only to further reduce the chance
of id reuse, but probably with a slight memory and performance overhead.

The cyclical id allocation isn't done for non-ipcmni_extend mode as the
potential memory and performance overhead may be problematic on system
with slow CPU and little memory. Systems that run applications which need
more than 32k IPC identifiers can certainly afford the extra overhead.

Waiman Long (3):
ipc: Allow boot time extension of IPCMNI from 32k to 16M
ipc: Conserve sequence numbers in ipcmni_extend mode
ipc: Do cyclic id allocation with ipcmni_extend mode

Documentation/admin-guide/kernel-parameters.txt | 6 ++++
include/linux/ipc_namespace.h | 1 +
ipc/ipc_sysctl.c | 14 +++++++-
ipc/util.c | 27 ++++++++++-----
ipc/util.h | 46 ++++++++++++++++++++-----
5 files changed, 76 insertions(+), 18 deletions(-)

--
1.8.3.1