несколько слов о разделяемой памяти
Общая память позволяет процессам получать доступ к общим структурам и данным, помещая их в разделяемые сегменты памяти. Это самая быстрая из доступных форм межпроцессного взаимодействия, поскольку при передаче данных между процессами ядро не участвует. На самом деле данные не нужно копировать между процессами.
мы замечаем, что значение в redhat-машинах огромно, как показано ниже
cat /proc/sys/kernel/shmmax
17446744003692774391
sysctl -a | grep kernel.shmmax
kernel.shmmax = 17446744003692774391
когда я вычислил его в гигабайтах - 16248546544,17632
это логично? , мы что-то здесь упускаем
машины с 64G и 16 CPU и используются в кластере hadoop
Значение по умолчанию для shmmax
равно
#define SHMMAX (ULONG_MAX - (1UL << 24))
Это верхняя граница, выбранная так, чтобы она была как можно больше при ограничении риска переполнения.:
SHMMNI, SHMMAX and SHMALL are default upper limits which can be modified by sysctl. The SHMMAX and SHMALL values have been chosen to be as large possible without facilitating scenarios where userspace causes overflows when adjusting the limits via operations of the form "retrieve current limit; add X; update limit". It is therefore not advised to make SHMMAX and SHMALL any larger. These limits are suitable for both 32 and 64-bit systems.
Значение в порядке, как -; он установлен правильно, ошибки нет.