Re: [PATCH] ipc,shm: increase default size for shmmax

From: Kamezawa Hiroyuki
Date: Tue Apr 01 2014 - 02:29:36 EST


(2014/04/01 9:05), Andrew Morton wrote:
On Mon, 31 Mar 2014 16:25:32 -0700 Davidlohr Bueso <davidlohr@xxxxxx> wrote:

On Mon, 2014-03-31 at 16:13 -0700, Andrew Morton wrote:
On Mon, 31 Mar 2014 15:59:33 -0700 Davidlohr Bueso <davidlohr@xxxxxx> wrote:


- Shouldn't there be a way to alter this namespace's shm_ctlmax?

Unfortunately this would also add the complexity I previously mentioned.

But if the current namespace's shm_ctlmax is too small, you're screwed.
Have to shut down the namespace all the way back to init_ns and start
again.

- What happens if we just nuke the limit altogether and fall back to
the next check, which presumably is the rlimit bounds?

afaik we only have rlimit for msgqueues. But in any case, while I like
that simplicity, it's too late. Too many workloads (specially DBs) rely
heavily on shmmax. Removing it and relying on something else would thus
cause a lot of things to break.

It would permit larger shm segments - how could that break things? It
would make most or all of these issues go away?


So sysadmins wouldn't be very happy, per man shmget(2):

EINVAL A new segment was to be created and size < SHMMIN or size >
SHMMAX, or no new segment was to be created, a segment with given key
existed, but size is greater than the size of that segment.

So their system will act as if they had set SHMMAX=enormous. What
problems could that cause?


Look. The 32M thing is causing problems. Arbitrarily increasing the
arbitrary 32M to an arbitrary 128M won't fix anything - we still have
the problem. Think bigger, please: how can we make this problem go
away for ever?


Our middleware engineers has been complaining about this sysctl limit.
System administrator need to calculate required sysctl value by making sum
of all planned middlewares, and middleware provider needs to write "please
calculate systcl param by....." in their installation manuals.

Now, I think containers will be the base application platform. In the container,
the memory is limited by "memory cgroup" and the admin of container should be able
to overwrite the limit in the container to the value arbitrarily.

Because of these, I vote for

1. remove the limit
(but removing this may cause applications corrupted...)
or

2. A container admin should set the value considering memcg's limit.

BTW, if /proc/sys is bind-mounted as read-only by lxc runtime,
it seems difficult for admin to modify it. I have no idea whether it's lack
of kernel feature or it's userland's problem.

Thanks,
-Kame











--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/