Повышаем скорость чтения с жесткого диска в Windows XP

Повышаем скорость чтения с жесткого диска в Windows XP Сидим, ждём и ждём, а ПК всё тупит и тупит. Кажется, что скорость чтения с жесткого диска в Windows XP упала ниже плинтуса, постоянно красным горит сигнальная лампочка жёсткого диска. Как же увеличить скорость чтения с жесткого диска в Windows XP?

Не будем нагружать систему лишними программами-твикерами, а воспользуемся стандартными средствами самой ОС Windows XP.

Определяем размер кластера

Размер кластера в производительности файловой системы и жесткого диска играет далеко не последнюю роль. Ранее в операционных системах Windows размер кластера был равен 512-и байт, теперь он по умолчанию равен 4096 байт (т.е. 1 кб.), что является оптимальным размером под системный раздел с операционной системой.

Но, например под раздел с большими файлами (аудио, видео, софт и т.д.), лучше выбирать максимальный размер кластера в 64 кб, - это снизит фрагментацию и повысит производительность диска.

Размер кластера и файловую систему можно выбрать только перед форматированием раздела.

Изменяем поведение файловой системы - fsutil

В стандартном наборе Windows XP есть утилита fsutil, которая поможет нам настроить файловую систему. Первым делом проверим значения параметров disable8dot3, allowextchar и disablelastaccess:

fsutil behavior query disable8dot3
disable8dot3 = 0
 
fsutil behavior query disablelastaccess
disablelastaccess не установлен
 
fsutil behavior query allowextchar
allowextchar не установлен
  • disablelastaccess - обновлять ли штамп времени последнего доступа.
  • disable8dot3 - Когда значение параметра disable8dot3 = 0, то при каждом создании файла с длинным именем, файловая система NTFS или FAT создает дополнительно вторую запись для файла с длиной имени 8.3 символа.
  • allowextchar - Включает/отключает использование в коротких именах файлов 8.3 символов из расширенного набора символов, включая диакритические знаки.

Устанавливаем значения параметров disable8dot3, allowextchar и disablelastaccess:

fsutil behavior set disablelastaccess 1
fsutil behavior set disable8dot3 1
fsutil behavior set allowextchar 0

Размер файла подкачки pagefile.sys (виртуальная память)

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

Как определить минимальный и максимальный размеры файла подкачки (виртуальной памяти)? - это можно сделать при помощи Process Explorer'a нажав CTRL+I или выбрав в меню программы View/System Information по показаниям "Commit Charge (K)" или же "Выделение памяти (КБ)" с стандартном диспетчере задач, но перед этим нужно знать размер файла подкачки "По выбору системы", после чего максимально пригрузить систему всеми теми приложениями, которыми Вы пользуетесь ежедневно.

|-- Commit Charge (K) -----
| Current       1 681 428 |
| Limit         5 138 164 |
| Peak          2 404 324 |
| ----------------------- |
| Network         46.79%  |
| Current/Limit   32.70%  |
---------------------------

Из "Commit Charge (K)" видно текущий размер файла подкачки (виртуальной памяти) "Current" и максимальное/пиковое "Peak" значение. Так или иначе не рекомендуется устанавливать размер файла подкачки менее чем в 1.5 (полтора) размера имеющейся оперативной памяти.

Фиксировать размер файла подкачки для мнимой защиты от фрагментации не рекомендуется имхо еже палка всегда имеет два конца. Т.е. установив недостаточное значение можем получить нехватку, установив большое значение получим медленную работу с файлом pagefile.sys. Мой ПК постоянно чем-то загружен - фотожоп, компилинг, сервера, виртуалка, чаты, редакторы, куркуляторы, анализаторы и т.д.:), которые бывает пожирают до 3 и более ГБ файла подкачки, а поэтому я никогда не парюсь с выбором размера для pagefile.sys и просто устанавливаю или "По выбору системы" или минимум в два раза от имеющейся оперативки и максимально возможный размер соответственно ибо каждый рабой день отличается потреблением файла подкачки от 1 до 3 и более ГБ.

Размещение файла подкачки на другом жестком диске

Ещё хорошим ходом, который повысит скорость чтения с жесткого диска в Windows XP, будет перемещение файла подкачки с системного диска на другой жесткий диск (не другой раздел, а именно другой диск!), перемещение же файла подкачки pagefile.sys на другой раздел в пределах одного диска ощутимого прироста скорости чтения/записи с жесткого диска не принесёт, хотя при этом и может иметь некий смысл. В тоже время нужно отключить файл подкачки на системном разделе (обычно это диск С:\) и создавать его там только тогда, когда нужна будет отладочная информация, например если система выпала в BSOD, то на системном диске создаем подкачку до обнаружения граблей, а после снова отключаем его.

Самым лучшим вариантом для файла подкачки будет жесткий диск "SSD SATA" или в идеале "SSD PCI Express". Жесткие SSD диски со способом подключения SATA будут гораздо дешевле, чем SSD диски со способом подключения с через слоты PCI Express, но и скорость чтения записи также будет разная, - но в любом случае файл подкачки на SSD диске будет гораздо шустрее работать нежели на обычном жестком диске! Подробнее про SSD диск.

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

  1. Попытайтесь избегать размещения pagefile.sys (файла подкачки) на том же диске, где расположены системные файлы, обычно это диск C:\.
  2. Не размещайте pagefile.sys (файла подкачки) на отказоустойчивом диске тома RAID-5 или зеркального тома, иначе возможно замедление скорости записи/чтения данных, поскольку они будут записываться сразу в несколько мест.
  3. Не создавайте несколько pagefile.sys (файла подкачки) в различных разделах в пределах одного физического диска.

Если есть другой жесткий диск с несколькими разделами, то можно разбить файл подкачки на несколько файлов, например по 750 МБ, каждый из которых разместить в отдельном разделе - это по идее должно ускорить чтение/запись виртуальной памяти.

Если кому-то не нравится размер съедаемой, системным кэшем, оперативной памяти, то можете пошаминить утилитой CacheSet но, особого смысла в этом нет ибо система снова его заполнит или освободит в зависимости от своих потребностей!

Распределение времени процессора и Использование памяти

Теперь относительно распределения времени процессора и использования памяти (системного кэша)... На эту тему по всей сети Интернет точатся жесткие баталии и однозначного победителя там нет, а мы же постараемся пролить на эти вопросы максимум белого света при котором можно будет разглядеть куда в этом вопросе ставить точку.

Итак для "Свойства системы - Дополнительно" есть "Быстродействие - параметры", где на вкладке "Дополнительно" можно найти настройки вечного преткновения, менять или не менять, быть повышению производительности или не быть... Этими настройками являются "Распределение времени процессора" с возможными вариантами для "программ" и "служб, работающих в фоновом режиме", а также "Использование памяти" с вариантами переключения для "программ" и "системного кэша".

Перед тем как делать выводы для того, какие настройки подойдут для нашего конкретного случая мы сначала должны определится с понятием/значением для "служб, работающих в фоновом режиме" и "системного кэша":

  • службы, работающие в фоновом режиме - это те службы/процессы, которые не предоставляют пользовательского интерфейса/окна, например ёкрн:) т.е. ekrn.exe, svchost.exe, system и т.д.;
  • системный кэш - это часть выделенной физической (оперативной) памяти, которая служит для сохранения частей файлов/данных, к которым в последнее время были обращения, изменяется динамически в зависимости от активности и потребностей системы, после прошествии определенного времени невостребованные сохранённые части файлов/данных сбрасываются в файл подкачки.

По большому счёту почти все службы работают в фоновом режиме, а значит для рабочей станции будет более целесообразно отдать "Распределение времени процессора" для "служб, работающих в фоновом режиме", а приоритет "Использование памяти" выделить для "прогамм", для сервера же, где почти нет выполняющихся интерактивных (оконных) программ, настройки "Распределение времени процессора" так и остаются для "служб, работающих в фоновом режиме", а приоритет "Использование памяти" отдаётся для "системного кэша" - вот и всё

Реестр и производительность HDD

Настало время копнуть ещё чуть глубже...

ContigFileAllocSize

Параметр DWORD "ContigFileAllocSize" по идее должен располагаться по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem и должен регулировать размер непрерывного пространства, который на жестком диске должна выделить система, под запись файла, - увеличение значения этого параметра должно снизить фрагментацию диска и следовательно повысить производительность, особенно при работе с большими файлами (аудио, видео и т.п.).

Однако, на сайте microsoft.com "ContigFileAllocSize site:microsoft.com" довольно мало официальной информации по этому параметру и предположительно он относится только к "Microsoft Windows 98".

Описание этого параметра также отсутствует и в библиотеке на technet.microsoft.com, а поэтому нельзя однозначно сказать, учитывается ли данный параметр системой, но в любом случае можно попробовать...

На некоторых сайтах жертвы "копи/пасты" могут по ошибке указывать значение данного параметра в байтах вместо килобайтов, - правильное значение в КБ.! Также на microsoft.com не потрудились уточнить в какой системе счисления нужно вводить значение, в шестнадцатеричной или же десятичной, короче говоря догадайся сам, но здесь значение "Value Name" данного параметра указано в десятичной системе счисления.

IoPageLockLimit

Параметр DWORD "IoPageLockLimit" в ветке HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management определяет в байтах размер резервируемой оперативной памяти для операций ввода/вывода и чем выше будет значение, тем оперативнее будет работа с жестким диском.

Однако, везде нужно знать меру. Рекомендуется устанавливать значение данного параметра в пределах 15-25% от общей оперативной памяти, например, - если у нас есть 1 ГБ (1024 МБ), то оптимальным значением этого параметра в десятичной системе (decimal) будет равно около 200 МБ, что в десятичной системе (decimal) в байтах будет 0x0c800000 (209715200)

Проверяем результат оптимизации

Для проверки можно использовать программу с открытым исходным кодом CrystalDiskMark.

До оптимизации:

-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
 
           Sequential Read :   130.746 MB/s
          Sequential Write :   115.600 MB/s
         Random Read 512KB :    51.285 MB/s
        Random Write 512KB :    69.450 MB/s
    Random Read 4KB (QD=1) :     0.793 MB/s [   193.6 IOPS]
   Random Write 4KB (QD=1) :     1.743 MB/s [   425.5 IOPS]
   Random Read 4KB (QD=32) :     1.038 MB/s [   253.3 IOPS]
  Random Write 4KB (QD=32) :     1.931 MB/s [   471.5 IOPS]
 
  Test : 50 MB [E: 30.6% (1565.1/5122.3 MB)] (x3)
  Date : 2014/05/24 10:57:06
    OS : Windows (x86)

После оптимизации:

-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 (C) 2007-2013 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
 
           Sequential Read :   149.559 MB/s
          Sequential Write :   123.867 MB/s
         Random Read 512KB :    63.696 MB/s
        Random Write 512KB :    85.223 MB/s
    Random Read 4KB (QD=1) :     0.906 MB/s [   221.2 IOPS]
   Random Write 4KB (QD=1) :     2.185 MB/s [   533.5 IOPS]
   Random Read 4KB (QD=32) :     1.098 MB/s [   268.1 IOPS]
  Random Write 4KB (QD=32) :     2.374 MB/s [   579.5 IOPS]
 
  Test : 50 MB [E: 30.6% (1565.1/5122.3 MB)] (x3)
  Date : 2014/05/26 22:09:20
    OS : Windows (x86)

Разумеется, что для получения более менее объективного результата тест нужно запускать несколько раз и после перезагрузки в нормальном режиме работы, т.е. когда не запущены мультимедиа плееры, игры и пр.

Итоги

Из собственного опыта могу сказать, что всевозможные сторонние дефрагментаторы, RAM и кэш оптимизаторы и т.п., отличные от тех, которые входят в состав самой ОС - это обычно ничто иное как сплошная маниловщина и особо ощутимого результата не дают.

Если справедливо не распределить имеющиеся ресурсы между установленным ПО, путём его правильной настройки, и правильно не сконфигурировать или не использовать по назначению системное ПО, то никакие оптимизаторы и твикеры 99-100% не помогут!

Надеюсь, что приведённые выше рекомендации помогут Вам повысить скорость чтения с жесткого диска в Windows XP. Аптайм моего ПК составляет до одного месяца, т.е. ровно столько, сколько требуется дядюшке Билу чтобы выпустить и опубликовать патчи требующие перезагрузки ОС!:)

Ссылки по теме:

Автор: Олег Головский


Комментарии   

АдМинь БагоИскатель
0 #4 АдМинь БагоИскатель 31.07.2013 08:39
Цитирую Guest:
Сильно фрагментированный раздел с системой после дефрагментации работает "на глаз" в полтора - два с половиной (!) раза быстрее.
Но дефрагментация может убить ЖД - непрерывная работа по позиционированию головок и процессы записи/чтения могут перегреть электронику.
Могу ошибаться, но визуальное изучение плат ЖД показало, что современные ЖД имеют общую микруху, управляющую поворотом блока МГ и шпиндельным двигателем. Т.е. повышение интенсивности работы ЖД греет одну и ту же микруху.
Так что гонять длительную дефрагментацию на ЖД без обдува крайне не рекомендую. Или контроллируйте температуру через S.M.A.R.T. - критическая температура ЖД 55 градусов по Цельсию. ИМХО, более 35-40 лучше "не греть".

Хорошее дополнение, микрософт тоже рекомендует не злоупотреблять дефрагментацией.

А вентиль нужно не только на ЖД ставить, а желательно и на весь сись блок - у меня на блоке сняты обе крышки и внутрь направлен напольный вентиль для одновременного охлаждения всего и вся :-)
Цитировать
Guest
+1 #3 Guest 30.07.2013 14:40
Сильно фрагментированн ый раздел с системой после дефрагментации работает "на глаз" в полтора - два с половиной (!) раза быстрее.
Но дефрагментация может убить ЖД - непрерывная работа по позиционировани ю головок и процессы записи/чтения могут перегреть электронику.
Могу ошибаться, но визуальное изучение плат ЖД показало, что современные ЖД имеют общую микруху, управляющую поворотом блока МГ и шпиндельным двигателем. Т.е. повышение интенсивности работы ЖД греет одну и ту же микруху.
Так что гонять длительную дефрагментацию на ЖД без обдува крайне не рекомендую. Или контроллируйте температуру через S.M.A.R.T. - критическая температура ЖД 55 градусов по Цельсию. ИМХО, более 35-40 лучше "не греть".
Цитировать
Арсений Яковлевич
0 #2 Арсений Яковлевич 10.07.2013 10:32
Цитирую Guest:
Статья интересная. Не знаю как описанные прибомбасы влияют на скорость. т.к эфект незаметен. Но по дефрагментации не согласен. Раздефрагментированный диск сильно лагает и после дефраг. намного шустрее бегает - заметно ощутимо :-)
PS: Использую стандартный дефраг. от Win.

Сколько людей, почти ровно столько и мнений... - например отключение "disablelastacc ess" избавляет систему от лишних обращений к диску для обновления метки времени последнего доступа к файлу, тоже и по другим параметрам (выше есть их описание).

Про дефрагментацию имелось ввиду "всевозможные" (сторонние), отличные от системного ПО входящего в саму ОС - спасибо, нужно будет статью подправить :roll:
Цитировать
Guest
0 #1 Guest 10.07.2013 08:22
Статья интересная. Не знаю как описанные прибомбасы влияют на скорость. т.к эфект незаметен. Но по дефрагментации не согласен. Раздефрагментир ованный диск сильно лагает и после дефраг. намного шустрее бегает - заметно ощутимо :-)
PS: Использую стандартный дефраг. от Win.
Цитировать

Добавить комментарий


Защитный код
Обновить

2 megabytes