45 - Стратегии планирования доступа к диску PRI - Приоритеты В системе с использованием приоритета (PRI) управление планированием является внешним по отношению к программному обеспечению управления диском. Такой подход не имеет отношения к оптимизации использования диска, но зато удовлетворяет некоторым другим целям операционной системы. Коротким пакетным заданиям, а также интерактивным заданиям часто присваивается более высокий приоритет, чем длинным заданиям, требующим более длительных вычислений. Эта схема позволяет быстро завершить большое количество коротких заданий в системе обеспечивает малое время отклика. Однако при использовании этого метода у больших заданий оказывается слишком длительным ожидание выполнения дисковых операций. Кроме того, такая стратегия может привести к противодействию со стороны пользователей, которые будут разделять свои задания на малые подзадания. Не подходит эта стратегия и для работы с базами данных. LIFO - последним вошел - первым вышел Как это ни удивительно, но стратегия выполнения первым самого последнего запроса имеет свои преимущества. В системах обработки транзакций при предоставлении устройства для последнего пользователя должно выполняться лишь небольшое перемещение указателя последовательного файла. Использование преимуществ локализации позволяет повысить пропускную способность и уменьшить длину очереди. К сожалению, если нагрузка на диск велика, существует очевидная возможность голодания процесса. Три рассмотренные стратегии планирования FIFO, PRI и LIFO основаны исключительно на атрибутах очереди или запрашивающего процесса. Однако если планировщику известна текущая дорожка, то появляется Возможность использования стратегии планирования, основанной на содержимом запроса. SSTF Стратегия выбора наименьшего времени обслуживания (Shortest Service Time First - SSTF) заключается в выборе того дискового запроса на BBOД/BЫBOД, который требует наименьшего перемещения головок из текущей позиции. Следовательно, мы минимизируем время поиска. Естественно, постоянный выбор минимального времени поиска не дает гарантии, что среднее время поиска при всех перемещениях будет минимальным, но тем не менее эта стратегия обеспечивает лучшую по сравнению с FIFO производительность дисковой Системы. Поскольку головки могут перемещаться в двух направлениях, то при равных расстояниях для принятия решения может быть использован случайный выбор направления. SCAN Все стратегии, описанные к настоящему времени (за исключением FIFO), могут оставить некоторый запрос невыполненным до тех пор, пока не освободится вся очередь, т.е. при работе всегда могут иметься новые запросы, которые будут выбраны до уже имеющегося в очереди. Избежать такого рода голодания можно при использовании стратегии SCAN. При использовании этого алгоритма перемещение головки происходит только в одном направлении, удовлетворяя те запросы, которые соответствуют выбранному направлению. После достижения последней дорожки в выбранном направлении (или когда исчерпаются возможные запросы), направление изменится на противоположное. C-SCAN Стратегия C-SCAN (циклическое сканирование) ограничивает сканирование только одним направлением. Когда обнаруживается последняя дорожка в заданном направлении, головка возвращается в противоположный конец диска, и сканирование начинается снова. Это уменьшает максимальную задержку, вызванную новыми запросами. Если при использовании стратегии SCAN ожидаемое время сканирования от внутренней к внешней дорожке равно t, то ожидаемый интервал обслуживания секторов, находящихся на периферии, будет равен ХЗ. При использовании стратегии C-SCAN этот интервал будет порядка t+smax, т.е. Smax - максимальное время поиска. N-step-SCAN и FS-SCAN При использовании стратегий SSTF, SCAN, C-SCAN может оказаться возможной ситуация, когда один или несколько процессов с высокой частотой обращений к одной дорожке монополизируют устройство за счет многочисленных повторений запросов к одной и той же дорожке. Наиболее характерна эта особенность для многоповерхностных дисков с большой плотностью записи. Для предотвращения такого "залипания головки" очередь дисковых запросов может быть сегментирована, причем за один прием полностью выполняется весь сегмент заданий. Примерами такого подхода являются стратегии N-step-Scan и FSSCAN. Стратегия N-step-SCAN позволяет произвести сегментацию очереди дисковых запросов на подочереди длиной N. Каждая подочередь обрабатывается за один прием с использованием стратеrии SCAN. В ходе обработки очереди к некоторой другой очереди могут добавляться новые запросы. Если в конце текущего сканирования доступными оказываются менее N запросов, то все они обрабатываются в следующем цикле сканирования. При больших значениях N выполнение алгоритма N-step-SСAN похоже на выполнение SCAN; предельный случай N=1 соответствует стратегии FIFO. FSCAN - стратегия, использующая две подочереди. С началом сканирования все запросы находятся в одной из очередей; другая при этом остается пустой. Во время сканирования первой очереди все новые запросы попадают во вторую очередь. Таким образом, обслуживание новых очередей откладывается, пока не будут обработаны все старые запросы. NCQ Особенности ЖД с технологией NCQ: 1) работают на 20% быстрее, чем другие модели; 2) работают на 33% быстрее при транзакционной обработке большого количества запросов; 3) быстрее при работе с большими потоками транзакционных данных, чем диск SATA с 10 000 об./мин. Native Command Queuing (NCQ), или технология маршрутизации команд, реализована в виде дополнения к стандарту Serial ATA 1.0 и является неотъемлемой частью нового стандарта Serial ATA II. В чем суть технологии NCQ? Native Command Queuing (NCQ) – это расширенный протокол команд Serial ATA, который позволяет нескольким различным приложениям обращаться с запросами ввода-вывода в одно и то же время. Накопители с поддержкой NCQ используют специальный буфер, внутри которого команды, стоящие в очереди, могут динамически перестраиваться в соответствии с положением считывающей головки и текущей загрузкой. Кроме того, NCQ описывает механизм, который позволяет сортировать команды, в то время как дисковый накопитель работает с данными другой команды. Таким образом, теоретически применение NCQ позволяет повысить общую производительность системы, когда приложения активно используют технологию асинхронных запросов ввода-вывода. При использовании механизма NCQ контроллер анализирует запросы и оптимизирует очередность их выполнения таким образом, чтобы увеличить скорость передачи данных и минимизировать время поиска. Кроме того, контроллеры Native Serial ATA способны самостоятельно организовывать очереди запросов и выполнять их без вмешательства процессора. TCQ Как написано в официальных документах, Tag ’n seek – это метод управления командами, поступающими в винчестер, приводящий к увеличению быстродействия. Все приходящие команды маркируются специальными ярлыками и переупорядочиваются для наиболее эффективного исполнения. По большому счету "Tag 'n seek" это просто коммерческое название технологии Tagged Command Queueing. Для лучшего уяснения сути нововведения нужно представить, как обычно происходит работа подсистемы дискового ввода/вывода компьютера. Предположим, некая программа затребовала чтение данных с диска. Дисковая подсистема выдаёт винчестеру команду читать данные по протоколу DMA, адрес и размер требуемого блока данных. Для чтения этих данных винчестеру нужно определённое время, в течение которого система вольна заниматься чем угодно, однако канал связи с винчестером остаётся занятым и операции с другими устройствами на нём невозможны. По завершении чтения вызывается прерывание, сигнализирующее системе о завершении операции, после чего канал готов к дальнейшей работе. Очевидным недостатком такой схемы является высокая занятость АТА-канала и, возможно, шины ввода-вывода. На получение данных с пластины винчестеру нужно выбрать одну из нескольких (если таковые имеются) головок, переместить блок головок на нужный цилиндр, дождаться, пока пластины не довернутся затребованным сектором и лишь затем прочесть сами данные. Указанные операции занимают от десятых долей миллисекунды в случае последовательного чтения до нескольких десятков миллисекунд. Собственно передача данных занимает от 5 микросекунд для одного сектора до единиц миллисекунд. Таким образом, подавляющую часть времени канал связи с винчестером занят впустую. Что в этом плохого? Если винчестер на канале один, то ничего. А вот если к тому же шлейфу подключены дополнительные устройства, то одновременная их работа сильно замедлится. Способ обойти это препятствие был давно найден в протоколе SCSI, суть его состоит в том, чтобы разделить фазу запроса данных и фазу их получения. Когда команда передана устройству, связь с ним завершается до получения сигнала прерывания, после чего система опрашивает устройства, какая же именно команда выполнена. Таким образом, можно давать задания нескольким параллельным устройствам, и даже множественные задания одному устройству. При этом запросы на чтение и запись ставятся внутри винчестера в очередь и исполняются конкурентно – первыми те, которые требуют меньше времени. Этот режим работы называется Tag Queued. В IDE винчестерах подобная технология реализуется посредством дополнительных команд Read/Write DMA Queued, которые были добавлены в стандарт ATA/ATAPI-4 в рамках программы Command Queuing and Overlapping (конвейеризация и наложение команд). От обычных команд чтения и записи они отличаются указанием идентификационной метки команды. Метка нужна для того, чтобы сообщить компьютеру, какая конкретно из множества полученных команд была завершена. Метка может принимать значения от 0 до 31, т.е. винчестер способен одновременно «переваривать» до 32 команд. Это позволяет серьёзно оптимизировать маршрут перемещения головок, увеличив тем самым производительность винчестера. Поскольку во всех современных винчестерах реализована функция отложенной записи, польза от TCQ (Tagged Command Queuing) при записи сомнительна. Зато при чтении TCQ должна открывать винчестерам второе дыхание. И удвоенная польза должна наблюдаться, когда винчестеры находятся на одном шлейфе. Очевидно, что для проявления эффекта от упорядочения команд нагрузка на винчестер должна быть два и больше одновременных запроса, а это нехарактерно для «настольного» применения. Зато в серверных применениях TCQ может оказать неоценимую услугу в деле повышения производительности дисковой подсистемы. Для работы Tag 'n Seek недостаточно её реализации в винчестере, нужна ещё поддержка команд R/W DMA QUEUED со стороны операционной системы, т.е. как минимум требуются обновлённые IDE Busmaster драйверы.