80

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

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

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

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

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

3 ответа3

92

Я посмотрел на следы 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 МБ сохраняются со сжатием.

15

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

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

-1

Отключите предварительную выборку в ключе 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

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