Оптимальная система: Советы
|
Данная статья - попытка дать ответы на вопросы о том, как из имеющихся программных и аппаратных компонент создать оптимальную систему. |
Речь пойдет о производительности дискового комплекса - о способе подключении жестких дисков и приводов CD/DVD, о драйверах IDE-контроллеров, о том, где лучше всего разместить файл виртуальной памяти и какой размер выделить под это, и о многих других вопросах производительности. |
Материал данной статьи достаточно универсален, так как большая часть обсуждаемых проблем относится либо к аппаратуре, либо к общим принципам построения современных операционных систем. |
Тем не менее, там, где я смогу это сделать, я попытаюсь дать и конкретные советы по изменению настроек конкретных систем. |
Интерфейс IDE |
Аппаратное подключение устройств |
Подавляющее большинство современных компьютеров имеют дисковую систему, построенную на основе интерфейса IDE (ATAPI). |
Традиционная материнская плата имеет два канала IDE-контроллера - первичный (primary) и вторичный (secondary), каждый из которых представляет собой, по сути, отдельный контроллер. |
Каждый канал имеет собственный разъем на материнской плате и отдельный шлейф, к которому можно подключить один или два IDE устройства. |
Одно из них будет работать в режиме master, а другой - в режиме slave, и эти режимы устанавливаются перемычками на накопителе или приводе. |
Я не открою каких-либо новых фактов - всё, что я скажу в данном разделе, уже сказано в различных документах и FAQ-ах. |
Несмотря на это, вопрос о том, что и куда подключать, встречается достаточно часто, и, поскольку от этого напрямую зависит работа дисковой системы, я попытаюсь собрать воедино всё, что можно сказать на эту тему. |
Сразу добавлю, что описывать быстродействие систем на основе SCSI в этой статье не представляется возможным - в основном, из-за необъятности этой темы и наличия огромного числа частностей. |
Как работают два устройства, размещенные на одном канале (шлейфе)? |
К сожалению, сложившийся протокол работы с IDE устройствами не позволяет двум накопителям, работающим на одном канале, работать полностью отдельно друг от друга. |
Дело даже не в том, что они используют общий шлейф (кабель) для подсоединения к контроллеру. |
Проблема стоит несколько острее - сам протокол передачи данных (устройство контроллера) и режим работы драйвера, используемый в подавляющем числе IDE систем, не позволяет использовать одно из устройств, пока другое устройство не выполнило данную ему команду. |
На практике это выливается в очень неприятную вещь: например, винчестер получил команду считать сектор. |
Часто он не может сделать этого сразу - например, потому, что головки жесткого диска находятся в другой области, и для чтения сектора придется совершать механические операции. |
Во время поиска нужных данных - порядка десятка миллисекунд - устройство просто молчит, выполняя команду контроллера. |
К огромному сожалению, во время этого периода второе IDE устройство, расположенное на том же контроллере (канале), просто недоступно. |
Проблема двух жестких дисков, расположенных на одном IDE контроллере, еще не так страшна, потому что жесткий диск в любом случае способен выполнить данные ему команды достаточно быстро. |
В случае же, например, с приводом CD-ROM, проблема может встать гораздо серьезнее. |
Когда CD-ROM осуществляет поиск дорожки (порядка сотни миллисекунд, в редких случаях - и больше), выполняет какие-то свои, например калибровочные, манипуляции, или даже просто испытывает затруднения при чтении сектора (до десятка (!) секунд), второе устройство, работающее на том же канале, просто недоступно. |
Вывод, к сожалению, приходится делать такой: если это, возможно, размещайте устройства, с которыми будет осуществляться одновременная работа, на разных контроллерах. |
Если у вас всего два устройства - вы просто поставите их на разные контроллеры, и каждое из них будет работать отдельно от другого, а, значит, оптимальным образом. |
А если устройств больше? |
Два винчестера и CD/DVD-ROM? |
Скорее всего, имеет смысл оставить один - главный, системный, винчестер в одиночестве, чтобы ничего не могло помешать доступу к системным файлам и виртуальной памяти. |
А если вы хотите поставить часть программ или файл виртуальной памяти на другой винчестер? |
В таком случае вам всё равно лучше будет разнести эти винчестеры по разным контроллерам, чтобы обеспечить их одновременную работу. |
С другой стороны, если вы часто используете CD/DVD - например, часто слушаете музыку (МР3), то, может быть, имеет смысл поставить читающий диски привод на отдельный контроллер - в таком случае трудности чтения данных с CD не помешают вашей фоновой работе и не заморозят главные жесткие диски, а значит и весь компьютер. |
Пишущий привод (CD-R/-RW/DVD-ROM)? |
Подумайте над тем, с какого носителя вы будете осуществлять запись на этот привод. |
Если, например, вы часто переписываете диски "на лету" (с обычного CD-ROM на CD-R), то вам крайне желательно разнести CD-ROM и привод CD-R по разным контроллерам. |
Если у вашего привода достаточно большой буфер, то это не очень важно, но в случае, если буфер вашего записывающего привода невелик, то было бы крайне хорошо разместить его на отдельном контроллере в одиночестве. |
Или не в одиночестве (если это невозможно), а хотя бы в паре с таким устройством, которое не будет использоваться в процессе записи дисков - например, можно поставить его в паре с винчестером, на котором хранятся данные, не относящиеся к процессу записи. |
К вопросу о том, как размещать несколько винчестеров для создания оптимальной по быстродействию системы, и какую пользу можно получить от нескольких жестких дисков, мы еще вернемся. |
Slave или master? |
Два устройства, размещенные на одном шлейфе, тем или иным способом сотрудничают для обеспечения своей работы. |
Каждое IDE-устройство имеет переключатель slave или master, и два устройства, работающие на одном шлейфе, должны работать в разных режимах. |
Имеет ли практическое значение, какое из устройств будет slave, а какое - master? |
В настоящее время можно достаточно уверенно сказать: это не имеет значения. |
Работа протокола IDE в том виде, к которому он пришел к настоящему времени, практически не зависит от того, какое из устройств будет slave, а какое - master. |
Устанавливайте перемычки так, как это будет логичнее с точки зрения операционной системы (по умолчанию в большинстве систем буквы назначаются дискам в том порядке, в котором они физически присутствуют в системе - т.е. сначала пойдет master, потом - slave). |
Единственное, что все-таки можно сказать по поводу аппаратного аспекта - если у вас есть очень старый жесткий диск или CD-ROM (скажем, более чем пятилетней давности), постарайтесь не ставить его как master к более современному устройству. |
Это вряд ли принесет потерю быстродействия, но может дать принципиальные проблемы совместимости, из-за которых второе устройство (slave), или даже оба накопителя, будут работать некорректно или не будут работать вообще. |
Еще одно замечание - если на одном контроллере стоят два привода, способных читать CD, то загрузится со второго (slave) привода у вас не получится. Последняя проблема уже решена в последних материнских платах (в BIOS AWARD 6.0, например, можно выбрать, какое именно устройство будет считаться CD-приводом при выборе последовательности загрузки), однако пока таких плат далеко не большинство. |
Если у вас два CD на одном контроллере (например, CD и CD-RW), и вы хотите получить возможность загружаться именно с CD привода, желательно поставить его как master - это сработает независимо от платы и версии BIOS. |
Какое устройство подключать к среднему разъему шлейфа, а какое - к крайнему? |
Это также не имеет решающего значения. |
Да, какие-то электромагнитные моменты делают предпочтительным ту или иную комбинацию, но на практике гораздо более важен другой аспект: просто соединяйте устройства так, чтобы кабель проходил по возможности свободно, не изгибался и не натягивался. |
Лишние механические деформации и напряжение шлейфа могут привести к тому, что в каком-то месте (например, в разъеме) получится слабый контакт или (частичное) повреждение проводов самого шлейфа, а это может привести к потере данных или ненадежной работе накопителей. |
Еще одна неприятная штука - если шлейф частично выйдет из разъема в процессе работы системы - также может принести кучу неприятных последствий, вплоть до физической поломки (это, впрочем, вряд ли). |
Поэтому совет будет простой - соединяйте устройства так, чтобы не напрягать кабель. |
Учесть другие факторы всё равно вряд ли получится. |
Драйвера Bus Mastering |
Второй важный аспект работы дисковой системы на основе контроллера IDE - драйвер контроллера. |
От того, как драйвер, а значит и операционная система, будет работать с устройствами и контроллером, в каком режиме будет осуществляться обмен данными, сильно зависит общее быстродействие системы. |
В настоящее время существует две стратегии работы дисков, контроллера и драйвера: "стандартный" для старых устройств режим, в котором обязаны работать все IDE накопители - режим PIO (Programmed Input/Output), в котором для передачи данных между накопителем и системой используется центральный процессор. |
Данный режим работает на всех IDE-контроллерах, и является, собственно, изначальным режимом работы, регламентированном в самом первом стандарте. |
Тем не менее, в последние несколько лет подавляющее большинство контроллеров и устройств имеют альтернативный режим работы - так называемый режим Bus Mastering (DMA/UDMA), в котором управление передачей данных ведется самим контроллером, без участия процессора. |
Этот режим не только освобождает процессор, что очень важно в многозадачных системах, но еще и снимает ограничение на скорость передачи данных, накладываемое процессором и программным обеспечением. |
В системе Windows NT4.0 и Windows 2000, к примеру, драйвер, работающий в режиме PIO, на мой машине (Celeron 333A, чипсет BX) не может обеспечить скорость передачи данных больше 5 Мбайт/с с любого из трех современных дисков (Quantum 10 Гбайт, Seagate 6 Гбайт и Seagate Barracuda 30 Гбайт). |
В режиме Bus Mastering, напротив, Seagate Barracuda, например, выдает положенные ему 10 - 15 Мбайт/c, что почти в три раза (!) быстрее, да и остальные диски доходят до своего теоретического предела в 7 - 10 Мбайт/с. |
Прибавьте к этому то, что для работы в обычном режиме загрузка процессора (лично у меня) составляет 100%, а в режиме Bus Mastering - около 20%, и вы поймете, почему ваша система просто обязана работать в этом режиме. |
К счастью, все системы (материнские платы), выпущенные со времен Pentium, а уж тем более в настоящее время, без каких либо проблем поддерживают Bus Mastering (далее - BM). |
Единственная проблема, которая остается - использовать именно этот режим работы аппаратуры. |
К сожалению, здесь и по сей день, есть некоторые подводные камни. |
Windows 98/Windows ME |
Современные компьютеры на основе этих систем, в подавляющем большинстве случаев, уже имеют драйвера, способные работать в режиме BM - особенно это относится к Windows ME. |
Убедится в этом можно следующим образом - пойти в панель управления, пункт "система", и в менеджере устройств почитать название контроллера жестких дисков. |
Если у вас материнская плата на чипсете Intel, и в названии есть слова "Bus Master" или, иногда, аналог по-русски ("управление шиной" или что-то в этом роде) - значит, нужные драйвера уже установлены. |
Пользователям современных (Pentium и выше) систем на основе чипсетов VIA можно быть спокойными - если у вас стоит драйвер с упоминанием VIA, а не стандартный драйвер IDE, то BM вам обеспечено. |
Если же у вас все-таки установлен только стандартный драйвер IDE-контроллера, то вам, скорее всего, нужно поставить более новые драйвера. |
Пользователям Windows 95, к сожалению, придется искать драйвера - стандартных драйверов BM в этой системе нет. |
Всё, что теперь осталось сделать - это убедится в том, что все ваши устройства работают в этом режиме. |
Для этого в том же самом менеджере устройств вам нужно пройтись по всем жестким дискам и приводам CD/DVD, и поставить для них режим "DMA" в закладке "Параметры" ("Settings"). |
Разные системы имеют разные параметры по умолчанию, и, возможно, несколько ваших устройств по-прежнему продолжат работать в режиме PIO. |
Стоит обратить внимание, впрочем, на то, что некоторые устройства (особенно старые приводы CD или CD-R[W]) могут не работать в режиме DMA, или же работать не совсем корректно. |
Иногда случается, например, так, что привод CD в DMA режиме перестает воспроизводить VideoCD или копировать аудиоданные. |
Мне также встречались случаи, когда привод CD-RW вообще переставал работать в DMA-режиме. |
Возьмите это на заметку - если что-то перестало работать так, как работало раньше, вам, к сожалению, придется отказаться от использования DMA на этом устройстве. |
Windows 2000 |
Эта система в подавляющем большинстве случаев уже имеет драйвера Bus Mastering, и даже использует их. |
Всё, что можно сделать - это попытаться убедится в том, что все устройства используют этот режим доступа: дело в том, что приводы сменных накопителей (CD, например) часто по умолчанию, в процессе инсталляции системы, ставятся на всякий случай в режим PIO, что не всегда оправдано. |
Вы должны отправиться в менеджер устройств (его можно найти в дереве, которое запускается, к примеру, через нажатие правой кнопкой мыши на "мой компьютер", пункт manage), найти там IDE ATA/ATAPI контроллеры, и проверить установки для обоих каналов контроллера (Primary/Secondary IDE channel). |
В закладке Advanced Settings вы сможете как проконтролировать текущий режим работы устройства, так и поставить нужный вам режим - DMA if available (DMA, если возможно), если он вдруг не установлен. |
Windows NT4.0 |
Пользователям этой ОС в подавляющем большинстве случаев придется совершить более активные действия для того, чтобы получить работу в режиме BM. |
Стандартные драйвера систем NT с пакетом обновления SP3 и выше уже имеют поддержку BM для контроллеров Intel PIIX3 и выше (применяются в чипсетах линии i430/i440), но, к сожалению, в подавляющем числе систем не могут её самостоятельно использовать из-за неудачной процедуры автоматического определения этого режима. |
Определить, работает ли BM в вашей системе или нет, вам поможет, например, программа ConfigNT, которая покажет текущие режимы работы устройств. |
Если вы увидите, что BM на вашем контроллере не работает, у вас есть два варианта действий - либо включить этот режим насильно (прямо в той же программе - только для чипсетов Intel i430/i440, очень, впрочем, распространенных), либо поставить драйвера с поддержкой BM. |
Пользователям остальных чипсетов (например, от той же VIA, или новой линейки Intel i8xx) придется установить специальные драйвера с поддержкой Bus Mastering. |
Внимание 1: И тот, и другой вариант теоретически может привести к тому, что ваша система по каким-либо причинам не загрузится, и это будет очень сложно восстановить. |
Опытным пользователям, которые знают, что делать в этом случае, могу посоветовать на всякий случай создать диск аварийного восстановления (команда rdisk /s), а вообще могу утешить тем, что мне еще ни разу не встречалась ситуация, когда после включения режима BM тем или иным способом система не загрузилась. |
Если драйвер обнаружит, что BM на вашей системе всё-таки нет, он всё просто будет продолжать работать в обычном режиме. |
Внимание 2: Имейте в виду, что старые драйвера BM под NT4.0 - например, от Triones, или старые же драйвера Intel, не умеют работать с накопителями объемом более 8 Гбайт. |
Установка таких драйверов может обернуться катастрофой - например, тома NTFS, имеющие области, выходящие за 8 Гбайт от начала диска, имеют шанс быть необратимо поврежденными, так как система будет проставлять "сбойные" кластеры даже при попытках чтения с недоступных областей, что приведет к потере ваших данных. |
Категорически рекомендую пользоваться драйверами, выпущенными хотя бы в 1999 году, для чипсетов Intel - версией 4 и выше (первая цифра номера версии). |
Другие ОС |
К счастью, другие современные операционные системы (Linux, FreeBSD, BeOS и т.д.) имеют более внятную поддержку Bus Mastering. |
Все эти системы, а вернее, их стандартные драйвера (последних версий систем), имеют поддержку Bus Mastering для практически всех контроллеров Intel (а некоторые - и для VIA), и сами используют все устройства в наиболее оптимальном режиме. |
Пользователи систем Unix, например, смогут убедиться в этом, проследив за сообщениями, которые выдает драйвер при загрузке (если, конечно, их система выдает эту информацию - Unix можно сконфигурировать как угодно). |
BeOS включает данный режим по умолчанию, так что иногда даже приходится решать противоположную задачу: выключать его вручную (если возникают проблемы с загрузкой системы). |
С IDE-контроллерами (материнскими платами) других производителей, отличных от Intel и VIA, дело обстоит несколько хуже, а иногда, к огромному сожалению, и вообще никак - но ответы на эти вопросы вы сможете получить только самостоятельно изучив вашу ситуацию. |
Достаточно свежие драйвера Bus Mastering для всех распространенных чипсетов для систем Windows можно взять по адресу www.bmdrivers.com или на этом сайте в разделе "Носители информации" или "Системные платы" - драйвера IDE Bus Mastering. |
Установки виртуальной памяти |
Все современные операционные системы пользуются виртуальной памятью - специальным файлом подкачки, который компенсирует недостаточное количество физической памяти системы. |
Основной параметр, имеющий отношение к системе виртуальной памяти - размер файла (или нескольких файлов) подкачки. |
Система Windows 95/98/ME имеет по умолчанию динамический файл виртуальный памяти, который изменяет свой размер в соответствии с текущими потребностями системы. |
Имеет ли смысл вмешиваться в такой режим работы, выставляя минимальный и максимальный размер вручную? |
Да, какой-то смысл в этом есть. |
Если вы поставите минимальный размер файла подкачки в районе 200 - 300 Мбайт (максимальный - на ваше усмотрение, но лучше не менее 500 Мбайт), вы избавите систему от ненужных манипуляций по динамическому изменению размера файла. |
Если после этой процедуры вы еще и дефрагментируете свой диск современным дефрагментатором, который умеет работать с файлом виртуальной памяти, вы получите еще немного быстродействия. |
Какой минимальный размер файла виртуальной памяти выбрать? |
Столько, сколько вам не жалко, но более 300 Мбайт, пожалуй, не стоит. |
Системы Windows NT4.0 и Windows 2000 имеют немножко другую стратегию работы с виртуальной памятью - динамическое изменение размера файла виртуальной памяти хоть и предусмотрено, но не является штатным режимом работы. |
Какой общий минимальный размер файлов подкачки выбрать? |
Единственное, что можно сказать наверняка - значение по умолчанию слишком мало для эффективной работы. |
Обычным системам рекомендую минимум где-то в районе 200 - 300 Мбайт, а сложным компьютерам типа издательских или, к примеру, графических рабочих станций, будет не лишним и 500 Мбайт. |
На максимальный размер тоже рекомендую не скупиться - цифры порядка гигабайта будут в самый раз. |
Это практически никак не повлияет на работу системы в обычном режиме, но позволит избежать неожиданностей и сбоев в самые ответственные моменты, например во время работы с огромными документами. |
Пользователям других ОС можно дать, в общем-то, те же рекомендации: постарайтесь сделать так, чтобы файл виртуальной памяти не изменял свой размер динамически, так как это снижает быстродействие системы и повышает фрагментацию. |
Имеет ли смысл ставить максимально возможный размер файла подкачки? К сожалению, нет. |
Если файл вмещает все необходимые данные (т.е. не увеличивается в процессе работы), то быстродействие системы максимально, и поднять его увеличением размера файла не получится. |
Да, с увеличением файла виртуальной памяти пойдут в ход какие-то эффекты, влияющие на быстродействие системы подкачки, но они будут как за, так и против, и на практическое быстродействие хоть сколь заметным образом влиять не будут. |
Где и как размещать файл подкачки? |
В случае если у вас есть несколько логических дисков, постарайтесь поместить файл виртуальной памяти на том разделе, который ближе к физическому началу диска. |
Быстродействие операций чтения/записи там традиционно немного выше, ну или, в крайнем случае, не хуже, чем в остальных местах диска. |
К сожалению, размещать виртуальную память на другом логическом диске, пытаясь изолировать ее от файлов операционной системы, бессмысленно - пока файл виртуальной памяти находится на том же физическом диске, вы ничего не выиграете изменением его логического местоположения. |
Виртуальная память в системе с несколькими жесткими дисками - более гибкий вопрос. |
Постарайтесь разместить виртуальную память там, где нет файлов программ - то есть вне системного раздела. |
Это очень существенно повысит быстродействие. |
Многие современные системы (например, Windows NT4.0 и Windows 2000) могут использовать виртуальную память на нескольких дисках - но имейте в виду: размещать даже часть виртуальной память на том же физическом диске, где и сама система, не следует. |
Если у вас три физических диска, то не обращайте внимания на их сравнительное быстродействие, а разместите файлы подкачки на обоих несистемных дисках - это тоже сильно повысит быстродействие, а система сама сбалансирует загрузку дисков в соответствии с их скоростью. |
Имейте только в виду, что файл виртуальной памяти категорически противопоказано помещать на диски, работающие в режиме PIO. |
На какой файловой системе размещать виртуальную память? |
Это не имеет практического значения. |
Лучше бы, чтобы размер кластера на том диске, где размещается файл виртуальной памяти, был побольше - но и это на самом деле не очень важно. |
Старайтесь не создавать с нуля виртуальную память на заполненных более чем на две трети разделах - это почти всегда приведет к созданию фрагментированного файла подкачки. |
Если у вас нет другого выхода - постарайтесь хотя бы дефрагментировать диск перед увеличением размера файлов виртуальной памяти. |
Структура логических дисков |
Что лучше с точки зрения производительности - один логический диск на 10 Гбайт, или 3 Гбайт, выделенных под систему, и 7 Гбайт под какие-либо данные? |
С точки зрения быстродействия почти всегда будет много лучше выделить под систему отдельный раздел небольшого размера (2 - 4 Гбайт). |
Этот шаг приведет к тому, что системные файлы, доступ к которым осуществляется более-менее одновременно, будут находиться на близких друг к другу областях физического диска - т.е. физическая "взаимная фрагментация" системных файлов будет намного ниже. |
Особенно стоит учесть этот момент тем, кто имеет системные диски размером несколько десятков гигабайт. |
Если выделить под системный логический диск 10% - 20% от емкости большого диска (т.е. около 2 Гбайт), то время поиска дорожки при движении головки диска между системными файлами будет в несколько раз меньше, нежели то время, которое необходимо затратить для перемещения головки по всему физическому диску. |
В случае установки системы на диск в десяток-другой Гбайт, системные файлы обязательно хаотически рассредоточатся по всему этому пространству, что создаст ненужные трудности с одновременным доступом к этим файлам. |
Стоит ли дробить диски каким-либо еще образом? |
Нет, не стоит. |
Каждый логический диск в процессе своего использования системой (монтирования) заставляет хранить в памяти довольно много (сотни Кбайт) служебной информации, и это уменьшает количество доступной системе памяти. |
Хоть это и не очень большая потеря, но с точки зрения быстродействия преимуществ в создании множества логических дисков всё равно меньше. |
У этого правила, впрочем, есть одно исключение: если вы используете систему FAT32 (а пользователи Windows 98/ME не имеют другой стандартной файловой системы), то не стоит создавать логически диски более 10 - 15 Гбайт. |
Если у вас винчестер, скажем, порядка 40 Гбайт, то будет разумнее сделать всё таки несколько томов, помимо системного, и очень желательно так, чтобы большие тома не использовались одновременно. |
Другие современные файловые системы не имеют подобных ограничений. |
Заключение |
Дисковую систему конкретных операционных систем можно оптимизировать и дальше - например, управляя кэшированием, изменяя режимы работы драйверов файловых систем, и т.д. |
Но, к сожалению, эти настройки слишком специфичны для каждой конкретной операционной системы. |
Данная же статья рассказывает об общих соображениях, единых для всех операционных систем, а к вопросу об оптимизации конкретных систем мы, возможно, еще вернемся. |