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

Вопрос или проблема

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

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

4294967296*4096/1024/1024/1024/1024 = 16 ТБ

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

Так, равен ли размер /dev/shm размеру общей памяти? Если нет, то как я могу получить фактический размер общей памяти?

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

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

ipcs -l
lsipc  # util-linux>=2.27

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

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

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

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

Ответ или решение

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

Введение

Разделяемая память — это ключевой компонент системного ресурсопользования, особенно для баз данных и приложений, требующих высокой производительности. В данном ответе мы подробно рассмотрим, как рассчитать размер доступной разделяемой памяти в операционной системе Red Hat Enterprise Linux (RHEL), включая конкретные параметры и их влияние на общее количество доступной памяти.

Основные параметры

Согласно документации RHEL, общее количество доступной разделяемой памяти вычисляется по следующей формуле:

общий объем памяти = shmall * PAGE_SIZE

Где:

  • shmall — это ядро системы, ограничивающее общее количество страниц разделяемой памяти, доступной в системе.
  • PAGE_SIZE — это размер страницы, обычно равный 4096 байт.

После установки RHEL 6 значение параметра shmall по умолчанию составляет 4294967296. Следовательно, подставляя значения в формулу, мы можем рассчитать:

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

Почему размер разделяемой памяти может превышать объем памяти RAM

Размер полученной разделяемой памяти в 16 ТБ значительно превышает объем оперативной памяти (RAM) вашего сервера, который составляет 8 ГБ. Это связано с тем, что система может выделять память более объема доступной физической памяти за счет механизма обращения к виртуальной памяти. Значение shmall может быть настроено выше доступного объема оперативной памяти, но фактическое использование этой памяти будет ограничено другими механизмами, такими как своп (swap).

Влияние на /dev/shm

Важно отметить, что размер каталога /dev/shm не равен размеру общей разделяемой памяти. /dev/shm — это точка монтирования для разделяемой памяти, которая обычно ограничена до 50% от объема доступной RAM. Чтобы проверить фактический размер разделяемой памяти и другие параметры IPC (межпроцессное взаимодействие), используйте следующие команды:

ipcs -l
lsipc  # для util-linux версии 2.27 и выше

Перенастройка и ограничение ресурсов

Хотя Linux по умолчанию позволяет использовать виртуальную память, превышающую суммарный объем RAM и swap, вы всегда можете ограничить использование виртуальной памяти для процессов с помощью команды ulimit -v. Это изменение не затронет значение shmall, но тем не менее позволит контролировать использование памяти на уровне процессов.

Заключение

Теперь вы знаете, как рассчитать объем доступной разделяемой памяти в вашей системе RHEL. Совмещение информации о параметрах системы, таких как shmall и PAGE_SIZE, с пониманием механизмов виртуальной памяти позволит вам оптимально управлять ресурсами и поддерживать производительность ваших приложений. Для более глубокого изучения можете ознакомиться с документацией и руководствами по настройке ресурсов в Linux.

Если у вас есть дополнительные вопросы или требуется помощь в настройке системы, обратитесь к профессиональным специалистам в области IT.

Оцените материал
Добавить комментарий

Капча загружается...