Утечка памяти в Windows 10 - теги (poolmon) FMic и Irp - невыгружаемый пул на 5,7 ГБ

1771
Sam

Так что в последнее время я замечаю чрезвычайно высокое использование памяти. Только с Chrome с 20 открытыми вкладками я получаю 13,5 / 16 ГБ используемой памяти. Диспетчер задач сообщает, что Chrome использует только около 3 ГБ памяти. Все остальные процессы, о которых сообщается в диспетчере задач, вместе составляют менее 1 ГБ дополнительной памяти, так как большинство из них используют от 10 до 50 МБ.

Я использовал RamMap для получения более подробной информации и обнаружил, что пул невыгружаемых страниц чрезвычайно высок - 5,7 ГБ. Вот изображение RamMap .

Я использовал poolmonи обнаружил, что две вещи занимают огромное количество невыгружаемого пула. Вот изображение Poolmon .

В соответствии с поиском по тегам Google и этим списком, вот для чего предназначены эти 2 тега :

  • FMic - fltmgr.sys - структура IRP_CTRL
  • Irp - неизвестно - Io, пакеты IRP

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

Я нашел файл fltMgr.sys в C: \ Windows \ System32 \ drivers, но, похоже, это дело Microsoft. В разделе « Свойства» -> «Сведения» его имя - «Операционная система Microsoft Windows», а описание файла - «Диспетчер фильтров файловой системы Microsoft». т.е. это не просто драйвер, который я могу обновить.

Что касается тега Irp, я понятия не имею.

Какие-либо предложения? Где я могу взять это отсюда и что я могу сделать?

РЕДАКТИРОВАТЬ 03/03/18 : Я не владею NIC Killer.

Я использовал xperf для записи, и я дошел до этого . Не совсем уверен, куда идти отсюда, или я мог бы загрузить файл .etl, хотя он довольно большой, поэтому не уверен, куда. Дайте мне знать, если загрузка будет полезна.

Это может быть через 40 минут после перезагрузки и уже имеет 517 МБ невыгружаемого пула.

РЕДАКТИРОВАТЬ 03/03/18 # 1 : пул невыгружаемого в настоящее время в 1 ГБ после дня. Кажется, он увеличивается со скоростью ~ 1 ГБ в день. Выход fltmcможно найти здесь .

Что касается Irp - я не пользуюсь антивирусами или программами резервного копирования, если не считать Защитника Windows. Однако я использую символическую ссылку с моего диска C: (SSD) на мой диск F: (HDD) для папок кеша Google Chrome и Skype, так как они вызывали запись 20 ГБ в день на диск, который я не хотел на мой SSD. Этот кэш работает нормально и записывается на мой жесткий диск просто отлично, хотя я не думаю, что это приведет к сбою ввода-вывода.

У меня также есть массив Raid 0 из 2 жестких дисков (по 1 ТБ каждый), созданный через встроенные пространства хранения Windows, а не через BIOS или что-то подобное. Я не думаю, что это также может иметь какое-то отношение к IRP ?

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

РЕДАКТИРОВАТЬ 03/03/18 # 2 : Я использовал, typeperf "Memory\Pool Nonpaged Bytes" -si 20 -o npptracker.csvа затем представил результаты в соответствии с предложением @HelpingHand. Я также аннотировал график всеми событиями, чтобы вы могли видеть, какое действие соответствует байтам с невыгружаемым содержимым, прыгающим вверх или вниз. Вот график. На нем вы можете увидеть несколько вещей, которые вы не узнаете:

  • PUBG - сокращение от PlayerUnknown BattleGrounds, это видеоигра, в которую я недавно играл
  • Plays.TV - клиент для записи видео, который автоматически начинает запись, как только я вхожу в игру, и останавливает запись, когда я ее покидаю. Он также записывает метаданные для некоторых игр и размещает их на временной шкале видео в качестве маркера, например, я буду видеть маркеры на временной шкале в моменты, когда я кого-то убивал. Эти метаданные записываются в файл .framelets .
  • Twitch.tv - сайт для потоковой передачи
  • Бот для браузерной игры - просто бот, который выполняет HTML-запросы. Он длится от 30 до 60 минут за раз, и я уверен, что это не даст результатов.

Как вы можете видеть на графике, я использовал Xperf с помощью следующей команды около 7 минут: Xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 1024 -MinBuffers 256 -MaxBuffers 256 -MaxFile 1024 -FileMode Circular

Это произвело 1GB файл .etl, который я заархивировал и загрузил здесь (80 МБ) .

Наконец, я poolmonснова использовал через 2-3 минуты после того, как остановился xperf. Я забыл поместить это на график времени. Вот изображение результата.

1
У вас есть сетевая карта Killer? David Marshall 6 лет назад 0
Я бы предложил установить Windows Performance Toolkit, чтобы получить xperf и WPA. Я бы перезагрузил компьютер, память пула должна быть низкой. Запустите `Xperf -on PROC_THREAD + LOADER + POOL -stackwalk PoolAlloc + PoolFree + PoolAllocSession + PoolFreeSession -BufferSize 1024 -MinBuffers 256 -MaxBuffers 256 -MaxFile 256 -FileMode Circular`, чтобы запустить трассировку. После увеличения пула mem запустите: `xperf -stop -d pool.etl`, чтобы создать трассировку. Загрузите файл pool.etl в WPA. Filer для AIFO (мем размещен внутри освобожден снаружи). Не стесняйтесь связывать etl. HelpingHand 6 лет назад 1
Спасибо за комментарии. Проверьте 2 редактирования. @HelpingH, и я могу попытаться загрузить файл .etl куда-нибудь, если понадоблюсь, хотя кажется, что он может содержать личную информацию, по крайней мере, это предупреждение, которое я получил, когда сделал трассировку. Sam 6 лет назад 0
Интересно, охватил ли захват утечку или по крайней мере со скоростью, которая будет очевидна? Вот пример трассировки, полученной таким же способом с помощью тестового приложения Microsoft / Sysinternals - NotMyFault в качестве примера драйвера, который может утекать невыгружаемый пул - https://imgur.com/a/1U8UR. Обратите внимание на размер и столбцы стека. ... HelpingHand 6 лет назад 0
.... в приведенном выше случае причиной является драйвер myfault.sys. Вы расширили стек, чтобы увидеть ссылочные драйверы? В противном случае, чтобы получить общий профиль того, когда и скорость утечки, а также узнать, когда захватывать, перезагружать и запускать: `typeperf" Memory \ Pool Nonpaged Bytes "-si 20 -o npptracker.csv`, пока число явно не исчезнет. затем на графике в Excel, чтобы показать, когда он начался и скорость. Возможно, повторите это пару раз, чтобы вы знали, когда лучше всего выполнить команду xperf и как долго. Может потребоваться рассмотреть ключ -MaxFile и на этом этапе. HelpingHand 6 лет назад 0
** Irp ** относится к пакетам запросов ввода / вывода. Будет один из них для каждого запроса ввода / вывода, который был выдан, но еще не выполнен. Дисплей poolmon показывает, что их около 5,2 миллиона, что является огромным числом. ** fltmgr.sys ** - менеджер и инфраструктура для драйверов минифильтров файловой системы - если анализ проблем указывает на fltmgr.sys, проблема почти всегда в минифильтре. Минифильтры обычно связаны с антивирусными продуктами, программами резервного копирования и тому подобным. В качестве теста отключите или удалите все сторонние компоненты такого рода и посмотрите, исчезнет ли проблема. Jamie Hanrahan 6 лет назад 1
Добавить к комментарию Джейми, который является хорошим. Что выводит команда `fltmc`? Запустите командную строку администратора, чтобы запустить его. Можете ли вы добавить результат к вопросу? HelpingHand 6 лет назад 0
@HelpingH, и я добавил вывод `fltmc` в редактирование, и я собираюсь сделать то, что вы упомянули выше, через некоторое время. Я также добавил некоторую дополнительную информацию, которая может как-то быть связана с вводом / выводом, о котором упоминал @JamieHanrahan. Sam 6 лет назад 0
поделиться ETL (сжатый как zip), если вы не можете его проанализировать magicandre1981 6 лет назад 0
@ magicandre1981 Готово. Я добавил редактирование РЕДАКТИРОВАТЬ 03/03/18 # 2 Sam 6 лет назад 0
Кроме того, тот факт, что у вас есть огромное количество _both_ IRP и управляющих структур IRP менеджера фильтров, и эти два числа довольно близки, является ярким свидетельством того, что симптомы связаны. Jamie Hanrahan 6 лет назад 0
Да, я представлял, что это не совпадение, цифры так близки. Я предполагаю, что это как-то связано с вводом / выводом, но понятия не имею, что это может быть. Sam 6 лет назад 0
@SamuilDichev да, это связано с деятельностью IO. см. мой [ответ] (https://superuser.com/a/1300654/174557) magicandre1981 6 лет назад 0

2 ответа на вопрос

2
magicandre1981

Анализ трассировки в WPA.exe показывает, что FMicиспользование пула RazerCortex.exeпроисходит при создании файлов ( KernelBase.dll!CreateFileW).

enter image description here

Это также вызывает использование IRP (что означает пакет запроса ввода / вывода ):

enter image description here

Драйвер rzudd.sys также вызывает использование IRP:

enter image description here

Поэтому обновите инструмент Razor или лучше удалите его (и любое другое программное обеспечение / драйвер, относящиеся к Razor).

Спасибо за помощь в анализе. Вы уверены в этом, хотя? Я не совсем уверен, что происходит на изображениях, но количество и размеры кажутся меньше, чем у Chrome, и в целом несколько меньше. Может ли это быть причиной? Сейчас я удалю Razer Cortex и в течение дня или двух буду следить за тем, что происходит. Я также создам новый граф снова с помощью `typeperf` и сравню его с предыдущим. Я выложу обновление через несколько дней. Sam 6 лет назад 0
Я могу только сказать вам, что я хочу видеть в след. Он не показывает, что произошло раньше (поэтому большая часть UNKNOWN для процесса без стека (н / д)) magicandre1981 6 лет назад 0
rzudd.sys также вызывает использование IRP, поэтому действительно удалите все Razor, связанные с системой. magicandre1981 6 лет назад 0
Согласен - удалите все, что Razer с вашей машины, клавиатуры и мыши в комплекте. Jamie Hanrahan 6 лет назад 0
Да, я определенно не собираюсь снимать клавиатуру из-за утечки памяти ... Sam 6 лет назад 0
Для работы клавиатуры клавиатура не требуется. Если вы не хотите удалить неисправный драйвер, не ясно, как мы можем помочь вам Ramhound 6 лет назад 0
Я удалил драйвер, и это намного лучше, пока. Комментарий выше хотел, чтобы даже аппаратные средства были удалены. Я собираюсь сделать еще несколько тестов, и если все будет в порядке, я обновлю. Sam 6 лет назад 0
Итак, Бритва (Кортекс) вызвала ложь, которую я видел по следам. [Принять ответ] (https://meta.stackexchange.com/a/5235), чтобы «закрыть» вопрос magicandre1981 6 лет назад 0
Хорошо, я только что прошел кучу тестов после удаления RazerCortex. Общий размер невыгружаемого пула намного ниже. Хотя сейчас я вижу тэги EtwB, smNp, smCB, NVRM довольно высокими, но не такими высокими. Я также провел тест `typeref` и составил график. Пул невыгружаемого доступа все еще растет со временем, но ничего подобного не было. Я попытаюсь отследить другие теги самостоятельно или выполнить поиск в другом месте на superuser.com. Что касается этого вопроса и двух тегов, то он решен :) Большое спасибо. Sam 6 лет назад 0
@SamuilDichev EtwB используется журналом инструментария производительности Windows. Таким образом, вы все еще запускаете его. magicandre1981 6 лет назад 0
Хаха, достаточно честно. Теперь все вроде нормально, так что спасибо большое. Sam 6 лет назад 0
@SamuilDichev Добро пожаловать ✌️ magicandre1981 6 лет назад 0
-2
typhirz

У меня была точно такая же проблема. Теги FMic и IRP постоянно находились наверху, занимая концерты из невыгружаемого пула, если мой компьютер оставался включенным на длительное время без надлежащей перезагрузки. Я определил его для Razer Cortex, моего единственного программного обеспечения Razer в то время, и в тот момент, когда я удалил его, мой невыгружаемый пул сократился до 1,2 ГБ вместо 3-4 ГБ, после того как мой компьютер был включен в течение нескольких дней. Ранее я пытался переустановить драйверы Killer Network и удалил драйвер Razer для устройства, которое больше не использовал, но ни одно из них не помогло так, как удаление Cortex.

Это не помогает автору, это отличная информация, может быть, даже отличный ответ на ваш вопрос, хотя Ramhound 6 лет назад 1

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