SHMMAX + как влияет на параметр ядра, который был установлен неправильно по ошибке

SHMMAX + как влияет на параметр ядра, который был установлен неправильно по ошибке

несколько слов о совместной памяти

Общая память позволяет процессам получать доступ к общим структурам и данным, помещая их в сегменты общей памяти. Это самая быстрая из доступных форм межпроцессного взаимодействия, поскольку при передаче данных между процессами не происходит никакого участия ядра. Фактически, данные не нужно копировать между процессами.

мы замечаем, что ценность машин RedHat огромна, как показано ниже

 cat /proc/sys/kernel/shmmax
 17446744003692774391

 sysctl -a | grep kernel.shmmax
 kernel.shmmax = 17446744003692774391

когда я рассчитал до Гига его - 16248546544.17632

логично ли это? , мы что-то упускаем здесь

Машины имеют 64G и 16 CPU и используются в кластере Hadoop.

решение1

Theзначение по умолчаниюдля shmmaxесть

#define SHMMAX (ULONG_MAX - (1UL << 24))

Это верхняя граница, выбранная так, чтобы быть максимально большой, ограничивая при этом риск переполнения:

SHMMNI, SHMMAX и SHMALL — верхние пределы по умолчанию, которые можно изменить с помощью sysctl. Значения SHMMAX и SHMALL были выбраны максимально большими, не упрощая сценарии, в которых пользовательское пространство вызывает переполнение при настройке пределов с помощью операций вида «извлечь текущий предел; добавить X; обновить предел». Поэтому не рекомендуется увеличивать SHMMAX и SHMALL. Эти пределы подходят как для 32-, так и для 64-разрядных систем.

Значение в порядке и так; оно установлено правильно, ошибок нет.

Связанный контент