На выделенном сервере базы данных, сколько памяти резервировать для ОС?

38

Предполагая, что у вас есть выделенный сервер для функций базы данных - сколько памяти вы должны зарезервировать для операционной системы?

Я понимаю, что это, вероятно, будет несколько отличаться в зависимости от конкретной ОС, конкретного программного обеспечения базы данных и так далее. Но, поскольку память так важна для производительности базы данных, я хочу, чтобы база данных имела максимально разумный уровень памяти, не приводя к истощению операционной системы хоста.

Так

  • Какое хорошее правило для начала?
  • на какие счетчики или показатели производительности мы должны обратить внимание, чтобы определить, зашли ли мы слишком далеко, и как ОС базы данных как-то истощается базой данных?
Джефф Этвуд
источник
ребята, вы когда-нибудь настраивали эти настройки? Что сказал тебе профилирование?
Jcolebrand
@jcole нечего добавить в это время; мы обычно резервируем 4 - 6 ГБ для ОС, которая является немного более консервативной, чем я хотел бы
Джефф Этвуд

Ответы:

30

Предполагая Windows и SQL Server ...

Есть две школы мысли.

  1. Оставьте 2-4 гигабайта для Windows (в зависимости от того, что установлено помимо SQL Server).
  2. Оставьте 10% свободной памяти. Когда вы наберете 64 гигабайта, это будет сумасшедший большой объем памяти, оставляемый для ОС, который, вероятно, не понадобится.

Лично я в первой группе. Windows обычно просто требуется 2-4 гигабайта, иногда до 6.

mrdenny
источник
2
Concur на 2 ГБ ОЗУ для ОС.
Jcolebrand
Я тоже согласен. Я обычно оставляю 2 ГБ для ОС и также обеспечиваю непрерывное пространство подкачки. Конечно, ваш пробег может варьироваться, и вам лучше всего настроить параметры, отслеживать производительность и вносить осторожные изменения по мере необходимости.
Мэтт М
2
@matt верно, но что конкретно лучше всего отслеживать, когда я смотрю на "у меня не хватает операционной системы из памяти?"
Джефф Этвуд
1
@Джефф Мой комментарий был не так точен, как следовало бы. Что касается памяти, я обычно смотрю на следующие счетчики производительности: Память: страниц / сек и Память: доступные байты. Посетите эти страницы для получения дополнительной информации: sql-server-performance.com/articles/audit/… и technet.microsoft.com/en-us/library/cc966540.aspx (в частности, раздел « Узкие места в памяти»)
Мэтт М,
6
@Джефф Денни ответил правильно, и для счетчиков Perfmon, посмотрите Memory: Available Bytes. Если он опустится ниже, скажем, 512 МБ, вы рискуете голодать ОС. Однако следует также помнить о файловом кеше в 64-разрядных системах, который по-прежнему отображается как доступный, даже если его нет: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…
Брент Озар,
16

Предполагая Linux, если вы выключаете своп, а ядро ​​продолжает убивать ваш процесс БД, потому что ему не хватает памяти, это хороший показатель того, что вы не хватает ОС для памяти. Отойди, пока это не перестанет происходить. Пара сотен мег обычно достаточно.

Дэн Гроссман
источник
+1 для профиля профиль профиля ~ как бы то ни было, Джефф Аскин, я полагаю, это SQLServer и Windows наверняка;)
jcolebrand
1
@jcolebrand, однако, также зная, что это @jeff, вы поймете, что он не сказал, то есть он намеренно оставил это открытым для всех платформ и баз данных.
ксенотеррацид
2
И, все еще зная, что это @jeff ... почему он не может научиться перестать беспокоиться и любить Linux? ;-)
Юрген А. Эрхард
8

Вы можете использовать опыт Amazon, работая с тысячами серверов баз данных клиентов, здесь: в Amazon Relational Database Service они устанавливают пул буферов innodb MySQL на 3/4 памяти системы, независимо от того, сколько это памяти. Добавьте до пары мегабайт на соединение для различных буферов запросов, и они, вероятно, оставят 10-20% памяти для ОС.

Дэн Гроссман
источник
5

Тебе стоит прочесть воспоминания Брента Озара . У него есть довольно стандартные ответы о том, почему вы должны искать память и почему больше памяти равнозначно лучшей производительности. Вообще говоря, 4 ГБ или 10% зарезервировано для ОС.

Трой
источник