Диспетчер задач не давал ответа на вопрос об утечке памяти, поэтому следующей утилитой диагностики была RamMap:
На скриншоте приведено состояние системы уже после устранения проблемы, ранее Nonpaged Pool занимал порядка 4-6Гб.
Далее понадобилась программа Poolmon:
При сортировке по полю Bytes (
poolmon -b
), вверху списка оказался драйвер с тегом CTNP. Ранее значение было в районе 3-4Гб.Чтобы найти его название по тегу, можно воспользоваться командой findstr:
findstr /s CTNP C:\windows\system32\drivers\*.sys
Команда ищет строку «CTNP», просматривая содержимое всех файлов с расширением .sys в заданной директории.
Зная имя файла драйвера, можно найти его в стандартном редакторе реестра.
Поиск tcesd.sys, ветка для поиска — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet. В первую очередь интересует раздел \services\
К счастью, разработчики позаботились о тонкой настройке, но почему-то забыли вынести хотя бы минимальное их число в интерфейс программы, где управление IntelliMemory присутствует только в виде вкл/выкл.
Это было очень неудачным ходом, потому что 20-40% памяти — очень высокая цена за дефрагментатор+оптимизатор чтения/записи на диск.
Использование Nonpaged Pool говорит о том, что память не будет освобождаться средствами ОС, и в случае ее нехватки, выскочит сообщение о необходимости закрыть ненужные программы.
Проблема достаточно распространена и многие отключают эту функцию, либо вообще удаляют программу.
Решение:
Задать ограничение на потребление памяти можно отредактировав заданные параметры реестра вручную, либо создать файл со следующим содержанием, изменить его расширение на .reg и запустить.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\tcesd\Params]
"MaxMemSizeMB"=dword:00000400
"MaxMemUsagePct"=dword:0000000a
"MinMemSizeMB"=dword:00000020
"MinMemUsagePct"=dword:00000001
Два верхних параметра описывают верхний лимит — не больше 1Гб или 10% памяти.
Два нижних параметра описывают минимальное состояние — 32Мб и 1% памяти системы.
Важно: Перед внесением изменений нужно либо загрузиться в безопасном режиме, либо остановить основную службу SSDkeeper/Diskeeper'а через оснастку services.msc, иначе после перезагрузки параметры опять сбросятся.
Не помешает также перед изменениями сделать бэкап ветки реестра, экпортировав весь раздел \tcesd\
Результаты:
За неделю работы с программой, я пришел к выводу, что оптимальное значение находится в пределах 512-1024Мб, если конечно копьютер не используется как файловый сервер, но даже если поставить всего 256Мб, польза все равно будет по сравнению полным отключением, которое советуют в интернете.
По статистике с главной страницы программы:
— при отключенной IntelliMemory оптимизация по Read I/O составляет 8%.
— при 256-512Мб увеличилась до 12%.
— при 512-1024Мб — до 14%.
Комментарии (8)
Demon_i
27.03.2017 18:43Не проще удалить это невнятное г.? Дефрагментировать ССД — это сильно.
tdrz
28.03.2017 02:27Предполагаю, что разработчики это знают, и дальше стандартного TRIM+возможно дефрагментации метафайлов там не заходит. В настройках она различает обычные диски и SSD.
Вообще в статистике программы делается упор на «Eliminated I/O's» и упреждение фрагментации, т.е. ее функции — кеширование/оптимизация и т.п.VaKonS
28.03.2017 11:13Знают: http://www.condusiv.com/home-use/ssdkeeper/home/overview/
> SSDKeeper provides the same core patented functionality as Diskeeper 16
> minus the defragmentation options that are only applicable to hard disk drives.
“SSDKeeper предлагает тот же основной патентованный функционал, что и Diskeeper 16, кроме возможностей дефрагментации, применимых только к жёстким дискам”.
xRay
27.03.2017 23:03SSD Не нужно дефрагментировать в этом то прелесть SSD.
Как и автор поста я тоже искал утечку в моей Windows 10. Выглядит так когда система находится в простое т.е. никто не трогает оперативная память начинает заполнятся и не очищается. Оказалось это супер-пупер умный механизм кеширования памяти Windows как бы не занимает память, а выглядит так что он ее всю съел и не отдает.tdrz
28.03.2017 02:44Ну, статья в первую очередь для тех, кто уже пользуется программой. Либо тех, кто хочет узнать как отследить утечки памяти не зная названия софта, виновного в этом.
LoadRunner
28.03.2017 12:57В Вашем случае не утечка, а улучшенный механизм работы системы с оперативной памятью.
В статье же речь об использовании памяти отдельным приложением, а не системой.
atd
Подскажите, а зачем насиловать систему, если можно просто выкинуть костыли?
tdrz
Способ хороший, но решение не всегда выглядит красиво.
Например, вместо настройки модуля кеширования Diskeeper'а в интернете часто предлагают его просто выключить, или полное удаление программы, как следующий этап.
Это напоминает борьбу с симптомами, вместо борьбы с болезнью, потому как причиной его установки было то, что DC++ совместно с торрентом порой довольно сильно грузят диск. По-отдельности проблем нет, но отказываться в качестве «решения» от одного из них, я пока не хочу.