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


83

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

введите описание изображения здесь

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

введите описание изображения здесь

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

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

введите описание изображения здесь

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


1
хорошо, я добавил информацию, которую смог найти. Проверьте их
magicandre1981

1
Это особенность системы, позволяющая фактически хранить больше информации в оперативной памяти, используя сжатие вместо подкачки на диск. @ magicandre1981 имеет правильную информацию, которая должна быть принята как правильный ответ.
Мани Гэндхэм

14 мегабайт, которые показывает poolmon, связаны с тегом smNp - это просто тривиальная сумма. Вы беспокоитесь о 1,3 ГБ в частном рабочем наборе системного процесса - зачем сосредотачиваться на 14 МБ невыгружаемого пула (которого вообще нет в рабочем наборе процесса)?
Джейми Ханрахан

Ответы:


13

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

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


1
Это действительно сработало. Использование памяти для системы возвращается к ~ 0,1 МБ даже после нескольких часов использования. Спасибо!
Nayncore

26
В то время как обычно такое высокое использование памяти было бы красным флажком для утечки памяти, эта память законно используется в качестве ОСОБЕННОСТИ Windows 10 (см. Ответ magicandre ниже).
Bigbio2002

7
это не ошибка и не должно быть отключено
phuclv


6
Если функция вызывает постоянные предупреждения о недостаточном объеме памяти, это не очень хорошая функция. Теперь мой Surface Pro с 4 ГБ ОЗУ полностью непригоден для разработки, и даже на ноутбуке с 8 ГБ ОЗУ я постоянно получаю эти предупреждения. Большой палец вверх для решения!
Олег I.

94

Я посмотрел на следы 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, которое было выпущено в августе 2016 года, Microsoft извлекла Compression, теперь показанную в псевдопроцессе, призванном Memory Compressionбольше не сбивать с толку пользователей, почему SYSTEM имеет такое большое использование памяти:

введите описание изображения здесь

Но похоже, что Taskmgr не показывает этот процесс, только ProcessExplorer / ProcessHacker могут показать его. Taskmgr показывает только объем сжатой памяти в обзоре:

введите описание изображения здесь

Если вы наведите курсор мыши на график используемой памяти в Taskmgr, вы увидите всплывающую подсказку, которая показывает количество сжатых данных.

введите описание изображения здесь

В этой демонстрации 388 МБ сжимаются до 122 МБ, поэтому 267 МБ сохраняются со сжатием.


9
@Zaibis: я думаю, что идея заключается в том, что вы не «сбрасываете 1 ГБ». 1 ГБ зарезервировано Windows и будет использоваться для распределения. Вы не потеряли память.
Легкость гонок с Моникой

12
«Неиспользованная память - потраченная впустую память» долгое время была мантрой OS X. Похоже, Windows тоже попала на борт.
deceze

1
@ magicandre1981 Что вы подразумеваете подSystem Memory compression
user2284570

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

2
@JosiahKeller Диалог «мало памяти» о низком уровне виртуальной памяти. Это практически не связано с использованием или наличием физической памяти (ОЗУ). Они учитываются отдельно всеми современными настольными ОС.
Дэвид Шварц

0

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

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

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

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

Использование системной памяти на 13 ГБ

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

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

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

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

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


-1

Отключите prefetcher в ключе 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


12
Это ужасная идея. Prefetch / superfetch используются по определенной причине. Если вы думаете, что можете управлять памятью лучше, чем ваша ОС, вы сильно ошибаетесь.
b1nary.atr0phy

Отключить предварительную выборку (или «очистить папку предварительной выборки») - действительно очень глупая идея. Предварительная выборка не заставляет систему использовать больше оперативной памяти. Это ускоряет загрузку exe и dll как только вы их запускаете , и только потом. Что касается SuperFetch, Microsoft по умолчанию отключает SuperFetch в системах с SSD для диска Windows; они чувствуют, что выгода не стоит того. Лично я держу его включенным, потому что у меня есть другие диски, не-SSD, на которых я хочу, чтобы SF все еще работал.
Джейми Ханрахан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.