Рекомендуемый размер файла подкачки для SQL 2008R2 в Windows 2008R2

25

Эта статья Microsoft - Как определить подходящий размер файла подкачки для 64-разрядных версий Windows Server 2008 и / или Windows 2008 R2 содержит руководство по вычислению размера файла подкачки для 64-разрядных версий Windows 2008 и Windows 2008R2. Это, без сомнения, прекрасно работает для серверов общего назначения. Мне интересно, что руководство для SQL Server 2008R2 работает на Windows 2008 / R2 64 бит?

Я предполагаю, что мы хотим, чтобы как можно меньше данных в памяти попадало на файл подкачки, иначе SQL мог бы дважды ударить по диску для данных. Разрешает ли SQL Server даже данные в памяти попадать в файл подкачки? Я искал электронную документацию по SQL Server 2008 R2, но пока не нашел упоминаний об использовании файла подкачки.

Вот сценарий потенциального использования: Учитывая физический сервер с 64 ГБ ОЗУ, необходим ли файл подкачки для всех 64 ГБ ОЗУ? Должны ли мы подготовить его для 96 ГБ файла подкачки? Это кажется немного чрезмерным для одного файла. Я знаю, что принято считать, что Windows соединяет файл подкачки с памятью, чтобы упростить обмен приложениями в оперативной памяти, но так ли это? Будет ли файл подкачки размером менее 64 ГБ снижать производительность?

Кев
источник

Ответы:

15

Не существует специальных настроек для SQL Server, который обычно использует только физическую память

Просто сделайте то, что MS говорит для Windows, и все

Да, и все равно покупайте больше оперативной памяти, пока мы будем одной из них ... ;-)

ГБН
источник
6

Посмотри в lock pages in memory. Таким образом, вы можете отдать предпочтение вашей учетной записи службы SQL использовать доступную оперативную память, а не выполнять подкачку на диск. Чтобы узнать больше о блокировке страниц в памяти, проверьте эту ссылку . Ниже приведен фрагмент:

Параметр «Блокировка страниц в памяти» политики Windows по умолчанию отключен. Эта привилегия должна быть включена для настройки расширений оконного адреса (AWE). Эта политика определяет, какие учетные записи могут использовать процесс для хранения данных в физической памяти, предотвращая передачу страницей данных в виртуальную память на диске. В 32-разрядных операционных системах установка этой привилегии без использования AWE может значительно снизить производительность системы. Блокировка страниц в памяти не требуется в 64-битных операционных системах.

Пожалуйста, проверьте эту функцию перед использованием в ваших системах.

StanleyJohns
источник
4
«Блокировка страниц в памяти» может быть лучше охарактеризована как защита, предотвращающая выгружение памяти SQL операционной системой. support.microsoft.com/kb/918483
Марк Стори-Смит
4

Да, для 64 ГБ ОЗУ требуется как минимум файл подкачки 64 ГБ (рекомендуется 96 ГБ). Не из-за возможного обмена, а из-за дизайна диспетчера памяти Windows. Я уже писал об этой проблеме в разделе Размер системного файла подкачки на машинах с большим объемом оперативной памяти :

Когда процесс запрашивает MEM_COMMITпамять через VirtualAlloc/ VirtualAllocEx, запрошенный размер должен быть зарезервирован в файле подкачки. Это было верно в первой системе Win NT, и все еще верно сегодня, см. Управление виртуальной памятью в Win32 :

Когда память фиксируется, физические страницы памяти выделяются, а пространство резервируется в файле подкачки.

Альтернативой будет что-то вроде oom_killer .

Поэтому следуйте рекомендациям, иногда все немного сложнее, чем кажется. И я даже не коснулся сложностей, связанных с AWE, и привилегий блокировки страниц ...

Ремус Русану
источник
Очень интересно ... Как это работает тогда, когда вы устанавливаете файл подкачки меньше, чем ОЗУ в машине? Если действительно нам нужно зарезервировать пространство в файле подкачки для каждого выделения памяти, мы не сможем использовать больше памяти, чем размер файла подкачки? Я не уверен, как это работает на практике.
Шломоид
1
Именно так и работает на практике. Преданный регион VA должен быть подкреплен реальным резервированием свопа. Зарезервирована VA область не должна быть, но SQL Server практически никогда не просит , не допущенные оговорок.
Ремус Русану
2
Я не думаю, что это правильно. Насколько я понимаю из различных источников, таких как книги Windows Internals, выделенное виртуальное адресное пространство должно быть подкреплено чем-то физическим , либо файлом подкачки, либо ОЗУ. Поэтому, если вы попытаетесь зафиксировать виртуальную память> ([Физическая память, которую видит Windows] + [Размер файла подкачки]), вы получите печально известное сообщение об ошибке «В вашей системе недостаточно виртуальной памяти». Марк Руссинович говорит об этом в разделе главы «покончила память» здесь .
Джеймс Л
5
Я думаю, вы можете подтвердить себе, что подтвержденные регионы VA не должны поддерживаться резервированием подкачки, просто загрузив систему без файла подкачки и подтвердив, что Windows запускается, и, следовательно, должно быть больше 0 байтов подтвержденного VAS.
Джеймс Л
Это сообщение неверно - вполне возможно запустить без файла подкачки, если у вас больше памяти, чем требует максимальный коммит. Однако это будет означать, что вы не можете писать аварийные дампы.
Steve365 10.11.16