Если я не ошибаюсь, значение /proc/sys/kernel/shmall
указывает общий объем разделяемой памяти в байтах, который может быть выделен системе.
Я работаю на t2.micro
экземпляре ec2 Debian и получаю следующее:
$ cat /proc/sys/kernel/shmall
18446744073692774399
Я не думаю, что это означает, что общий выделяемый объем разделяемой памяти составляет около0,02 зеттабайта...
решение1
Правильно, этого должно быть достаточно для любого, определенного как (ULONG_MAX - (1UL << 24))
. Обратите внимание, что это не значение для каждого процесса, а общее значение. Смотритеhttp://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/shm.h#L13:
* SHMMNI, SHMMAX и SHMALL — верхние пределы по умолчанию, которые могут быть изменены. * изменено sysctl. Значения SHMMAX и SHMALL были выбраны для * быть максимально большим, не упрощая сценарии, в которых пользовательское пространство * вызывает переполнение при настройке лимитов с помощью операций вида * "извлечь текущий лимит; добавить X; обновить лимит". Поэтому это не * рекомендуется сделать SHMMAX и SHMALL больше. Эти пределы * подходит как для 32-, так и для 64-битных систем.