Назад | Перейти на главную страницу

Каков максимальный объем памяти, который процесс (MySQL) может использовать в 32-разрядной ОС?

У меня MySQL работает на 32-битном RHEL. Сам сервер имеет 4 ГБ общей памяти, из которых 2 ГБ выделены для MySQL.

Я хотел бы знать максимальный объем памяти, который я могу поместить в коробку, и сколько из этого я могу выделить MySQL.

Я слышал как 2 ГБ, так и 4 ГБ как ограничение на процесс в 32-разрядной ОС ...

В конечном итоге я хотел бы знать, могу ли я увеличить объем памяти для MySQL без обновления до 64-разрядной ОС.

Это зависит от вашего ядра и конфигурации. Обычно это 2 ГБ или 3 ГБ.

Однако в самом приложении может быть установлен нижний предел. Некоторые приложения / службы 32bti не будут использовать более 2 ГБ, даже если ОС позволит им, потому что их собственное управление внутренней памятью использует (или позволяет) 32-битные целые числа со знаком для всего.

Если ваш ЦП, контроллер памяти, ОС и приложение поддерживают PAE, это позволит использовать больше оперативной памяти для одного процесса. PAE поддерживается ядром Linux, и нет сомнений в том, что в репозиториях RHEL есть ядра предварительной сборки, в которых он включен (он не включен в большинстве ядер по умолчанию, так как это влияет на производительность) - я не знаю, будет ли поддержка MySQL хотя для этого.

Если вы используете более старое ядро, возможно, стоит изучить конфигурацию карты памяти - в то время как большинство новых ядер по умолчанию используют разделение 1G / 3G между ядром и отображенным адресным пространством пользовательского пространства внутри каждого процесса, в более старые времена (когда машины с ОЗУ близки к ограничение 32-битного адресного пространства было практически неслыханным) разделение 2G / 2G было по умолчанию, но могло быть изменено, если вам нужен был 1G / 3G.

Не углубляясь в тему, я предполагаю, что (если вы не используете более старое ядро, и это то, что накладывает ограничение на 2G, а не на 3G) MySQL не будет использовать более 2G без обновления до 64-разрядной версии. компилировать. Однако дополнительная оперативная память вряд ли будет потрачена впустую - ядро ​​будет использовать ее для кеша / буферов, поэтому, в то время как MySQL, использующий ее напрямую, будет намного более эффективным (поскольку будет гораздо меньше случаев, когда кеш MySQL и кеш ОС содержат одни и те же блоки данных) он не будет простаивать, поэтому будет заметна некоторая выгода.

Большинство современных дистрибутивов и процессоров поддерживают PAE, набор инструкций Intel, позволяющий адресовать память за пределами 32-разрядного ограничения. PAE позволяет процессору обращаться к максимуму 64 ГБ ОЗУ. PAE имеет дополнительную нагрузку на ЦП.

32-разрядная версия Linux имеет ограничение на 3 ГБ для каждого процесса даже с PAE. Обычно ядро ​​резервирует примерно 1 ГБ.

MySQL - это демон одного процесса. Таким образом, он не сможет обращаться за пределами 32-битного ограничения даже с PAE.

Некоторые полезные ссылки:

Я думаю, что каждый процесс может видеть (адресовать) 4 ГБ, но 2 ГБ из них - это пространство ядра и не могут быть заполнены данными приложения.

Поэтому я предполагаю, что MySQL потенциально может использовать 2 ГБ, умноженное на количество экземпляров MySQL, ГБ общей памяти (физическая память и пространство подкачки).