У нас есть сервер Windows Server 2008 R2 (64-разрядный) 8 ГБ, где, согласно Sysinternals RAMMap, 2 ГБ памяти выделяется с помощью AWE. Насколько я понял, это означает, что эти страницы остаются в физической памяти и никогда не выталкиваются. Это приводит к вытеснению других приложений из физической памяти.
В RAMMap на вкладке Physical Pages столбец Process пуст для всех страниц AWE.
Мы запускаем SQL Server в этом окне, но (через SQL Server Management Studio в разделе «Свойства сервера» -> «Память» в разделе «Параметры памяти сервера») он говорит, что настроен не для использования AWE.
Однако при остановке SQL Server страницы AWE внезапно исчезают. Так что это действительно виноват.
Итак, у меня есть три вопроса:
Есть ли в учетной записи SQL-сервера параметр «блокировать страницы в памяти»?
Вкратце: 1) выделение таким образом выполняется немного быстрее и 2) требуется для SQL, чтобы предотвратить выгружение его памяти.
Есть ли конкретная причина, по которой вы не хотите, чтобы SQL использовал AWE?
- В 64-битных системах (2005+):
- AWE не требуется (и фактически его включение ничего не дает)
- Включение привилегии «Заблокированные страницы в памяти» предотвращает выгрузку памяти буферного пула (и всего, что использует выделение памяти по одной странице за раз)
- Когда установлена привилегия «Заблокированные страницы в памяти», SQL Server использует Windows AWE API для выделения памяти, поскольку это немного быстрее
- «Заблокированные страницы в памяти» поддерживаются выпусками Standard и Enterprise (см. Это сообщение в блоге, чтобы узнать, как включить его в выпуске Standard)
Смотрите также: Развлечение с заблокированными страницами, AWE, диспетчером задач и рабочим набором… - это объясняет, почему установка "использовать AWE" является ложной, на самом деле не предотвращает использование AWE (это актуально только для 32-битной версии)