Как рассчитать размер разделяемой памяти, доступной системе?

Как рассчитать размер разделяемой памяти, доступной системе?

СогласноДокумент RHEL, общий объем разделяемой памяти, доступной в системе, равен shmall*PAGE_SIZE.

После завершения установки RHEL 6 значение shmallпараметра ядра по умолчанию равно 4294967296, что означает, что общий объем страниц разделяемой памяти, которые могут быть использованы в масштабах всей системы, составляет 4294967296, а размер страницы — 4096 Б. Таким образом, исходя из формулы, размер разделяемой памяти равен

4294967296*4096/1024/1024/1024/1024 = 16 TB

... что намного больше, чем размер оперативной памяти (8 ГБ) операционной системы. Как ОС может найти 16 ТБ разделяемой памяти для выделения?

Итак, равен ли размер /dev/shmразмеру разделяемой памяти? Если нет, то как узнать реальный размер разделяемой памяти?

решение1

Ваш расчет верен. shmall может быть установлен выше доступной виртуальной памяти. Если вы попытаетесь использовать ее всю, то она не будет работать из-за превышения shmall, а по другим причинам.

Кстати, есть также команды для поиска этих ограничений IPC:

ipcs -l
lsipc  # util-linux>=2.27

Обратите внимание, что даже виртуальная память в Linux по умолчанию неограничена и превышает ОЗУ+своп. Смотрите

https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work

Как OOM killer решает, какой процесс завершить первым?

С другой стороны, вы могли быпределвиртуальная память на процесс, использование ulimt -vкоторой не повлияет /proc/sys/kernel/shmallни на ядро.

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