После установки SSDkeeper заметил очень странную картину — через некоторое время работы компьютера количество доступной памяти заметно снижается. При стандартном наборе постоянно запущенных приложений (браузеры, торрент и DC++ клиент) из 16Гб остается примерно половина.
Диспетчер задач не давал ответа на вопрос об утечки памяти, поэтому следующей утилитой диагностики была RamMap:
На скриншоте приведено состояние системы уже после устранения проблемы, ранее Nonpaged Pool занимал порядка 4-6Гб.
Далее понадобилась программа Poolmon:
При сортировке по полю Bytes (poolmon -b
), вверху списка оказался драйвер с тегом CTNP. Ранее значение было в районе 3-4Гб.
Чтобы найти его название по тегу, можно воспользоваться командой findstr:
findstr /s CTNP C:windowssystem32drivers*.sys
Команда ищет строку «CTNP», просматривая содержимое всех файлов с расширением .sys в заданной директории.
Зная имя файла драйвера, можно найти его в стандартном редакторе реестра.
Поиск tcesd.sys, ветка для поиска — HKEY_LOCAL_MACHINESYSTEMCurrentControlSet. В первую очередь интересует раздел services
К счастью, разработчики позаботились о тонкой настройке, но почему-то забыли вынести хотя бы минимальное их число в интерфейс программы, где управление IntelliMemory присутствует только в виде вкл/выкл.
Это было очень неудачным ходом, потому что 20-40% памяти — очень высокая цена за дефрагментатор+оптимизатор чтения/записи на диск.
Использование Nonpaged Pool говорит о том, что память не будет освобождаться средствами ОС, и в случае ее нехватки, выскочит сообщение о необходимости закрыть ненужные программы.
Проблема достаточно распространена и многие отключают эту функцию, либо вообще удаляют программу.
Решение:
Задать ограничение на потребление памяти можно отредактировав заданные параметры реестра вручную, либо создать файл со следующим содержанием, изменить его расширение на .reg и запустить.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicestcesdParams]
"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%.
Автор: tdrz