Подходящий размер файла подкачки Windows O / S для SQL Server

Кто-нибудь знает хорошее практическое правило для соответствующего размера файла подкачки для сервера Windows 2003 под управлением SQL Server?

5.08.2008 17:07:16
8 ОТВЕТОВ
РЕШЕНИЕ

Независимо от размера оперативной памяти, вам все равно нужен файл подкачки, как минимум в 1,5 раза превышающий объем физической памяти. Это верно, даже если у вас 1-ТБ ОЗУ, вам понадобится 1,5-ТБ файл подкачки на диске (звучит странно, но это правда).

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

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

Не считая некоторых странных случаев, SQL Server всегда будет запрашивать страницы MEM_COMMIT. И учитывая тот факт, что SQL использует политику динамического управления памятью, которая резервирует аванс как можно больше буферного пула (резервирует и фиксирует в терминах VAS), SQL Server при запуске запрашивает огромное резервирование пространства в файле подкачки. Если файл подкачки имеет неправильный размер, 801/802 начнет появляться в файле ERRORLOG и операциях SQL.

Это всегда вызывает некоторую путаницу, поскольку администраторы ошибочно полагают, что большая оперативная память устраняет необходимость в файле подкачки. На самом деле происходит обратное: большой объем ОЗУ увеличивает потребность в файле подкачки только из-за внутренней работы диспетчера памяти Windows NT. Надеюсь, зарезервированный файл подкачки никогда не используется.

11
22.11.2009 22:11:18
именно то, что я искал, спасибо! С виртуальной машиной 32 ГБ файл подкачки, несомненно, занимает много места, однако, похоже на природу зверя ...
tsquillario 1.03.2013 15:00:12

Если вам нужна высокая производительность, вам нужно полностью отказаться от подкачки страниц, чтобы размер файла подкачки стал менее значительным. Вложите столько оперативной памяти, сколько возможно для сервера БД.

1
11.08.2008 12:22:31
Это неверно на самом деле. Распределение MEM_COMMIT не может быть выполнено без резервирования места в файле подкачки. Ваш файл подкачки должен как минимум в 1,5 раза превышать объем ОЗУ, даже если у вас 1 ТБ ОЗУ.
Remus Rusanu 22.11.2009 21:59:39
Remus, это неправда, рекомендуется правило 1.5 * RAM для файла подкачки, но это не обязательно. В случае SQL Server на 64-битной машине с большим объемом оперативной памяти (более 16 ГБ) лучше отключить файл подкачки или установить файл подкачки, например, на 4 ГБ. Абсолютно ошибка, если у вас есть машина с 96 ГБ ОЗУ, используйте 144 ГБ подкачки, в случае SQL-сервера. Я администрирую десятки производственных SQL-серверов на компьютерах с 16 до 96 ГБ ОЗУ, на всех у меня есть pagefile = 4 ГБ.
user991004 12.10.2011 08:08:03

Чем больше, тем лучше размер рабочего набора приложения, в котором вы начнете получать убывающую отдачу. Вы можете попытаться найти это, медленно увеличивая или уменьшая размер, пока не увидите существенное изменение в показателях попаданий в кэш. Однако, если частота попаданий в кеш превышает 90% или около того, вы, вероятно, в порядке. Как правило, вы должны следить за этим в производственной системе, чтобы убедиться, что она не переросла выделение ОЗУ.

2
23.12.2008 14:45:57

Недавно у нас были некоторые проблемы с производительностью одного из наших SQL Server, которые мы не смогли полностью сузить, и фактически использовали один из наших обращений в службу поддержки Microsoft, чтобы они помогли устранить неполадки. Подходил оптимальный размер файла подкачки для использования с SQL Server, и Microsoft рекомендует, чтобы он был в полтора раза больше объема оперативной памяти .

2
10.09.2009 05:05:52

По словам Microsoft, «по мере увеличения объема оперативной памяти в компьютере уменьшается необходимость в файле подкачки». Затем в статье описывается, как использовать журналы производительности, чтобы определить, сколько файлов страниц на самом деле используется. Попробуйте для начала установить файл подкачки в 1.5X системной памяти, затем выполните рекомендуемый мониторинг и внесите в него изменения.

Как определить подходящий размер файла подкачки для 64-битных версий Windows

3
27.01.2013 12:30:10

После долгих исследований наши выделенные SQL-серверы под управлением Enterprise x64 в Windows 2003 Enterprise x64 не имеют файла подкачки.

Проще говоря, файл подкачки является кешем для файлов, которыми управляет ОС, а SQL имеет собственную систему управления внутренней памятью.

В статье MS, на которую ссылаются, не указано, что этот совет предназначен для ОС, использующей готовые сервисы, такие как обмен файлами.

Наличие файла подкачки просто обременяет дисковый ввод-вывод, потому что Windows пытается помочь, когда только ОС SQL может выполнить эту работу.

1
24.05.2011 12:56:05

При всем уважении к Ремусу (которого я очень уважаю) я категорически не согласен. Если ваш файл подкачки достаточно большой, чтобы поддерживать полный дамп, он будет выполнять полный дамп каждый раз. Если у вас очень большой объем оперативной памяти, это может привести к серьезному сбоям в работе крошечного сообщения.

Вы НЕ хотите, чтобы ваш сервер выписывал 1 ТБ ОЗУ на диск, если существует одноразовая временная проблема. Если есть повторяющаяся проблема, вы можете увеличить файл подкачки, чтобы захватить полный дамп. Я бы подождал, чтобы сделать это, пока PSS (или кто-то другой, имеющий право анализировать полный дамп) не попросит вас захватить полный дамп. Чрезвычайно маленький процент администраторов баз данных знает, как анализировать полный дамп. Мини-дамп достаточно для устранения большинства проблем, которые всплывают в любом случае.

Кроме того, если ваш сервер настроен на разрешение полного дампа 1 ТБ и возникает повторяющаяся проблема, сколько свободного дискового пространства вы бы порекомендовали иметь под рукой? Вы можете заполнить весь SAN за один выходной.

Файл подкачки 1.5 * RAM был нормой в те времена, когда вам повезло иметь SQL Server с 3 или 4 ГБ оперативной памяти. Это уже не так. Я оставляю файл подкачки с размером Windows по умолчанию и настройками на всех производственных серверах (за исключением сервера SSAS, который испытывает нехватку памяти).

И просто для пояснения, я работал с серверами от 2 ГБ ОЗУ до 2 ТБ ОЗУ. После более чем 11 лет мне нужно было только увеличить файл подкачки, чтобы захватить полный дамп один раз.

14
5.10.2011 21:39:39

В этом случае нормальная рекомендация в 1,5 раза больше общей физической памяти не является наилучшей. Эта очень общая рекомендация предоставляется в предположении, что вся память используется «обычными» процессами, которые, как правило, могут перемещать свои наименее используемые страницы на диск, не создавая серьезных проблем с производительностью для процесса приложения, которому принадлежит память.

Для серверов, работающих под управлением SQL Server (как правило, с очень большими объемами ОЗУ), большая часть физической ОЗУ выделяется процессу SQL Server и должна быть (если настроена правильно) заблокирована в физической памяти, чтобы ее нельзя было выгружать в файл подкачки. , SQL Server очень тщательно управляет своей собственной памятью с учетом производительности, используя большую часть оперативной памяти, выделенной для его процесса, в качестве кэша данных для сокращения дискового ввода-вывода. Не имеет смысла выгружать эти страницы кеша данных в файл подкачки, так как единственная цель иметь эти данные в ОЗУ, в первую очередь, состоит в сокращении дискового ввода-вывода. (Обратите внимание, что ОС Windows также использует доступную оперативную память аналогично кешу диска для ускорения работы системы.) Поскольку SQL Server уже управляет собственным пространством памяти, это пространство памяти не следует считать «доступным для просмотра страниц»,

Что касается MEM_COMMIT, упомянутого Remus, терминология сбивает с толку, потому что на языке виртуальной памяти «зарезервированное» никогда не относится к фактическому выделению, но предотвращает использование адресного пространства (не физического пространства) другим процессом. Объем памяти, доступной для «фиксации», в основном равен сумме физического ОЗУ и размера файла подкачки, а выполнение MEM_COMMIT просто уменьшает объем, доступный в выделенном пуле. В это время он не размещает соответствующую страницу в файле подкачки. Когда фактически записывается страница с выделенной памятью, это происходит тогда, когда система виртуальной памяти выделяет страницу физической памяти и, возможно, переносит другую страницу памяти из физической памяти в файл подкачки. См. Справочник по функции MSDN VirtualAlloc .

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

Пока на сервере не запущены другие процессы, требующие памяти, размер файла подкачки 4 ГБ должен быть достаточным. Если вы установили SQL Server для разрешения блокировки страниц в памяти, вам также следует рассмотреть возможность установки параметра максимальной памяти SQL Server, чтобы он оставлял некоторую физическую оперативную память доступной для ОС для себя и других процессов.

Ошибки 802 в SQL Server указывают на то, что система не может зафиксировать больше страниц для кэша данных. Увеличение размера файла подкачки поможет в этой ситуации только в том случае, если Windows может выгружать память из процессов, отличных от SQL Server. Разрешение памяти SQL Server врастать в файл подкачки в этой ситуации может избавить от сообщений об ошибках, но это контрпродуктивно, в связи с тем, что прежде было причиной кеширования данных.

0
3.04.2014 23:51:13