Решение проблем с памятью, занимаемой модулем IntelliMemory в Diskeeper и SSDkeeper

в 11:55, , рубрики: Diskeeper, IntelliMemory, SSDkeeper, отладка, память, метки: , , ,

После установки SSDkeeper заметил очень странную картину — через некоторое время работы компьютера количество доступной памяти заметно снижается. При стандартном наборе постоянно запущенных приложений (браузеры, торрент и DC++ клиент) из 16Гб остается примерно половина.

Диспетчер задач не давал ответа на вопрос об утечки памяти, поэтому следующей утилитой диагностики была RamMap:

image

На скриншоте приведено состояние системы уже после устранения проблемы, ранее Nonpaged Pool занимал порядка 4-6Гб.

Далее понадобилась программа Poolmon:

image

При сортировке по полю Bytes (poolmon -b), вверху списка оказался драйвер с тегом CTNP. Ранее значение было в районе 3-4Гб.

Чтобы найти его название по тегу, можно воспользоваться командой findstr:

findstr /s CTNP C:windowssystem32drivers*.sys

image

Команда ищет строку «CTNP», просматривая содержимое всех файлов с расширением .sys в заданной директории.

Зная имя файла драйвера, можно найти его в стандартном редакторе реестра.

Поиск tcesd.sys, ветка для поиска — HKEY_LOCAL_MACHINESYSTEMCurrentControlSet. В первую очередь интересует раздел services

image

К счастью, разработчики позаботились о тонкой настройке, но почему-то забыли вынести хотя бы минимальное их число в интерфейс программы, где управление 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

Результаты:

image

За неделю работы с программой, я пришел к выводу, что оптимальное значение находится в пределах 512-1024Мб, если конечно копьютер не используется как файловый сервер, но даже если поставить всего 256Мб, польза все равно будет по сравнению полным отключением, которое советуют в интернете.

По статистике с главной страницы программы:

— при отключенной IntelliMemory оптимизация по Read I/O составляет 8%.
— при 256-512Мб увеличилась до 12%.
— при 512-1024Мб — до 14%.

Автор: tdrz

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js