**Вместо вступления:**
//Собственно говоря, данный материал больше будет относиться к Windows 2003/XP, но многое работает и в NT4, 2000//
Очень часто встречаю в сети всевозможные "твикеры" и т.п. ерунду... и поражаюсь тому, что за них еще денег требуют... ведь порой они просто паразитируют на самой системе.
Итак, поехали... (подразумевая что вы знаете что такое реестр Windows NT системы и как его редактировать). Ну и, как всегда, умываю руки в случае, если вы угробите систему при использовании тех или иных советов.
!!А вообще то, **делайте копию ветки реестра** перед тем, когда что-то в нем меняете, не зная какой результат это вам даст! Тогда, я думаю, особых сложностей с отменой тех или иных экспериментов в реестре не будет!!!
Итак, если конфигурация вашего компьютера что-то вроде PIII-733+, 256МБ, и на HDD свободно как минимум 3-4Гб , то вы можете практически использовать рекомендумые параметры, не опасаясь за его дальнейшую работоспособность.
----
==Настройки производительности==
{{toc}}
===Процессорный кеш второго уровня==
Рассмотрим ветку реестра.
**HKEY_LOCAL_MACHINE\SYSTEM\~CurrentControlSet\Control\Session Manager\Memory Management**
По умолчанию Системе не известно какой процессорный кеш 2 уровня используется и поэтому он не задействуется для всевозможных операций как первый, но использовать его для предназначенных ему нужд система может. По умолчанию она подозревает что у вас 256Кб, но лучше выставить его размер.
//**~SecondLevelDataCache**// (REG_DWORD) = Размер кеша 2 уровня процессора в КБ
пример ~SecondLevelDataCache=1024 (Для процессора P4-2.8 Prescott c кешем второго уровня 1 МБ) - кстати, это поднимет производительность во многих играх и таких программах как 3DMax.
----
===Виртуальная память==
В той же ветке
**HKEY_LOCAL_MACHINE\SYSTEM\~CurrentControlSet\Control\Session Manager\Memory Management**
Рекомендуется при наличии физически! второго жесткого диска использовать его на первом разделе второго жесткого диска.
//**~PagingFiles**// (REG_MULTI_SZ) = (Имя файла и путь)+(пробел)+(мин размер)+(пробел)+(максимальный размер) . Например, у вас 512 мб ОЗУ и поднастроим ~PagingFiles = D:\virtual.sys 512 1024 ; естетственно, у вас должно быть 1024 мб свободного места на диске, согласно примеру.
//**~SystemPages**// (REG_DWORD) = Максимальное количество виртуальных адресов.
В 16-ричном формате ставте FFFFFFFF - Это позволит использовать максимально возможное количество (Без ограничения) но займет примерно 1/3 виртуальной памяти. А также, возможно придется увеличить размер файла подкачки.
//**~LargeSystemCache**// (REG_DWORD) = 0 - отключить 1- включить
значение 1 увеличит производительность файловой системы....
Параметр
//**IOPageLockLimit**// (REG_DWORD) можно расчитать
По следующей формуле - ОЗУ в МБ умножаем на 128 и умножаем на 3/4
Или вот еще такой (мой метод) ОЗУ в КБ делим на 8 и умножаем на 3/4 .
При данной корректировке ~I/O получим прирост производительности при чтении и записи на HDD
Пример Для ОЗУ = 2 ГБ -> 2*1024*1024/8*3/4=196608
IOPageLockLimit=196608(Decimal)
//**~DisablePagingExecutive**// (REG_DWORD) = 0 отключить, 1- включить.
По умолчанию = 0 - но рекомендую поставить = 1 , дабы не забивать виртуальную память ядром системы, да и сама система будет работать немного шустрее.
----
===Префетч (ускорение запуска)==
Далее пойдет речь о подветви **Memory Management- ~PrefetcherParameters**
Эта настройка позволяет ускорять запуск программ и системных файлов - обеспечивая их дополнительным кешированием
**HKEY_LOCAL_MACHINE\SYSTEM\~CurrentControlSet\Control\Session Manager\Memory Management\~PrefetchParameters\**
//**~EnablePrefetcher**// (REG_DWORD) = Применимы значения (0, 1, 2, 3)
0 - отключено (Рекомендуется для маломощных компьютеров)
1 - рекомендуется для компьютеров с ОЗУ до 256МБ (Только программы)
2 - Для тех у кого на борту от 512МБ и более (программы и системные быблиотеки)
3 - Это уже рассчитано для супер-пупер мощных процов + минимум ОЗУ 512Мб, хотя при ~LargeSystemCache=1 прекрасно работает и на 256Мб ОЗУ.
Рекомендую ~EnablePrefetcher=3
//**~RootDirPath**// (REG_SZ) = Prefetch - это путь (каталог) относительно %systemroot%, т.е. например, C:\WINNT\Prefetch тоже можно изменить, если есть другой физический диск. Аналогично с файлом подкачки, хотя не особо заметно.. но тоже дает кое-какую долю прироста... (PS папку Для Prefetch, на новом месте, придется создать самому)
//В природе вы можете встретить упоминание о ~EnablePrefetcher=5 или волшебном ключе ~EnableSuperFetch=1 - скажу из личного опыта толку от них нет. А в Windows XP SP2 ~EnablePrefetcher=5 - может дать ошибку о повреждении реестра.//
Параметры Prefetch можно также использовать для запуска отдельных программ, достаточно в свойствах ярлыка программы добавить ключик /Prefetch:1 - и заметим ускорение запуска этой программы, но, к сожалению, не со всеми программами это работает.
На примере моего любимого браузера ~FireFox в свойствах ярлыка
"C:\Program Files\Mozilla Firefox\firefox.exe"
меняем на...
"C:\Program Files\Mozilla Firefox\firefox.exe" /prefetch:1
----
===Настройка паузы перед отключением служб и программ==
Для служб и модулей:
**HKEY_LOCAL_MACHINE\SYSTEM\~CurrentControlSet\Control**
Время ожидания ответа от системных библиотек, сервисов, программ при их зависании или выгрузки из памяти - т.е. остановка или отключение
//**~WaitToKillServiceTimeout**// (REG_SZ) = Значение в милисекундах вполне приемлемое = 2000 или если вдруг возникнут проблемы (это можно будет заметить по логам - вского рода ошибки в завершении служб, хотя это может возникнуть только на перегруженных серверах с MS ISA, MS SQL, MS EXCHANGE) 5000, но никак не = 0 если не хотите чтобы все рухнуло.
По умолчанию оно равно 20000 а при установленном почтовом сервере (Exchange) обычно система увеличивает его до 80000. Но, опять же из личного опыта, скажу что даже с Exchange 2003 параметр ~WaitToKillServiceTimeout=2000 проблем не создавал.
Однако, на сайте microsoft.com все же встречается упоминание о проблемах, вызываемых уменьшением данного параметра при использовании Exchange.
Для программ:
**HKEY_USERS\.DEFAULT\Control Panel\Desktop** (Для всех по умолчанию)
**HKEY_CURRENT_USER\Control Panel\Desktop** (Для текущего пользователя)
//**~WaitToKillAppTimeout**// (REG_SZ) = 2000 или опять же 5000 в случае проблем
По умолчанию оно равно 20000
----
===Настройка запуска скриптов и выгрузки модулей из памяти ==
**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\~CurrentVersion**
Очень интересная ветка с подветками для настроек, но практически мало чего для настройки производительности.
**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\~CurrentVersion\Winlogon**
//**~RunLogonScriptSync**// (REG_DWORD) = 0 или 1
По человечески говоря, значение 0 ничего не даст, точнее, все будет так же как раньше; а значение 1 - даст вам некоторые удобства в загрузке системы потому, что оболочка Windows Explorer запускается после выполнения скриптов и системных модулей.
Этот ключ **отсутствует по умолчанию** в Windows 2000/XP/2003, естественно, надо его создать
((http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/TechRef/d1941ca0-b6b7-4b67-9cc6-19c3d612c4ec.mspx Если не верите, смотрите сами на мелкософте))
При большом количестве всевозможных модулей в автозагрузке это дает небольшое сокращение времени запуска системы из-за того, что сама оболочка не занимает память до выполнения загрузочных скриптов и т.п.
**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\~CurrentVersion\Explorer**
//**~AlwaysUnloadDLL**// (REG_DWORD) = 0 (по умолчанию) 1(Рекомендую)
~AlwaysUnloadDLL=1 - выгружает из оболочки неиспользуемые модули DLL которые висят в памяти якобы для ускоренного доступа к ним. При ~EnablePrefetcher=3 очень даже рекомендую установить ~AlwaysUnloadDLL=1
----
===Заключение==
Это пожалуй и все, что даст вам реальный рост производительности в системе семейства Windows NT.
Хотя я все это выдал вам проверенным на своем опыте, все же рекомендую ознакомиться с каждым ключом в отдельности самостоятельно, благо это не секретные настройки системы.
!!Вот пример как по отдельности искать информацию по каждому ключу!! ((http://search.msn.com/local/results.aspx?q=AlwaysUnloadDLL&w=ankara%2C+ankara&near=Near+ankara%2C+ankara&lat=39.954723&lon=32.846942&display=ankara%2C+ankara&FORM=QBXR на примере MSN Search))
----
**После написания этого материала, по совету Абрамыча, я произвел тестирование на виртуальном компьтере**
**под Virtual PC 2004 SP1**
используя систему Windows Server 2003 SP1Enterprise Edition, причем с поднятым на нем домене ! (Хотя это уже для следующего материала к статье)
>>file:sys.gif<<
Доказательства эфективности данных настроек в совокупности
Используя то, что нашел под рукой - PC Mark 2002 при следующей конфигурации тестов
>>file:cfgtest.gif<<
Результаты до правки реестра
>>file:do.gif<<
Результаты после настроек реестра (только тех что описаны в данной статье)
>>file:final.gif<<
----
Думаю что в совокупности настроек это вполне достойный результат (Прирост производительности по трем параметрам CPU, MEM, HDD) с учетом того, что тест проводился на виртуальном компьютере - очень даже не плохо !!!
----
**Добавил спустя 1 день:**
прошел один день, а результаты производительности в тестах повысились :)))
Вполне серьезно!!!
Я так подумал и все-таки решил их обнародовать.
>>file:afterday.gif<<
----
Для обсуждения изложенного приглашаю на ((http://forum.compowiki.info/index.php?showtopic=285 Форум)).
SeaWolF.