Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 5: Конфигурирование и планирование подсистемы ввода-вывода

Последовательный ввод-вывод

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

Как мы уже упоминали, типичному дисковому накопителю для выполнения перехода головок к соседней дорожке потребуется около 0,9 мс. Прибавив это время к величине задержки вращения (2,99 мс), вы можете сделать вывод, что каждая операция ввода-вывода займет приблизительно 3,89 мс. Такая длительность теоретически позволяет выполнять 264 операции последовательного ввода-вывода в секунду, т.к. одна секунда содержит 264 интервала времени по 3,89 мс. Но на производительность последовательного ввода-вывода влияют и другие факторы, такие как ограничение пропускной способности интерфейса SCSI 40 Мб/с и компоненты операционной системы: файловая система и драйвер устройства. Эта дополнительная нагрузка определяет максимальную производительность последовательного ввода-вывода, допустимую для данного дискового накопителя, составляющую около 250 операций в секунду (это число зависит от размера передаваемых данных). Как вы узнаете в "Планирование мощности системы" , если ваш диск передает данные со скоростью, превышающей 85% от его производительности, то будут образовываться очереди, поэтому максимальная рекомендуемая производительность ввода-вывода составит 225 операций в секунду.

Произвольный ввод-вывод

При произвольном вводе-выводе головки дискового накопителя должны считывать данные с произвольных участков диска. Из-за этих произвольных перемещений головок происходит снижение производительности. Давайте снова вернемся к нашему примеру дискового накопителя. Пусть теперь головки затрачивают не по 0,8 мс, переходя на соседние дорожки, а перемещаются произвольным образом по всему диску. Для поиска произвольной дорожки потребуется в среднем около 6 мс, что в 7,5 раза длительней перехода к соседней дорожке. Для типичной операции произвольного ввода-вывода понадобится примерно 6 мс (в среднем) на перемещение головок к дорожке с данными и еще 2,99 мс на задержку вращения, что составит в сумме 8,99 мс, т.е. теоретически максимально может производиться 111 операций ввода-вывода в секунду (т.к. в одной секунде содержится 111 интервалов времени по 8,99 мс). Далее, мы уже говорили, что если возможности ввода-вывода для диска задействуются более чем на 85%, то образуются очереди. Поэтому максимальная рекомендуемая производительность ввода-вывода составит 94 операции в секунду. А если согласиться с эмпирическим правилом для учета нагрузки на контроллер, то следует ограничить ввод-вывод для данного дискового накопителя 85 операциями ввода-вывода в секунду.

Когда дисковый накопитель выполняет произвольный ввод-вывод, нормальная задержка (время, необходимое для выполнения одной операции ввода-вывода) составит 8,99 мс. Если обращения к диску станут производиться чаще, чем он сможет их обрабатывать, то начнут образовываться очереди и задержка вырастет (см. рис. 5.4). Как видите, чем ближе количество операций в секунду к рекомендованной максимальной производительности накопителя, тем длительней будет задержка.

Количество операций ввода-вывода в секунду как функция задержки

Рис. 5.4. Количество операций ввода-вывода в секунду как функция задержки

На самом деле, если вы достигните 100-процентного задействования возможностей диска, то очереди возникнут обязательно, а общая производительность резко снизится. Как вы прочтете в нашей книге позднее, SQL Server, как и любая другая система управления реляционными базами данных, очень сильно зависит от задержек ввода-вывода. Если для выполнения операций ввода-вывода требуется чрезмерно много времени, то производительность SQL Server сильно снизится (деградирует) и могут возникнуть такие проблемы, как блокировка (blocking) и зависание (deadlock). Когда поток ждет исполнения операции ввода-вывода, он может удерживать блокировки. До тех пор, пока операция ввода-вывода не будет исполнена, блокировка будет сохраняться, что и является причиной данных проблем.

Способы преодоления ограниченных возможностей дисков

Как же можно преодолеть ограничения, связанные с производительностью дисковых накопителей? На самом деле, здесь нет ничего хитрого. Следуйте советам, приведенным ниже, и вы сможете создать подсистему ввода-вывода с оптимальной производительностью:

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

Массивы RAID

Как вы понимаете, если просто добавлять в систему новые и новые дисковые накопители, то с нею будет очень сложно работать. Поэтому, вместо того, чтобы добавлять десятки или сотни отдельных дисковых накопителей, многие пользователи предпочитают применять массивы RAID (Redundant Array of Independent Disks, массивы независимых дисковых накопителей с избыточностью). Массивы RAID могут быть реализованы с использованием программных средств и имеющихся у вас устройств ввода-вывода, либо могут быть приобретены как аппаратные устройства RAID. В этом разделе мы познакомим вас с массивами RAID и расскажем о том, как они работают.

Как ясно из самого их названия, массивы RAID содержат в себе два или несколько дисковых накопителей, образуя тем самым массив дисковых накопителей. Операционная система воспринимает весь этот массив как один логический диск. Этот логический диск называют также дисковый том, потому что он является набором дисков, кажущихся одним диском. Для пользователей, для приложения и даже (если применяется аппаратный массив RAID) для Microsoft Windows 2000 массив RAID воспринимается как один диск. Во многих случаях, однако, этот один диск будет иметь гораздо больший объем, чем любой из дисков, имеющихся в продаже. Но благодаря массивам RAID можно создавать не только большие логические диски, но также, во многих из конфигураций RAID (уровнях RAID), обеспечивать также и отказоустойчивость логического диска. Эта отказоустойчивость позволяет диску RAID сохранять работоспособность даже при отказе одного или нескольких из отдельных дисковых накопителей, составляющих массив RAID. В следующих разделах мы покажем, как достигаются такие возможности, и расскажем о характеристиках различных уровней RAID.

Мы уже сказали, что массивы RAID могут быть реализованы программно; фактически, Windows 2000 поставляется вместе с программным обеспечением для RAID. Но в данной лекции мы в основном будем рассказывать об аппаратных реализациях RAID, потому что они обладают дополнительными функциональными возможностями. Мы расскажем об этих возможностях в следующих двух разделах и познакомим вас с функциональными возможностями и характеристиками различных уровней RAID.