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

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

image

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

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

image

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

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

findstr /s CTNP C:\windows\system32\drivers\*.sys

image

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

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

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

image

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

Результаты:


image

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

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

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

Комментарии (8)


  1. atd
    27.03.2017 16:08
    +1

    Подскажите, а зачем насиловать систему, если можно просто выкинуть костыли?


    1. tdrz
      28.03.2017 03:17

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

      Это напоминает борьбу с симптомами, вместо борьбы с болезнью, потому как причиной его установки было то, что DC++ совместно с торрентом порой довольно сильно грузят диск. По-отдельности проблем нет, но отказываться в качестве «решения» от одного из них, я пока не хочу.


  1. Demon_i
    27.03.2017 18:43

    Не проще удалить это невнятное г.? Дефрагментировать ССД — это сильно.


    1. tdrz
      28.03.2017 02:27

      Предполагаю, что разработчики это знают, и дальше стандартного TRIM+возможно дефрагментации метафайлов там не заходит. В настройках она различает обычные диски и SSD.
      Вообще в статистике программы делается упор на «Eliminated I/O's» и упреждение фрагментации, т.е. ее функции — кеширование/оптимизация и т.п.


      1. 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, кроме возможностей дефрагментации, применимых только к жёстким дискам”.


  1. xRay
    27.03.2017 23:03

    SSD Не нужно дефрагментировать в этом то прелесть SSD.

    Как и автор поста я тоже искал утечку в моей Windows 10. Выглядит так когда система находится в простое т.е. никто не трогает оперативная память начинает заполнятся и не очищается. Оказалось это супер-пупер умный механизм кеширования памяти Windows как бы не занимает память, а выглядит так что он ее всю съел и не отдает.


    1. tdrz
      28.03.2017 02:44

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


    1. LoadRunner
      28.03.2017 12:57

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