Pull to refresh

Ускорение реакции Windows XP/7. Бережное использование SSD дисков

Reading time12 min
Views135K
Прочитал топик «У вас 2-3 HDD? Ускорим загрузку и реакцию Windows и программ» который и сподвиг рассказать о моем методе ускорения винды. Началом послужило приобретение SSD SLC диска TS16GSSD25S-S и 4Гб памяти (в то время у меня стояла WinXP 32bit) и желание выжать из системы максимум. Данный метод тестировался мной полгода на XP и столько же на 7.

Итак цели:


1. Защита SSD диска (есть куча мнений о их «живучести», если ставить на них винду и файл подкачки);
2. Ускорение реакции винды на действия пользователя;
3. Ускорение работы приложений и служб системы;
4. Использования памяти свыше 3Гб (в случае если винда ее не видит).


Методы и инструменты:


1. Главный инструмент EWF (Enhanced Write Filter — расширенный фильтр записи).
Он входит в состав Windows XP Embedded. Основные функции модуля — отложенная запись на диск (все измененные данные сохраняются на HDD разом при выходе из системы или по команде пользователя) и «заморозка состояния системы» (запрещена любая запись на диск, при каждом включении ПК система имеет состояние на момент активации функции). В сети много описаний и примеров использования EWF (например тут можно скачать программу и софт управляющий режимами работы EWF, новую версию EWF от Win7 в сети не видел, могу выложить) Плюсы и минусы данного модуля:
  • + единожды измененный файл (например файл реестра пользователя NTUSER.DAT) будет хранится в памяти и все обращения будут идти уже к его копии в памяти, тем самым увеличивая скорость системы
  • + вся запись на диск происходит в память — увеличивая скорость системы
  • + можно включить отложенную запись на один конкретный раздел диска
  • + можно по команде пользователя «скинуть» все изменения на диск (например при установке тяжелого ПО)
  • — вся запись на диск происходит в память — потеря питания приводит к потери данных (а точнее к потере изменений за сессию)
  • — ограничен размер буфера в памяти 512Мб — при его полном заполнении СИСТЕМА ВИСНЕТ НАГЛУХО с потерей всех изменений за сессию (в версии Windows Embedded Standard 7 это ограничение увеличено до ~1300Мб)
  • — нет как такового инсталлятора (нужно копировать файлы с заменой, и править реестр, причем в безопасном режиме, т.к. к некоторым веткам реестра нет доступа для reg файлов)

2. Метод — перенос TEMP файлов на RAM диск.
Переназначаем путь у переменных среды TMP и TEMP на RAM диск (Свойства системы — Дополнительно — Переменные среды). Папки Windows/TEMP и Documents and Settings\«Пользователь»\Local Settings\Temp\ следует заменить на ссылки на TEMP папку в RAM диске (это можно сделать простым созданием ярлыка папки или созданием «символьной ссылки» сторонними средствами, например описанными тут). Как правильней сделать судить не берусь т.к. мало времени уделил этому вопросу, но у меня все работало отлично. Делать ссылки нужно лишь для «криво написанных» программ, предполагающих TEMP директорию исключительно в Windows папке. Плюсы и минусы метода:
  • + не надо чистить каталог TEMP на RAM диске (при каждой перезагрузке данные в них будут теряться)
  • + некоторое ускорение системы
  • + некоторые утилиты допускают создание RAM диска в памяти свыше 3Гб, тем самым можно задействовать «недоступную» память
  • + избавление SSD диска от хранения временных файлов
  • — ограниченный размер TEMP папки (для некоторого ПО 500-800Мб мало)
  • — некоторое ПО скидывает в TEMP каталог данные нужные ей после перезагрузки, естественно после оной их там не окажется

3. Метод — перенос SWAP-файла на RAM диск.
Стандартными средствами перенести файл подкачки на другой диск возможно, но я столкнулся с проблемой, когда при старте системы RAM диск подхватывается уже после подхватывания SWAP файла. В результате винда сама создает файл изменяемого размера на диске с системой. Выход найденный мной — программа addswap.exe (в составе утилиты Gavotte RAMDisk), позволяющая «подцепить» файл подкачки уже после старта системы (по сути он пересоздается каждый раз при старте системы), причем есть возможность создания файла не в корне, а по определенному пути. Запускать ее необходимо только единожды. Под вопросом остаются расхожие мнения о том что на диске С обязательно должен быть файл подкачки, пусть и минимального размера (что-то там с дампами памяти при крахе программ и т.д.), а так же мнения о том, что без него система работает чуть ли не лучше (я все таки не доверяю винде, даже семерке, и стараюсь «держать в системе» небольшой 500-1000Мб файл подкачки, все равно он в памяти, но при этом рекомендую всегда использовать «фиксированный» размер файла подкачки). Плюсы и минусы метода:
  • + ускорение доступа к файлу подкачки
  • + создание RAM диска в недоступной памяти свыше 3Гб
  • + избавление SSD диска от хранения файла подкачки
  • + фрагментация файла подкачки больше не важна
  • — ограниченный объем файла подкачки

4. Инструменты — создание RAM диска в неиспользованной ОС памяти.
Допустим у нас винда 32bit, установлено 4Гб оперативной памяти, и BIOS материнки поддерживает их. ОС обычно видит 3...3,5Гб оперативки, остальное остается недоступным (ключ PAE в boot.ini в моем случае не помог). Мне известно 2 программы, которые смогли создать RAM диск в недоступной памяти — SuperSpeed RamDisk Plus и Gavotte RAMDisk. Первая достаточно «тяжела», поваляет сохранять данные с RAM диска при завершении работы, и восстанавливать их при старте системы, но не подцепляет файл подкачки (слишком поздно монтируется RAM диск при старте системы). Вторая проста и не прихотлива, имеет возможность работы через командную строку, данные сохранять можно вручную (или путем написания bat файлов под автозагрузку), основной плюс — мне удалось установить на нее файл подкачки, чтобы при старте системы он самостоятельно подцеплялся (но это происходит немного кривовато — в настройках файла подкачки в ОС этот SWAP-файл не виден, но общий объем SWAPа при этом указывается верно). Обе программы могут создавать папку TEMP при монтировании диска (удобно, если используется режим «не сохранять данные при выключении компьютера»). И еще один заметный минус SuperSpeed — допустим вы используете «сохранение данных по выключению», если диск заполнен на 100Мб, то логично что файл образа этого диска будет сопоставим, НО если вы хоть раз заполнили диск на 300Мб, то образ диска никогда уже не будет меньшего размера (хоть удалите с RAM диска все данные), помогает только пересоздание диска.

5. Метод — не храните личные данные на диске с системой и уж тем более на рабочем столе.
Все «Мои документы», фильмушки, фотки и т.д. советую хранить НЕ на системном разделе диска. Можно назвать причиной замедление работы, особенно это объективно когда все хранится на рабочем столе, но главная причина — сохранность данных. Лично я давно перешел на использование сервера в домашних условиях — все данные в семье хранятся там, это надежно и дает возможность доступа к ним с любого компа, ноутбука и КПК. Он всегда включен, всегда доступен, а на вопрос зачем держать сервер только для этого — у меня NAS сервер только лишь часть реализованных им возможностей. В связи с проблемой недоступности данных «вне дома» — верю вы придумаете решение (моим решением является VPN соединение, и не более 10 файлов на ноутбуке/кпкашке с собой). Еще есть чувство «безнаказанности», помню в 96г обливался потом, поняв что рухнул важный раздел на харде, сейчас же изгаляюсь над виндой как хочу, с уверенностью что при проблеме восстановлю ее из образа Acronis-ом за 10 минут (на том же сервере лежат порядка 10 образов на разные компы и ноуты и с разными ОС под них). Еще плюс — мне достаточно харда в 16Гб для работы под Win7.

6. Метод — перенос пользовательских папок на RAM диск.
Сильно не бейте — у меня были причины так поступить. Сначала я включил режим EWF на системный диск, спустя какое-то время мне стало не хватать буфера в 512Мб для комфортной работы (приходилось перезагружать комп раз в 1-2 дня, а обычно он у меня неделями находился в «режиме сна» и перезагружался крайне редко). Проанализировав какие файлы чаще всего меняются (отжирая при этом буфер EWF) пришел к выводу что это в меньшей степени сами файлы винды в папках WINDOWS и Program Files и в большей степени папка текущего пользователя. Решено было разнести на разные диски папку пользователя (в моем случае два пользователя) и файлы винды/программ.
Программа минимум — сделать 2 логических диска — на первом винда, на втором две папки пользователей из Documents and Settings. Для каждого диска включить EWF, тем самым общий максимальный буфер увеличится до 1Гб.
Программа максимум — перенести папку пользователя на сохраняемый RAM диск — получим очень приличный прирост в скорости, но сохранять образ этого диска надо на раздел БЕЗ EWF, а то есть риск переполнить буфер и получить зависание при перезагрузке системы в момент сохранения образа RAM диска. Плюсы и минусы:

  • + ощутимый прирост в скорости (ярлыки, часть реестра, рабочий стол — все это теперь в памяти)
  • + отклик системы на действия пользователя просто изумительный!!!
  • + буфер EWF теперь не так быстро уменьшается (можно поработать без перезагрузки 3-5 дней)
  • — тот же риск потерять изменения за сессию при зависании/потере питания
  • — ограничен размер (иногда папка пользователя может быть просто огромной)


7. Метод — правильная разметка SSD диска.
Достаточно логична проблема, когда логический блок данных (равный, к примеру, одному физическому блоку на диске) располагается на диске со смещением. Следствие этого — при чтении/записи одного логического блока данных происходит работа с «двумя половинками», а фактически с двумя, физическими блоками на диске. В теории при форматировании диска под Win7 таких проблем не должно возникать, но желательно все таки это проверить, например с помощью Paragon Alignment Tool.

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

Начинал я с Windows XP 32bit

Структура дисков должна получится следующая:

реальные разделы или диски (NTFS)
С: — желательно первый на быстром диске, на нем винда (за вычетом папки TEMP и папок пользователей из Documents and Settings) и «самый важный» софт. EWF включен в режиме отложенной записи.
D: — второй раздел в системе, без каких-либо ускорителей — тут главное надежность. Хранятся личные документы, проинсталлированные игрушки, некоторый софт, так же сюда сохраняется образ RAM диска при выключении.

рам-диски (FAT32)
E: — рам диск, с сохранением данных в образ на диск D, на котором расположены перенесенные профили пользователей. Ориентировочный размер 300-400Мб.
F: — рам диск без сохранения данных, в корне находится файл подкачки, папка TEMP для хранения временных файлов. 500-600Мб.

Можно обойтись без букв E и F если подключать тома RAM дисков как «пустые NTFS папки». К примеру диск E подключить как папку c:\Documents and Settings\имя пользователя\ и отменив букву диска, а F прикрутив так же к каталогу windows/temp с отменой буквы диска, но при этом SWAP придется кидать в туже под папку, а не в корень. Для SuperSpeed RamDisk Plus это можно выполнить через виндовское «Управление дисками», для Gavotte RAMDisk придется работать через командную строку непосредственно с утилитой. Данный метод более предпочтительный т.к. не приходится заморачиватся с «символьными ссылками» (папками, указывающими на другой каталог или диск) и не создается множество дисков в системе.

Теперь к реализации.
Допустим у нас есть диск (SSD или простой HDD), на нем два раздела, C: под систему и D: под данные пользователей.
Отключаем индексацию файлов на всех NTFS томах (для SSD это зло), файл подкачки, восстановление системы, спящий режим (к сожалению придется пользоваться только ждущим режимом).
Чистим папки c:\WINDOWS\Prefetch и c:\Windows\system32\dllcache\.
Выполняем в командной строке sfc /cachesize=0.
Устанавливаем SuperSpeed RamDisk, кидаем в Program Files программу Gavotte RAMDisk. Для использования ими недоступной памяти у SuperSpeed в настройках нужно поставить несколько галочек (подробнее гуглить), у Gavotte — прописать в реестре [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RRamdisk\Parameters] «UsePAE»=dword:00000001 (обычно в комплекте есть reg файл).
Создаем RAM диск SuperSpeed-ом, ставим режим сохранения образа при выключении (место хранения — диск D). Он создаст диск с буквой.
Перезагружаемся и входим под Администратором (если таковой не виден — отображение администратора при запуске [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList] параметр типа dword «Adminus»=«00000001»). Ручками перемещаем все из c:\Documents and Settings\имя пользователя\ на вновь созданный RAM-диск (папка — исходник должна стать пустой) и идем в Мой компьютер — Управление — Управление дисками. Находим RAM-диск, удаляем букву диска и создаем путь, указав папку пользователя на диске C. Все, теперь можно перезайти под собой и проверить стабильность работы — ваши данные хранятся в памяти и записываются в образ на диске D при перезагрузках.
Теперь создаем рам диск с помощью Gavotte RAMDisk, указываем размер, удаляем букву диска (бэкспейсом) и нажимаем «применить». Далее монтируем диск как папку, выполнив rdutil link C:\windows\temp (придварительно ее почистив). Также необходимо переписать пути переменных среды tmp и temp на этот путь (изначально используется папка temp внутри профиля пользователя).
Теперь нужно подключить SWAP-файл, причем в ту же папку temp — выполняем addswap C:\windows\TEMP\pagefile.sys 384 384. Проверить подхватывается ли файл при запуске можно перезагрузившись и попробовав удалить его из temp (система должна не позволить), также в корне диска C не должно быть ни pagefile.sys, ни hiberfil.sys.
Самым последним этапом перезагружаемся в безопасном режиме, копируем файлы для EWF и выполняем reg файл (обычно с ним в архиве идет). При применении reg файла он обязательно должен ответить что ВСЕ данные перенесены. Далее перезагружаемся и активируем режим отложенной записи.

Так же желательна некоторая оптимизация винды — привожу листинг reg файла, который я запускаю при каждой установке XP для каждого! пользователя. Он не претендует на супер правильность, так что советую проанализировать каждый пункт и решить нужен ли он лично вам.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]
«EnablePrefetcher»=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction]
«Enable»=«N»
«OptimizeComplete»=«No»
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout]
«EnableAutoLayout»=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
«NtfsDisable8dot3NameCreation»=dword:00000001
«NtfsDisableLastAccessUpdate»=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
«DisablePagingExecutive»=dword:00000001
«LargeSystemCache»=dword:00000001
«IOPageLockLimit»=dword:03e80000
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\PriorityControl]
«Win32PrioritySeparation»=dword:00000005
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
«BootExecute»=""
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl]
«IRQ8Priority»=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems]
«Posix»=-
«Optional»=-
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
«Auto»=«0»
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
«NoRecentDocsHistory»=dword:00000001
[HKEY_CURRENT_USER\Control Panel\Desktop]
«MenuShowDelay»=«50»
«FontSmoothing»=«2»
«FontSmoothingType»=«2»
«FontSmoothingOrientation»=«1»
[HKEY_CURRENT_USER\software\microsoft\windows\currentversion\explorer\advanced]
«TaskbarGroupSize»=dword:00000006
«SeparateProcess»=dword:00000001
[HKEY_CURRENT_USER\Control Panel\Keyboard]
«InitialKeyboardIndicators»=«2»
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders\{59031a47-3f72-44a7-89c5-5595fe6b30ee}]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
«WaitToKillServiceTimeout»=«10000»
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
«NoFavoritesMenu»=dword:00000001
«NoRecentDocsMenu»=dword:00000001
«NoSMHelp»=dword:00000001
«MemCheckBoxInRunDlg»=dword:00000001
«NoActiveDesktop»=dword:00000001
«NoLowDiskSpaceChecks»=dword:00000001
«NoSharedDocuments»=dword:00000001


Теперь про Windows 7 32bit


С этой виндой будет работать хр-шный EWF, но получилось достать новую версию от Windows 7, у которой буфер отложной записи около 1300Мб. В связи с этим отпадает необходимость переносить папку пользователя из Documents and Settings (к тому же последняя разрослась до неприличных размеров) и все манипуляции сводятся к включению EWF, добавлению RAM-диска с помощью Gavotte RAMDisk и перемещения туда файла подкачки. Reg файл также более скромный т.к. в актуальности многих параметров я не уверен, то оставил только некоторые из них.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]
«EnablePrefetcher»=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction]
«Enable»=«N»
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout]
«EnableAutoLayout»=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
«NtfsDisableLastAccessUpdate»=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
«LargeSystemCache»=dword:00000001
[HKEY_CURRENT_USER\Control Panel\Desktop]
«MenuShowDelay»=«150»
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
«BootExecute»=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
«Auto»=«0»
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
«NoRecentDocsHistory»=dword:00000001
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\DelegateFolders\{59031a47-3f72-44a7-89c5-5595fe6b30ee}]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
«WaitToKillServiceTimeout»=«10000»
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
«MemCheckBoxInRunDlg»=dword:00000001
«NoLowDiskSpaceChecks»=dword:00000001


Для удобства пользования EWF у меня на рабочем столе лежат два батника. Первый сбрасывает буфер на диск и выключает EWF до следующей загрузки системы (актуально при установки ПО). Второй в вкратце показывает сколько израсходовано буфера:

EWF сброс памяти.bat
ewfmgr c: -commitanddisable -live
ewfmgr c: -enable
pause


EWF состояние.bat
@ewfmgr -all | find «Volume Name»
@ewfmgr -all | find «State»
@ewfmgr -all | find «Boot Command»
@ewfmgr -all | find «Memory used for data»
pause
Tags:
Hubs:
-7
Comments15

Articles

Change theme settings