Windows 10, "Системный" процесс, занимающий огромное количество оперативной памяти

После обновления до Windows 10 моя система потребляла слишком много оперативной памяти

Я немного читал и решил, что это, вероятно, утечка памяти в драйвере. Итак, я получил Windows Driver Kit и отслеживал использование памяти с помощью poolmon:

Однако я не знаю, как действовать дальше. Является ли элемент с пометкой "smNp" виновником этой проблемы? Как мне перейти от фактической идентификации водителя?

Я пробовал некоторые вещи, такие как "C: \ Windows \ System32 \ drivers> findstr / s smnp . ", Но он не дал результатов. Я также взглянул на файл pooltag.txt, и вот описание, которое я нашел для него:

Так что да, любая помощь будет оценена. Заранее спасибо.

3 ответа

Решение

Зайдя в services.msc (через Win + R) и отключение Superfetch полностью решает эту проблему. Я не уверен, что Superfetch только что сломан, или это "по замыслу".

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

Я посмотрел на следы xperf нескольких пользователей и здесь функцию ntoskrnl.exe!SmKmStoreHelperWorker Ядра начинает выделять память.


(Нажмите на изображение, чтобы увеличить)

Я обнаружил это на sysinternals.

Я спросил Microsoft об этом, и ответ таков: это сделано специально. Это связано со сжатием системной памяти.

В анонсе Windows 10 Build 10525 Microsoft объяснила это немного:

В Windows 10 мы добавили новую концепцию в диспетчере памяти под названием хранилище сжатия, которое представляет собой набор сжатых страниц в памяти.Это означает, что, когда диспетчер памяти чувствует нехватку памяти, он сжимает неиспользуемые страницы, а не записывает их на диск. Это уменьшает объем памяти, используемой для каждого процесса, позволяя Windows 10 одновременно поддерживать больше приложений в физической памяти. Это также помогает улучшить отзывчивость в Windows 10. Хранилище сжатия находится в рабочем наборе системного процесса.Поскольку системный процесс хранит хранилище в памяти, его рабочий набор увеличивается именно тогда, когда память делается доступной для других процессов.Это видно в диспетчере задач и причина, по которой системный процесс потребляет больше памяти, чем предыдущие выпуски.

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

Microsoft также разместила больше деталей во внутреннем центре. Winbeta создал статью, которая включает в себя больше деталей.

По-видимому, причина этого была в том, что Microsoft предпочла приостановить приложения UWP, когда они не были на переднем плане, очень похоже на управление некоторыми ОС смартфонов. Пользователи Windows 8 поняли (возможно, нет), что если бы приложений не было на экране, они бы не запускались, пока пользователь не переключился на них. Подход "все или ничего" обновляется вWindows 10, добавляя слой между файлом подкачки и обычным пейджинговым действием.Теперь, столкнувшись с проблемами нехватки памяти, MM определит, какие страницы следует переместить в измененный список, в процессе, называемом обрезкой. Измененный список представляет собой вторичный список файлов подкачки, резервное копирование списка резервных файлов подкачки. Список резервных копий записывается в том случае, если память восстанавливается из резервного списка другим процессом, и исходный процесс ищет свою страницу.Windows 10 MM вместо всех или ничего будет сжимать неиспользуемые страницы, а не записывать их на диск.При меньшем объеме записи результатом должно быть меньшее количество дисковых операций- благодаря сжатию - и теперь больше данных может храниться в памяти.

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

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

Microsoft также выпустила видео на канале 9, который объясняет эту функцию.

Сжатие памяти в Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

В этом видео Мехмет Ийгун провел некоторое время, обсуждая, почему системный процесс в Windows 10 занимает немного больше памяти и почему это хорошо. Процесс, занимающий больше памяти, звучит как плохая вещь - пока я не пойму больше об управлении памятью, поиске страниц и сбоях аппаратных / программных страниц. Оказывается, что ОС выполняет некоторые умные оптимизации, которые позволяют вашим процессам обрезать часть памяти, но не обязательно выводить ее на диск. Мало того, что память сохраняется в ОЗУ, но она также сжимается, что приводит к более частым сбоям в работе жестких страниц. Результаты должны сделать для более быстрого опыта.

В последних сборках TH2 Microsoft обновила описание в диспетчере задач и теперь также показывает, что процесс SYSTEM содержитcompressed memory:

чтобы избежать путаницы по поводу "высокого" использования.

В выпуске Window 10 Anniversary Update, выпущенном в августе 2016 года, Microsoft извлекла Compression в теперь показанную в псевдо-процессе, который называетсяMemory Compressionto no longer confuse users why SYSTEM has such a large memory usage:

But it looks like Taskmgr doesn't show this process, only ProcessExplorer/ProcessHacker are able to show it. The Taskmgr only shows the amount of compressed memory in the overview:

If you hover over the used memory graph in Taskmgr you see a tooltip that shows the amout of data that are compressed.

In this demo 388MB are compressed to 122MB so 267MB are saved with the compression.

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

Если вы интенсивно используете моментальные снимки Microsoft (снимок программного обеспечения, а не снимок аппаратного обеспечения), чем больше снимков вы сохраняете в сочетании с большими изменениями данных, то система будет потреблять больше оперативной памяти.

Обычно объем оперативной памяти, используемый для моментальных снимков тома, невелик и не будет заметен, если только у вас нет гигантского тома (т.е. 64 ТБ) с многотерабайтными дельтами между моментальными снимками. По умолчанию моментальные снимки будут просто удаляться, если число операций ввода-вывода слишком велико, но есть способы предотвратить это, позволяя вам достичь больших дельт.

Ниже приведен крайний случай, показывающий системный процесс сервера с использованием 13 ГБ ОЗУ. Этот сервер имеет только два тома моментальных снимков с интервалом в 15 дней, и между каждым снимком записывается около 10 ТБ данных.

Процесс System выше был ранее при 24 ГБ использования, и наблюдались следующие три поведения:

  1. После перезагрузки и входа в систему система на некоторое время зависает на пустом экране, пока не появится рабочий стол.
  2. Во время этого зависания всплывающий диспетчер задач (CTRL-SHIFT-ESC) показал рост использования системной памяти.
  3. Во время этого зависания диск с моментальными снимками тома выполнил много операций чтения, которые не отображались в системном мониторе. Хотя, поскольку диск использовал iSCSI, сетевая карта показала стабильный поток чтения около 200 Мбит / с.

Я заподозрил моментальные снимки томов, поэтому попытался удалить самый старый снимок, который мгновенно уменьшил использование системной памяти с 24 до 13 ГБ.

В этих условиях это может быть нормальным поведением, хотя я не подтвердил это с Microsoft. А пока я добавлю 32 ГБ ОЗУ на этот сервер для обработки накладных расходов на снимок.

(Примечание: это сервер резервного копирования большого объема, работающий под управлением Windows 2016 с подключенным диском iSCSI с 64 ТБ SSD. Он поддерживает в среднем три тома моментальных снимков в любой момент времени, новый создается каждые 15 дней. Существует около 10 ТБ данные записываются между каждым снимком).

Отключите предварительную выборку в ключе regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters у тебя наверное есть Enable Prefetcher по значению 2 или же 3 так что поменяй 0

Далее нужно отключить Superfetch в сфере услуг

  1. Поиск для services.msc

  2. найти superfetch щелчок properties затем установите его disabled и остановите службу.

Я делаю эти шаги и когда я играю и обычно использую компьютер и system процесс использует только 28k

Другие вопросы по тегам