У меня нет мнения о том, какое максимальное значение в shmmax должно быть установлено.
Посмотрев на статистику моей системы, она показывает следующее:
#cat /proc/sys/kernel/shmmax
18446744073692774399
#ipcs -l
------ Messages Limits --------
max queues system wide = 3675
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398442373116
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
В идеале значение общей памяти не должно превышать фактический размер ОЗУ (который составляет 21474836480 байт). Тогда возможно ли это? Или это мусорное значение.
Значение, которое вы показываете: 18446744073692774399
соответствует: 0xFFFFFFFFFEFFFFFF
или 1111 1111 1111 1111 1111 1111 1111 1111 63 47 1111 1110 1111 1111 1111 1111 1111 1111 31 15
так что это не совсем максимальное значение 64-битного целого числа без знака, но почти.
По умолчанию установлено максимально возможное значение unsigned long в 64-битной системе (2 ^ 64) = 18446744073709551616 (за вычетом некоторого необходимого объема памяти, как я предполагаю).
Если максимальное значение совместно используемой RAM> фактического RAM, это просто означает, что вся доступная RAM может совместно использоваться. Вы всегда можете его понизить, но по умолчанию это (почти) все.
Они сдвигают бит с 1 длиной без знака на 24 (1UL << 24) = 16777216, а затем вычитают это из теоретического максимума, который дает вам значение.
18446744073709551616–16777217 = 18446744073692774399
Я ищу ваш вопрос в Google и нашел только документацию по настройке shmmax
и shmall
параметры. Лучший был в этот ответ. Итак, на ваш вопрос, если ваш shmmax
установите более высокое значение, больше, чем у вас есть RAM, это значение мусора, система не позволяет использовать для общей памяти больше, чем у вас есть RAM (не знаю о свопе).