3

У меня проблема с Windows Server 2008 R2 Enterprise. Пейджинговый пул загружает память, но не загружает реальный файл подкачки (для этого у меня есть место на диске).

На самом деле проблема в чрезмерной загрузке памяти, и я предположил, что это проблема.

Настройка виртуальной памяти:

экран

Удобство использования файла подкачки:экран и использование памяти все еще медленно медленно растет

Производительность диспетчера задач: экран

Диспетчер задач обрабатывает: экран

Карта RAM: экран

Системная информация: экран

2 ответа2

1

Первый комментарий: отображение «память ядра - Paged» (здесь почти 22 ГБ) - это виртуальный размер выгружаемого пула.

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

Выгружаемый пул должен быть действительно называется "выгружаемый" бассейн, потому что называют "выгружаемый пул" не означает , что он выгружен из памяти, или что оно обязательно будет. Это означает, что он так же подлежит удалению, как и большинство пользовательских режимов.

И, как и в случае распределения в пользовательском режиме, мы можем ожидать, что в любое время некоторое подмножество виртуального размера выгружаемого пула будет "резидентным" или "действительным" в ОЗУ (доступно без ошибки страницы; такая ОЗУ считается "используемой"). ); другое подмножество будет "в переходном состоянии" (в списке резервных или измененных страниц и доступно, но с ошибкой мягкой страницы), а остальное будет действительно выгружено - в файле страницы, требуя жесткой ошибки страницы для доступа.

Теперь 22 ГБ это много выгружаемого пула. Я имею в виду, действительно, очень много. Такое количество очень необычно. Я подозреваю, что у вас неисправный драйвер устройства, который пропускает выгружаемую память как сито.

Я бы использовал poolmon или Windows Performance Toolkit, чтобы узнать, что выделено для всего этого пула. Здесь много ответов на SU, которые показывают, как это сделать подробно.

В комментарии к вашему вопросу magicandre1981 ссылается на один из его ответов, в котором подробно описана процедура.

Кроме того, кажется, что что-то мешает записи в файл подкачки.

На вашем снимке экрана с RAMmap (и спасибо, что включили его) видно, что из 19 ГБ выгружаемого пула, занимающего ОЗУ (обратите внимание, это меньше, чем виртуальный размер), около 620 МБ является "активным". Это означает, что большая часть оперативной памяти считается "используемой". Это та часть, к которой можно получить доступ без ошибки страницы. У PTE, которые описывают эти виртуальные страницы, установлены свои "действительные" биты.

Почти столько же, около 680 МБ, находится в списке страниц в режиме ожидания.

И вот еще индикатор второй проблемы: более 17 ГБ находятся в списке "Модифицированные".

"Измененный" список страниц - это место, куда помещаются страницы, когда они перемещаются из рабочего набора после того, как их содержимое было изменено с момента их ввода. (Если содержимое страницы не было изменено с тех пор, как оно было перемещено на страницу, то, когда оно теряется из своего рабочего набора, оно просто помещается в список резервных страниц, часть "доступной" оперативной памяти и сразу же перенаправляется для другого использования.) Такие страницы не могут быть просто выпущены для использования каким-либо другим процессом; их содержимое должно быть сохранено. Для страниц, поддерживаемых файлом подкачки, "сохранено" означает "записано в файл подкачки".

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

Таким образом, у вас есть более 17 ГБ ОЗУ в модифицированном списке страниц - ОЗУ, которое ваша система хотела бы записать в ваш файл подкачки.

Это дико излишне.

Большинство систем имеют в измененном списке не более нескольких процентов своей оперативной памяти. В системном процессе есть потоки, которые должны заботиться о записи измененных страниц обратно на диск, каждый раз, когда измененный список превышает небольшой порог. Они не делают работу.

Я заметил, что ваш текущий размер файла подкачки составляет около 5 ГБ, и для каждого вывода WMI он заполнен. (Таким образом , ваша система записывает в файл подкачки) . Но похоже, что расширение файла подкачки по какой-то причине не происходит.

Хм - вы ограничили размер файла подкачки максимум до 20 ГБ, и даже если он был расширен до этого размера, этого будет недостаточно для хранения его текущего содержимого плюс еще 17 ГБ. Возможно, если бы вы увеличили максимально возможный размер PF (Windows предлагает почти 40 ГБ), то все было бы неприкосновенно.

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

Между тем, эти 17+ ГБ не "доступны" для другого использования. Вот почему ваш "Доступный" ОЗУ так мало.

Мы видели ошибки в размере файла подкачки, которые очищаются с помощью:

  • отключить файл подкачки
  • выключить и перезагрузить
  • убедитесь, что старый файл подкачки исчез. Если нет, удалите его.
  • установить размеры файла подкачки на что-то разумное
  • при необходимости выключите и перезагрузите

Вы можете попробовать это.

Но ваша настоящая проблема в том, что вам действительно не нужно сначала 20 ГБ выгружаемого пула. Найти и исправить это.

После этого вы должны снова проверить использование вашего файла подкачки и установить его начальный размер как минимум вдвое больше, чем при обычном использовании. Нет веской причины устанавливать начальный размер меньше, чем обычно требуется вашей системе. (Мне нравится видеть, что файл подкачки используется не более чем на 25%, по причинам, связанным с алгоритмами распределения пространства - они работают намного лучше с большим количеством свободного места для работы.)

Кстати, обе страницы "Standby" и "Modified" (на мой взгляд, несколько вводящие в заблуждение) считаются частью "Cached" на этом экране диспетчера задач. Таким образом, тот факт, что у вас есть 17,4 ГБ "Модифицированный", объясняет тот огромный "Кэшированный" номер. Огромное число "кэшированных" само по себе не является проблемой; это один из симптомов.

0

Выгружаемый пул - это классификация кода режима ядра. Код режима ядра будет использовать выгружаемый или невыгружаемый пул для операций, и определенные операции требуют определенного типа. Это может поддерживаться или не поддерживаться файлом подкачки. Распределение и использование подкачки зависит от операционной системы. На самом деле, пейджинг стоит ваших операций ввода-вывода, поэтому ОС предпочитает хранить как можно больше в Physical. Как я вижу, физическая конфигурация 24 ГБ для 64-битной ОС ОС может очень хорошо управлять большинством операций в первичной памяти.

https://technet.microsoft.com/en-us/library/ff382715.aspx

Приведенная выше ссылка поможет понять размер кэшируемого.

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

Изменить: - После всего анализа "См. ~ 40 комментариев" виновник является сторонним драйвером. Анализ сделан с помощью первоклассного анализа / указания на то, что это действительно проблема (кредит: Джейми Ханрахан) и анализа Paged Pool (кредит: Magicandre). Необходим дальнейший анализ, чтобы ответить на актуальный вопрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .