Оптимизация работы дисковой системы компьютера
Несколько поучительных экспериментов
Пользователей персонального компьютера принято нынче делить на «ламеров» и «продвинутых». С «ламерами», в принципе, всё более-менее ясно — любой, даже самый помешанный на компьютерах хакер когда-то был «ламером» — ведь никто не рождается с наследственными знаниями. «Ламер» — это всего лишь пользователь, который только начинает изучение такой непростой вещи, как компьютер. И тут всё зависит от него — есть желание, подкреплённое парой-тройкой незаплесневелых извилин в черепной коробке — будет пользователь знать компьютер если уж не в совершенстве, то, по крайней мере, на уровне грамотного юзера, способного устанавливать и настраивать программы и умеющего выводить из ступора операционную систему при лёгких неполадках. А если лень «товарищу» читать умные книги, боится он задавать вопросы более знающим приятелям — так и останется на позорном уровне бестолкового «чайника», не заглядывающего дальше кнопки «Пуск».
А вот с «продвинутыми» дело обстоит несколько сложнее. Самыми грамотными и опытными пользователями обычно становятся те, кто самостоятельно докапывается до решения возникших проблем; кто не стесняется тратить не такие уж и маленькие по нынешним временам деньги на серьёзные книги по компьютерной тематике; кто находится в курсе дел «силиконовой» индустрии благодаря газетам и журналам; выискивает полезную информацию в Сети. А тот, кто при первом же компьютерном несчастии, вместо того, чтобы самому немного подумать, просит друзей переустановить или настроить Windows, устранить «глюки», подключить новое оборудование и драйвера, не сможет никогда извлечь из своего компьютера даже минимум пользы. Это как в учёбе — если списываешь и покупаешь готовые курсовые работы, то готовься на экзамене продемонстрировать себя во всей красе. Тонкости операционной системы не узнаешь, не закопавшись в них с головой лично. Поэтому не бойтесь самостоятельно экспериментировать с компьютером — поймёте многое из того, что наверняка пропустили бы мимо ушей, если бы кто-то другой вам это объяснял и показывал. А если при этом раза три-четыре придётся диск отформатировать — не беда, зато разберётесь, как работают утилиты FDISK и FORMAT 🙂.
Чаще всего пользователи, как только чуть-чуть вырастают из «ламерства», заболевают страшной болезнью под названием «оптимизация и ускорение работы компьютера», бросаясь в омут разгона процессоров, памяти, видеокарт — железа, короче говоря. И, как правило, совершенно забывается такое узкое место в быстродействии современной компьютерной системы, как жёсткий диск. И это несмотря на то, что механика никогда не обгонит и даже не догонит в скорости работы электронику, оставаясь самым медленным компонентом ПК. Отказаться же от жёстких дисков в ближайшем будущем вряд ли представится возможным — устройства долговременного хранения информации без движущихся частей, имеющие хоть сколько-нибудь конкурентоспособную ёмкость и стоимость, вряд ли появятся при нашей жизни. Таким образом, добиться максимальной эффективности работы жёсткого диска — одна из основных задач любого пользователя.
Ну а что здесь можно разогнать — спросите вы? Действительно, шпиндель винчестера быстрее крутиться не заставишь, разве что вентиляторов на корпус налепить — чтобы диск хотя бы служил чуть подольше. Но дело в том, что очень часто диски пользователей просто не показывают даже то, на что они способны — ведь мало купить диск с модной наклейкой UDMA100, надо, чтобы он все свои вкусности ещё и использовал! Многие пользователи начинают свой путь в направлении «продвинутости» с изучения вдоль и поперёк настроек BIOS, относящихся к разгону «железа», они чётко знают, на каких частотах работают процессор, шина, память, можно или нельзя поднять их ещё немного, но даже не задумываются о том, в каком режиме работает их супернавороченный жёсткий диск. А между тем, в Windows имеется так много настроек, способных в несколько раз ухудшить работу дисковой системы и привести к непозволительно высокой загрузке процессора во время операций с диском, что сам чёрт ногу сломит!
Давайте же разберёмся, что можно сделать для того, чтобы выжать из винчестера все его резервы, а параллельно посмотрим, как с наименьшими затратами времени и сил проводить некоторые тесты и анализировать полученную информацию. Собственно, и главу эту я прошу рассматривать не как истину в последней инстанции, поскольку на вашей машине конечные результаты экспериментов могут быть несколько иными, а как некое учебное пособие, демонстрирующее технологию самостоятельного определения наилучших параметров операционной системы, влияющих на работу вашего конкретного компьютера. Так что, каждый пользователь, стремящийся перейти из категории «ламеров» в категорию «продвинутых» сам должен уметь проводить аналогичные эксперименты, а «продвинутые» уже наверняка всё это уже и исследовали. Или нет?
Драйвер
Современные IDE жёсткие диски практически все соответствуют технологии Bus Mastering и поддерживают режим UDMA. Благодаря этому, во-первых, многократно снижается нагрузка на центральный процессор при обращениях к диску, а во-вторых — значительно увеличивается скорость обмена данными с буфером винчестера. При устаревших же режимах PIO (programmed input/output) процессору приходилось самому управлять пересылкой данных, что неразумно расходовало его ресурсы на эту рутинную операцию, и периодически вызывало совершенно лишние тормоза в играх и прикладных программах. Сегодня эта забота легла на плечи чипсета и контроллера жёстких дисков, что вполне логично и разумно. Теоретические пределы скорости передачи информации при разных режимах работы диска таковы:
- PIO0 — 3.3Mb/sec
- PIO1 — 5.2Mb/sec
- PIO2 — 8.3Mb/sec
- PIO3 — 11.1Mb/sec
- PIO4 — 16.6Mb/sec
- PIO5 — 33.3Mb/sec
- DMA MW-1 — 13.3Mb/sec
- DMA MW-2 — 16.6Mb/sec
- UDMA0 — 16.6Mb/sec
- UDMA1 — 25Mb/sec
- UDMA2 — 33.3Mb/sec
- UDMA3 — 44.4Mb/sec
- UDMA4 — 66.6Mb/sec
- UDMA5 — 100 Mb/sec
Учтите, что все эти сумасшедшие десятки мегабайт в секунду — это скорость работы с буфером диска, а не скорость непосредственного считывания с «блинов» — она всегда заметно ниже. Разумеется, необходимо, чтобы и материнская плата поддерживала режим UDMA, соответствующий возможностям вашего жёсткого диска — иначе ничего не получится.
От чего же главным образом зависит работа винчестера в режиме UDMA под Windows 9x? От драйвера контроллера жёсткого диска. Но если вы обратите внимание на наличие этого драйвера для вашей материнской платы, то обнаружите, что драйверов этих может быть несколько — от Microsoft, от High Point — производителя контроллера, или от производителя вашего чипсета, например, VIA или Intel. Как влияют разные драйвера и настройки на загрузку процессора и скорость обмена с буфером жёсткого диска? Все ли они одинаково хороши? Попробуем выбрать, какой из драйверов нам лучше всего использовать для одного совершенно рядового тестового компьютера, причём весьма старенького, для которого поиск всевозможных тайных лазеек в направлении ускорения его работы — задача первостепенной важности.
Берём Pentium 166MMX, 430TX чипсет, 96Mb памяти, два жёстких диска — Quantum Fireball ST2 (2.1Gb, UDMA33) и Seagate ST38410A (8.4Gb, UDMA66), привод CD-ROM Matsushita CR-584 (попрошу не смеяться над антиквариатом — всё это хозяйство мне верно служит уже года четыре!). В качестве диска, пожертвованного под эксперименты, выбираем старенький надёжный Quantum, предварительно разбитый на два раздела — 500Mb FAT16 и 1.5Mb FAT32. Первый раздел оставлен практически совершенно чистым (четыре дефрагментированных системных файла на пару килобайт) — над ним и будем издеваться, тем более, что его небольшой размер значительно сократит время всевозможных «бенчмарков». Seagate пока выставлен в CMOS Setup как «NONE», то есть отключён — позже увидите для чего это сделано. Операционная система — свежеустановленная «по-голому» на второй раздел «квантума» русская Windows 98 SE, все программы из автозагрузки удалены — по CTRL-ALT-DEL отображается один Explorer. Использование файла подкачки отключено, чтобы «винде» не пришло в голову посвопиться во время прогона теста и исказить тем самым его результаты. Никаких особых настроек более проведено не было — только отключено автораспознавание диска для привода CD-ROM — оно не нравится одной из применённых для тестирования программ — вызывает BSOD.
Для тестирования использовались следующие утилиты: HD Tach [1], DiskSpeed [2], SiSoft Sandra [3], Michael’s Disk Benchmark v1.11. Это одни из самых простых и доступных для рядового пользователя тестов. Асы, разумеется, для получения более объективных результатов воспользуются более мощными «бенчмарками», для показательного же испытания вполне годятся и эти — очень, кстати, неплохие и быстрые программы. Каждый тест прогоним раз пять и вычислим среднее арифметическое значение для каждого показателя.
Да, чуть не забыл! В очередной раз напоминаю: обязательно сделайте резервную копию реестра, скопировав в отдельную папку файлы USER.DAT, SYSTEM.DAT и ещё CLASSES.DAT в «Миллениуме» — в случае непредвиденных осложнений и негативных результатов, например, если ПК не захочет загрузиться, вы из-под MS-DOS вернёте старый реестр с рабочими настройками на место.
Для начала посмотрим, как организует работу с жёстким диском сама Windows по умолчанию — многие так доверяют этой системе, что используют без разговоров то, что она предлагает. Запустим наши тесты сразу же после установки ОС, используя входящий в её состав драйвер контроллера HDD, имеющий поддержку Bus Mastering, но почему-то никогда не включающий её самостоятельно — снят флажок «DMA» в свойствах диска («Панель Управления» — «Система» — «Устройства» — «Жесткие диски» — ваш диск — «Свойства» — «Настройка»). Драйвер контроллера на тестовой машине при этом звучит как «Intel 82371 AB/EB PCI Bus Master IDE» версия от 05.05.99 года. Надо ещё сказать, что в свойствах системы виден только диск, настройки которого прописаны в CMOS Setup (второй — «NONE», как я уже говорил), что совсем не здорово — если же в BIOS прописать второй винчестер, то он вклинится на место диска D:, перепутав все обозначения. Да и обозначен тестовый диск как «GENERIC IDE DISK TYPE 00», что, конечно, не страшно, но и не очень приятно — качественный драйвер должен уметь опознавать марку «винта». После проведения тестов видим — с этими установками налицо жуткая загрузка процессора (70 — 80%) и скорость обмена с буфером диска UDMA33 всего на уровне 10 Мб/с — то есть ясно, что ни о каком UDMA речь не идёт. Ну что ж, это было, в принципе, и так понятно: установил Windows — первым же делом включай режим DMA для всех дисков, иначе при любых обращениях к ним будут серьёзные тормоза.
Хорошо, уговорили, ставим флажки у жёсткого диска и CD-ROM. После перезагрузки второй винчестер по-прежнему недоступен, а флажок у «сидюка» пропал — видимо «винда» считает, что он не может работать в режиме DMA (обычном, не UDMA), хотя в инструкции к нему поддержка DMA упоминается. Снова запускаем тесты — и их результат более чем впечатляет: один незаметный для неискушенного пользователя флажок уменьшает загрузку маломощного процессора раз в десять! Скорость обмена с буфером диска по показаниям HD Tach возрастает до 28 мегабайт — это уже желанный UDMA33, однако на реальных операциях с файлами, которые эмулируют тестовые программы, скорость возрастает не сильно — до 12-13 мегабайт — это уже работа драйвера и системы кэширования Windows VCache, в действительности же, в обход кэша на пластину данного диска не запишешь ничего быстрее 8 мегабайт в секунду — это хорошо видно на графике программы HD Tach. Однако, несмотря на такие неплохие результаты, есть у «виндового» драйвера очень большой недостаток, делающий его абсолютно непригодным для применения на моём компьютере: при включении в CMOS Setup второго диска (Seagate UDMA66), заветный флажок для него поставить никак не удаётся — после перезагрузки он пропадает. Если же включить режим DMA для него вручную, принудительно записав в реестре:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\hdc\0002]
"IDEDMADRIVE0"=hex:01
[HKEY_LOCAL_MACHINE\Enum\ESDI\GENERIC_IDE__DISK_TYPE46_
\MF&CHILD0000&PCI&VEN_8086&DEV_7111&SUBSYS_00000000&REV_01&BUS_00&DEV_07&FUNC_0100]
"DMACurrentlyUsed"=hex: 01
(где «0002» — второй IDE контроллер, к которому подключён диск, а «IDEDMADRIVE0» — означает, что этот диск выставлен как «master», «slave» был бы обозначен как «IDEDMADRIVE1»), то компьютер вообще отказывается загружаться, при этом «винт» издаёт весьма неприятные звуки, от которых рука непроизвольно тянется к кнопке «Power».
Посмотрим теперь, что нам даст самое последнее обновление «виндового» драйвера, называемое «Intel INF Update for Intel Chipsets» и заблаговременно скачанное с сайта Intel [4]. По окончании процедуры установки драйвера система перезагрузилась, заново обнаружила некоторые устройства, однако, драйвер контроллера жёстких дисков остался в результате прежний — пришлось новый выбирать вручную. Для этого надо открыть диалоговое окно свойств контроллера, на странице «Драйвер» выбрать «Обновить драйвер», далее — «Указать местоположение нового драйвера…» — «Показать весь список…». В открывшемся окне вы увидите, что среди совместимых драйверов контроллера появился ещё и драйвер от 4.14.2000. Его-то и надо выбрать, чтобы посмотреть, произойдут ли какие-либо улучшения. Опять запускаем все наши тесты. Несколько снизилась загрузка процессора — это неплохо, но сим дело и ограничивается. В остальном же, существенных изменений не произошло — немного уменьшилась скорость чтения, но это большой роли не играет — скорее всего, виновата погрешность измерения. Флажок «DMA» для второго «винта» и привода CD-ROM по-прежнему установить не удаётся, а при отключении Seagate в CMOS Setup, диск этот также перестаёт быть доступен.
Попробуем теперь поставить самый новейший драйвер для современных контроллеров от Intel — «Intel Ultra ATA Storage Driver». Запускаем программу установки, и… получаем сообщение, что с чипсетом 430TX оно не работает. Наглая ложь! Предварительно распаковав с помощью программы WinZip архив с файлами драйвера в одну папку, запускаем SETUP с секретным ключом: «setup –piix_install». И — о чудо — для древней «мамки» встал суперсвежий драйвер, версии 6.03.007. Причём вручную его выбирать не пришлось — драйвер сам сразу правильно установился. Если же всё-таки добраться до страницы со списком совместимых драйверов, то увидим, что он прописан там как «Intel 82371 AB/EB PCI Bus Master IDE» версия от 09.01.2000. При этом, как ни странно, на вкладке «Драйвер» свойств контроллера он датирован 05.30.2000, а в сведениях о файлах драйвера присутствуют уже 09.13.2000 и 07.07.2000. Но это не суть важно, главное то, что второй винчестер наконец-то стал виден, будучи отключённым в CMOS Setup, параметры чтения-записи и загрузки процессора на неплохом уровне, хотя, может быть, и чуть хуже, чем при работе с предыдущими драйверами. А благодаря небольшому дополнительному «прибамбасу», вставшему вместе с драйвером — утилите «Intel Ultra ATA Compagnion» — мы теперь можем воочию убедиться, что все приводы работают в самых выгодных для них (а значит, и для нас) режимах — оба жёстких диска в UDMA-2 (UDMA33, больше «мать» не тянет), а «сидюк» — DMA-MW-1. Никакой флажок в свойствах дисков ставить не нужно — DMA уже работает, а сами диски в окне со списком устройств имеют свои истинные наименования. Итак, мы, наконец, добились практически идеального варианта — максимального быстродействия для всех имеющихся в наличии приводов при минимальной загрузке процессора.
Но вместе с материнской платой тестового компьютера давался ещё один драйвер под названием «PIIX Bus Master Driver» от фирмы Triones/HighPoint, предназначенный для использования в Windows 95 (не имеющей своего собственного драйвера для поддержки современных быстрых дисков) — неплохо было бы посмотреть и его. К сожалению, на Windows 98 его установить не так просто — при проверке версии ОС программа установки заявляет, что драйвер разработан только для Windows 95. Однако, мне попался дистрибутив, который почему-то устанавливает все файлы драйвера в Win98, правда, не умеет сам изменить драйвер контроллера — его, а также драйвера первого и второго IDE-контроллеров приходится опять-таки выбирать впоследствии вручную из списка драйверов, найдя в нём фирму HighPoint. Если вам такой дистрибутив не встречался, то можете провести эксперимент, установив вручную файлы IDEATAPI.INF, PIIXVSD.VXD и IDEATAPI.MPD — это и есть все файлы драйвера, упакованные в дистрибутив. Впрочем, с вашей платой могут быть и другие драйвера. По завершении очередной установки очередных драйверов получаем очередные результаты очередных тестов — они также весьма радуют, тем более, что и этот драйвер позволяет получить полный доступ ко всем дискам, отображает их настоящие названия и задаёт всем приводам максимальный режим работы. По многим параметрам он даже превзошёл драйвер Intel, например, чтение с кэшированием показало просто нереальные результаты — 28.8 Mb/Sec — видимо, проявила себя с лучшей стороны «виндовая» система VCache, и данные читались в основном из памяти, а не с диска. Однако, стабильность этого драйвера несколько хуже — так, в некоторых тестах он показывает низкую скорость записи — видимо, всё-таки дата его создания играет роль — аж 1997 год. Да и страшновато такую старую разработку сегодня использовать, ведь никто не знает, как он себя поведёт с новыми дисками. В целом же, все протестированные драйвера дают возможность работать с буфером диска на максимальной скорости — 28 Mb/sec и серьёзно разгружают процессор, все же остальные показатели зависят, похоже, уже от того, насколько хорошо драйвер взаимодействует с Windows.
Ну что ж — некоторое представление о том, какой драйвер наиболее приемлем для данной конкретной системы, мы получили — им стал «Intel Ultra DMA Storage Driver», который удалось поставить на устаревшее оборудование исключительно благодаря недокументированному параметру установки. Таким образом, наилучшие результаты показали «родные» драйвера от производителей «железа», а не от Microsoft. Поэтому и вам стоит обратить внимание на компакт-диски и дискеты, идущие в комплекте с компьютером — там наверняка должен быть драйвер от Intel или от VIA или от HighPoint. Причём на машинах, имеющих дополнительный контроллер для UDMA66 в пару к стандартному контроллеру UDMA33, после установки драйверов для второго контроллера, он в Свойствах Системы может обозначаться даже как SCSI-устройство — всё зависит от задумки программистов, в этом ничего страшного нет. Если же с платой ничего похожего не давалось, то поищите нужный драйвер для своего чипсета, например, на сайте www.bmdrivers.com [5]. Учтите также, что в Windows 2000 поддержку UDMA66 можно включить только через реестр — надо записать в его раздел
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control \Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0000
параметр EnableUDMA66
типа REG_DWORD
со значением 1
. Впрочем, при выборе «Intel Ultra DMA Storage Driver» возиться с реестром Windows 2000 не нужно — UDMA66 включается автоматически.
Таблица: Тест драйверов
Операция | Драйвер Windows после установки ОС | Драйвер Windows с включением флажка DMA | Intel INF Update for Intel Chipsets v 2.80.008 (DMA включен) | Драйвер контроллера HDD для Windows 95 (High Point PIIX4 Bus Master v 3.7) | Intel Ultra ATA Storage Driver v 6.03.007 |
---|---|---|---|---|---|
Тест DiskSpeed | |||||
Запись с кэшированием | 7.30/82.9% | 7.20/14.6% | 7.39/7.9% | 6.96/24.7% | 5.23/12.4% |
Чтение с кэшированием | 10.91/76.7% | 13.74/23.6% | 9.65/8.23% | 28.8/68.7% | 18.49/39.9% |
Тест Michael’s Disk Benchmark v1.11 (кэширование используется) | |||||
Последовательная запись | 7126,3 | 7511,25 | 7448,5 | 7414,75 | 5669,25 |
Последовательное чтение | 9905,3 | 12428,25 | 12751,25 | 13283,75 | 12167 |
Случайная запись | 4369,7 | 3803,75 | 3021,25 | 3075,25 | 4274 |
Случайное чтение | 3453 | 3799,75 | 4089,25 | 4180,25 | 3321 |
HD Tach | |||||
Скорость обмена с буфером диска | 10,6 | 28 | 28 | 27,8 | 27,1 |
Утилизация процессора | 65,7 | 3,2 | 3,3 | 4,0 | 5,1 |
VCache
Вместе с работой драйвера контроллера жёсткого диска, вероятно, самое существенное воздействие на скорость дисковой системы компьютера оказывает кэширование данных. В Windows этим занимается виртуальный драйвер VСache. Оптимизации его работы посвящено множество статей в компьютерной прессе, однако грамотному пользователю не помешает провести небольшой практический опыт, чтобы самому посмотреть, насколько параметры его настройки влияют на работу с жёстким диском. Для этого надо изменять параметр «MaxFileCache», ограничивая тем самым объём оперативной памяти, отводимой под дисковое кэширование. Делается это в файле System.ini, прописыванием в раздел [Vcache] строки «MaxFileCache=ххх» (без кавычек), где ххх — максимальный размер памяти, отводимой под кэширование в килобайтах. Там же можно задать и минимальный размер дискового кэша — «MinFileCache=ххх», но это ограничит объём памяти, достающейся приложениям. Хотя, если при избытке оперативки задать одинаковыми и минимум и максимум, то «Винда» не будет биться в конвульсиях, постоянно изменяя объём кэша, что может сказаться положительно на быстродействии системы — особенно, если это Windows 95 — там система VCache работала недостаточно хорошо, отказываясь добровольно отдавать захваченную память другим программам. В Windows 98 VCache претерпела некоторые улучшения (например, теперь она умеет запускать программы прямо из кэша VCache) и на самом деле уже не столь нуждается в каких-либо настройках, но проверить её работу на деле всё же не помешает.
Для начала стоит вообще посмотреть, как изменяется размер кэша на вашем ПК без задания каких-либо ограничений — запустим для этого утилиту VCache Monitor [6] и погоняем несколько программ. Получим интересные результаты — «Винда» стремится перенести в оперативку чуть ли не весь жёсткий диск — при 96Mb памяти объём кэша достигает 70Mb. При запуске же приложений этот кэш ОС приходится уменьшать, даже сбрасывая его в своп-файл, что уже не лезет ни в какие ворота. Поэтому, несмотря на то, что чем больше данных с диска перенесено в память — тем меньше обращений к винчестеру, и, соответственно, выше быстродействие, в реальных задачах такая жадность не всегда оправдывается, и иногда выгоднее определить некий оптимальный максимум размера кэша. Для тестирования применим программу Michael's Disk Benchmark и всё тот же VСache Monitor для контроля за размером кэша. Параметры кэша будем регулировать с помощью удобной утилиты Cacheman [7].
Полученные результаты подтверждают — чем больше информации с диска Windows 98 поместит в память, тем для неё лучше. Активная работа с диском в отсутствие каких-либо ограничений кэша действительно будет показывать максимум производительности. Однако работа с ПК заключается не только в копировании и перемещении файлов. Чрезмерно большой кэш, отнимающий память у прикладных программ (особенно, если памяти в ПК мало) может стать тормозом всей системы — при загрузке и работе программ приходится высвобождать память, на что, вероятно, уходит некоторое время. Поэтому, обычно рекомендуется пойти на компромисс, жёстко задав максимальный размер кэша, равный примерно 25% оперативной памяти — при этом и у программ память не будет отбираться, и кэширование почти не утратит эффективности. В нашем случае, при установке MaxFileCache=24576 (25% памяти) получаем почти предел производительности, хотя, если отвести под кэш ещё больше памяти, то скорость работы дисков ещё немного увеличится. Впрочем, вообще не задавать никаких ограничений тоже можно — все эти изменения скорости весьма условны, и нужны ли они именно вашей системе — решать вам по результатам конкретных испытаний. Учтите только, что наши тесты относятся к Windows 98, если же у вас Windows 95, то жёсткая регулировка размера кэша, скорее всего, скажется благотворно — в Windows 95 система Vcache работает хуже, чем в Windows 98, и её настройка более необходима. Кстати, можно заметить, что при установке размера кэша, равным, например, 16000, получаем некоторый провал в графике — происходит это, видимо, потому, что 16000 не кратно 1024 (вернее, степени числа 2), так что при выборе размера кэша и за этим надо следить. И ещё один момент, на который следует обратить внимание, если у вас имеется 512Mb «оперативки» и более. В этом случае обязательно ограничивайте размер кэша, прописав MaxCacheFile=524288 или даже менее, иначе VCache «прихватизирует» от такой радости всю вашу память и «Винда» будет жаловаться на её нехватку. Такой вот «глюк».
Утилита Cacheman позволяет легко увеличивать и ещё один кэш — память, отводимую под пути к файлам и папкам. В Windows вы тоже можете это делать в диалоге «Панель Управления» — «Система» — «Быстродействие» — «Файловая Система» — «Жесткий диск» — «Типичная роль компьютера», но диапазон изменений здесь гораздо меньше — максимум, что вам позволено выбрать — это определить роль ПК как «Сервер», что лишь немного увеличивает этот кэш. С помощью Cacheman же вы получаете возможность задавать любые параметры, подобрав самое оптимальное соотношение. Если есть некоторый запас мегабайтов оперативной памяти, то увеличение данного кэша благотворно скажется на времени доступа к файлам и папкам.
Кроме того, воспользуйтесь программой WinBoost 2001 Gold [8] для настройки размеров кэша и параметров упреждающего чтения привода CD-ROM — их увеличение в соответствии с требованиями сегодняшнего дня также повысит общее быстродействие компьютера. Но и здесь не переборщите — программам память тоже нужна, а наилучших результатов добьётесь опять-таки при личном тестировании разных режимов.
Таблица: размер кэша Vcache
Чтение | MaxFileCache | ||||||
---|---|---|---|---|---|---|---|
Без ограничений | 1024 | 10240 | 12288 | 16384 | 24576 | 51200 | |
Последовательное | 12041 | 8051 | 8393 | 8461 | 8051 | 9320 | 11309 |
Случайное | 3463 | 2193 | 2323 | 2378 | 2313 | 2413 | 3364 |
ChunkSize
Это ещё один из параметров системы VCache. По смыслу он сильно напоминает размер кластера на жёстком диске: ChunkSize — это размер блока данных в памяти, отводимой под кэширование. Для данного параметра, к сожалению, невозможно выбрать явно оптимальное, идеальное для всех случаев жизни значение. Проводя же поверхностные тесты простыми программами, вообще можно не заметить его влияние на скорость работы с диском. Поэтому давайте лучше обратимся к результатам более глубоких исследований, приведённым на сайте Speed Demonz [9]. Из них видно, что, например, для игры Turok идеально будет значение ChunkSize равное 2048, а для Half-Life — 8192, но даже при этом разница в FPS при самом худшем значении и при самом лучшем составит всего 1% и менее. Для некоторых же других программ можно выявить оптимальное значение ChunkSize, приводящее к увеличению скорости их работы на 4%, но закономерность отследить не представляется возможным — для одних программ больше подходит одно значение, для других — другое. Однако, один вывод из тестов сделать можно: ChunkSize=512 почти всегда является одной из оптимальных величин — при таком значении большинство программ показывает если и не максимально возможные, то очень хорошие результаты, и практически ни одно приложение его не отторгает. Следовательно, для того, чтобы быстродействие системы было на высоте в большинстве случаев, надо установить Chunksize=512, что, впрочем, и сделано в Windows по умолчанию — если вы не будете явно прописывать этот параметр, то размер блока данных в кэше и так будет равен 512 байтам.
Таблица: тест ChunkSize
Чтение | ChunkSize | |||
---|---|---|---|---|
Не задан | 512 | 1024 | 2048 | |
Последовательное | 8563 | 8582 | 8519 | 8577 |
Случайное | 2416 | 2422 | 2417 | 2417 |
Шлейф
Немало зависит и от того, как именно подключены ваши жёсткие диски и приводы CD-ROM. Два устройства на одном IDE канале, то есть — подключённые к одному и тому же шлейфу, влияют друг на друга. Причём, если на одном шлейфе сидит и достаточно медленное устройство типа CD-ROM и быстрый винчестер, то при их одновременной работе быстродействие жёсткого диска ухудшается подчас очень сильно, в чём вы также можете убедиться, проведя несложные тесты по копированию файлов с «сидюка» на «винт» при разных способах их подключения. Поэтому всегда желательно разносить приводы на разные IDE-каналы, чтобы их воздействие друг на друга свести к минимуму. Или хотя бы ничего больше не подключать в пару к системному диску, наиболее сильно занятому в процессе повседневной работы компьютера.
Мне попадалась информация даже о влиянии в некоторых ПК длины шлейфа на работу дисков ATA66 — чем короче шлейф, тем меньше на него наводится помех, которые при столь высокой частоте играют существенную роль. Лишние перегибы и натяжения шлейфа также могут сказаться негативно, а если при этом и контакт где-то будет ненадёжным, то вы рискуете даже потерять свои данные. Ну и, разумеется, не стоит подключать диск UATA66 40-жильным шлейфом — для этого существуют специальные 80-ти жильные шлейфы с повышенной помехозащищённостью — проверьте, такой ли вам установили при продаже ПК. А вот положение дисков master/slave никак не влияет на производительность, хотя, не помешает, конечно, и тут более современный диск подключать как «master». Поставьте также в CMOS Setup параметр «IDE Block Mode» в положение «Enabled» — это тоже повысит эффективность работы винчестера.
Фрагментация
А хотите увеличить быстродействие дисковой системы раза в два, почти не прилагая к этому усилий? Всего лишь регулярно дефрагментируйте диск — эта простая операция, игнорируемая не вникающими в работу Windows пользователями, способна кардинально изменить скорость работы винчестера. Для доказательства этого всем известного факта, о котором, впрочем, часто забывают, воспользуемся программой SiSoft Sandra — она хоть и даёт сильно округленные результаты, но они весьма наглядны, а работа с ней очень проста. Проведём тест диска Seagate, дефрагментированного последний раз недели две назад и при этом весьма активно используемого не только ОС, но и в качестве хранилища всевозможных файлов. Как вы увидите, если проделаете аналогичный тест — ситуация различается просто принципиально — по всем позициям после дефрагментации наблюдается практически двукратное увеличение быстродействия. Объясняется это очень просто: при записи или чтении файла головкам винчестера не нужно скакать с места на место, собирая мелкие куски одного файла воедино. Перемещение головок — самая длительная операция в работе жёсткого диска: чем их меньше — тем быстрее он работает.
Все это знают, даже самые неискушенные пользователи. Но кому нравится регулярно запускать дефрагментатор, особенно если диск «гигов» на двадцать-тридцать? Либо умрешь от старости в ожидании завершения процесса сборки фрагментов файлов, либо тронешься умом от постоянного хруста диска, издаваемого при работе штатного «виндового» дефрагментатора. Вот и откладывают пользователи эту нудную операцию до лучших времен. А между тем, достаточно самому провести такой тест, как сразу станешь по-другому относиться к регулярному обслуживанию диска — двукратное увеличение скорости его работы — это не шутка, понимаешь.. Когда я сам такое впервые увидел, понял, что дефрагментатор заслуживает гораздо большего к себе уважения, тем более, что совсем не обязательно чахнуть над «виндовой» программой — Speed Disk из Norton Utilities проворачивает эту операцию раз в десять быстрее, просто не все об этом знают.
Таблица: тест фрагментации
Операция | Диск | |
---|---|---|
Фрагментированный | Дефрагментированный | |
Index | 6730 | 13254 |
Buffered Read | 16000 | 23000 |
Sequential Read | 10000 | 19000 |
Random Read | 3365 | 5000 |
Buffered Write | 14000 | 17000 |
Sequential Write | 6000 | 14000 |
Random Write | 2795 | 4000 |
Файловая система
При работе с Windows 98 сегодня, пожалуй, выбора всё-таки нет — FAT16 хоть и является самой быстрой файловой системой для «Виндов», но она уже давно отжила свой век и для современных больших винчестеров нам остаётся только FAT32, чуть более медленная из-за большего объёма всяческой служебной информации. Можно, правда, несколько сократить этот объём, если увеличить размер кластера в FAT32, тем самым немного приблизив её по скорости к FAT16. Для этого надо отформатировать диск, задав утилите FORMAT такой параметр: «FORMAT C: /Z:8192» для создания кластеров размером 8 килобайт. Но, думаю, игра не стоит свеч — попробуйте проверить.
А вот в Windows 2000 вы уже можете выбирать из двух файловых систем: NTFS либо FAT32. Однозначного ответа на вопрос — что быстрее — тут, правда, нет — на одних операциях быстрее окажется NTFS, а на других — FAT. Но очень многое зависит и от конфигурации компьютера, поэтому если вы хотите добиться наилучших результатов, то и в данном случае придётся провести тесты непосредственно на оптимизируемой машине. Ведь, например, преимущества NTFS практически не проявятся даже на самом новом компьютере, если у него оперативной памяти окажется меньше 128Mb. В целом же, если вы регулярно дефрагментируете диск, если нет часто используемых многогигабайтных файлов, и в каталогах не содержится по несколько тысяч файлов, то FAT32, скорее всего, опередит более мощную NTFS. К тому же NTFS теряет в скорости, если диск близок заполнению. Разумеется, если вам нужны дополнительные функции «продвинутой» NTFS, то это должно перевешивать требования к производительности.
Не менее важно и грамотно разбить диск. В бытовом компьютере нежелательно отводить весь объём диска под один раздел, куда и сгружать как на свалку все файлы. Оптимальным решением станет создание относительно небольшого раздела под операционную систему — порядка 2-4 гигабайт, в зависимости от типа «Виндов» — 9х или 2000. При этом перемещения головок «винта» во время работы и загрузки Windows будут минимальными — в пределах одного, относительно небольшого, раздела. Да и фрагментироваться он будет меньше, а файлы ОС расположатся компактнее. Не обязательно, но неплохо также посвятить отдельный раздел прикладным программам, следующий — играм, ещё один — под файлы, загружаемые из интернета и так далее. Отдельный логический диск можно выделить и под всевозможные временные файлы (кэш Internet Explorer, Cookies, файлы Журнала, папка TEMP и т.п.), так как именно они больше всего виноваты во фрагментации системного диска. Но много разделов — тоже плохо, так как в памяти будет находиться слишком много информации о разбиении диска. В общем, придётся искать золотую середину. Хороший выигрыш в скорости вы получите, если отведёте небольшую часть второго винчестера исключительно под файл подкачки как чаще всего используемый операционной системой или хотя бы сделаете ему отдельный раздел на единственном имеющемся в наличии диске, а затем — ещё и дефрагментируете своп-файл с помощью Norton SpeedDisk. Программа эта, плюс ко всему, перенесёт своп в начало диска — в самую быструю его область. Однако, если не задавать жёстко минимальный размер своп-файла, то он через какое-то время опять будет сильно фрагментирован. Чтобы этого избежать, попробуйте задать под минимальный размер свопа для начала где-то «мегов» 200 («Панель Управления» — «Система» — «Быстродействие» — «Виртуальная Память»). Если же ограничить его размер и сверху, задав ещё и максимум, то фрагментироваться он не будет никогда, но какие-то приложения будут иногда жаловаться на нехватку памяти — и тогда своп придётся увеличить. Но есть и иной подход к ускорению работы системы с виртуальной памятью — включить в Windows 98 старый способ управления ею, применявшийся в Windows 95. Для этого пропишите в файле System.ini в разделе [386enh] параметр «ConservativeSwapfileUsage=1» — и обращения к свопу будут происходить не тогда, когда «Винде» вздумается, а при переполнении оперативной памяти, из-за чего винчестер будет жужжать гораздо реже и тормозить систему меньше, а размер свап-файла будет стремиться к нулю. Чаще всего именно этот трюк даёт самый впечатляющий эффект.
Таким образом, обычно неохваченная пользователем область оптимизации работы файловой системы представляет собой просто непочатый край работ, и тот, кто хочет, чтобы его компьютер был идеален во всём, может попробовать поднять эту целину. Но надо помнить, что универсальные советы не всегда срабатывают — наилучшие параметры следует подбирать только по результатам личного тестирования вашего компьютера. И тут вам все карты в руки — было бы время и желание.