2015-08-07 04:17:19 +0000 2015-08-07 04:17:19 +0000
82
82

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

С тех пор как я перешел на Windows 10, моя система чрезмерно потребляет оперативную память

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

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

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

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

Ответы (4)

93
93
93
2015-08-07 04:20:09 +0000

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

(Нажмите на изображение для увеличения)

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

Я спросил об этом компанию Microsoft, и ответ заключается в том, что это по замыслу. Это связано с компрессией системной памяти.

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

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

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

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

По словам команды Windows, “в практике, сжатая память занимает около 40% от несжатого объема, и в результате типичного устройства, работающего с типичной рабочей нагрузкой, Windows 10 записывает страницы на диск только 50% так часто, как в предыдущих версиях OS.** Если все идет по плану, Вindows пользователи могут испытывать снижение времени ожидания для всех устройств, а также увеличение срока службы на системах, которые имеют жесткие диски на базе флэш-памяти.

Декомпрессия - это также то, на что хорошо рассчитана 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 Compression, чтобы больше не смущать пользователей, почему SYSTEM имеет такое большое использование памяти:

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

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

В этой демонстрации 388 МБ сжаты до 122 МБ, таким образом 267 МБ сохраняются с помощью сжатия.

13
13
13
2015-08-09 23:24:30 +0000

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

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

0
0
0
2019-08-31 16:21:39 +0000

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

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

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

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

Ранее процесс, описанный выше, использовался в объеме 24 ТБ, и наблюдались следующие три варианта поведения:

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

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

При таких обстоятельствах это может быть нормальным поведением, хотя я не подтвердил это в Microsoft. А пока я буду добавлять дополнительные 32 ГБ оперативной памяти на этот сервер для обработки Snapshot'овских накладных расходов.

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

-1
-1
-1
2015-08-20 11:08:59 +0000

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

Похожие вопросы

3
19
10
28
5