WikiDer > Собственная очередь команд
В вычисление, Собственная очередь команд (NCQ) является продолжением Последовательный ATA протокол, позволяющий жесткие диски для внутренней оптимизации порядка выполнения полученных команд чтения и записи. Это может уменьшить количество ненужных движений головки диска, что приведет к повышению производительности (и небольшому снижению износа диска) для рабочих нагрузок, когда несколько одновременных запросов на чтение / запись остаются невыполненными, что чаще всего происходит в сервер-типа приложений.
История
Собственной очереди команд предшествовала Параллельный ATAверсия Tagged Command Queuing (TCQ). Попытка ATA интегрировать TCQ была ограничена требованием, чтобы адаптеры шины хоста ATA использовали ЭТО протоколы устройства шины для взаимодействия с операционной системой. В результате высокие накладные расходы ЦП и незначительный прирост производительности привели к тому, что TCQ не был принят рынком.
NCQ отличается от TCQ тем, что в NCQ каждая команда имеет одинаковое значение, но адаптер главной шины NCQ также программирует свои собственные первая сторона DMA двигатель с CPU DMA параметры во время своей последовательности команд, тогда как TCQ прерывает ЦП во время командных запросов и требует, чтобы он модулировал адаптер шины хоста ATA сторонний DMA двигатель. Реализация NCQ предпочтительнее, потому что привод имеет более точные сведения о своих рабочих характеристиках и может учитывать свое вращательное положение. И NCQ, и TCQ имеют максимальную длину очереди 32 невыполненных команды.[1][2].
Чтобы NCQ был включен, он должен поддерживаться и включаться в адаптере главной шины SATA и на самом жестком диске. Соответствующий драйвер должен быть загружен в операционную систему для включения NCQ на адаптере главной шины.[3]
Многие новые чипсеты поддерживают Расширенный интерфейс хост-контроллера (AHCI), что позволяет операционным системам универсально управлять ими и включать NCQ. DragonFly BSD поддерживает AHCI с NCQ с 2.3 в 2009 году.[4][5] Новее[который?] Основной поток Ядра Linux поддерживать AHCI изначально, и FreeBSD полностью поддерживает AHCI с версии 8.0. Виндоус виста и Windows 7 также изначально поддерживают AHCI, но их поддержка AHCI (через службу msahci) должна быть включена вручную с помощью редактирования реестра, если во время первоначальной установки не было поддержки контроллера. Windows 7AHCI позволяет не только NCQ, но и ОТДЕЛКА поддержка на SSD приводы (с их поддерживающей прошивкой). Старые операционные системы, такие как Windows XP требуется установка драйвера от производителя (аналогично установке RAID или SCSI контроллер), даже если на адаптере главной шины присутствует AHCI, что делает первоначальную настройку более утомительной, а преобразование существующих инсталляций относительно сложным, поскольку большинство контроллеров не могут управлять своими портами в смешанном режиме AHCI – SATA / IDE / legacy.
Жесткие диски
Спектакль
Эта секция нуждается в расширении. Вы можете помочь добавляя к этому. (Январь 2014) |
Тест 2004 года с приводом NCQ первого поколения (Seagate 7200.7 NCQ) показал, что, хотя NCQ повысил производительность IOMeter, производительность настольных приложений фактически снизилась.[6] Один обзор, проведенный в 2010 году, выявил улучшения порядка 9% (в среднем) с включенным NCQ в серии тестов многозадачности Windows.[7]
NCQ может негативно повлиять на работу операционной системы. Планировщик ввода / вывода, фактически снижая производительность;[8] это наблюдалось на практике на Linux с RAID-5.[9] В NCQ нет механизма для хоста, чтобы указать какие-либо крайние сроки для ввода-вывода, например, сколько раз запрос может быть проигнорирован в пользу других. Теоретически поставленный в очередь запрос может быть задерживается приводом на произвольное время пока он обслуживает другие (возможно, новые) запросы под давлением ввода-вывода.[8] Поскольку алгоритмы, используемые в микропрограммах накопителей для диспетчеризации NCQ, как правило, не известны широкой публике, это создает еще один уровень неопределенности для производительности оборудования / микропрограмм. Тесты в Google примерно в 2008 году показали, что NCQ может задерживать ввод-вывод на 1-2 секунды. Предлагаемый обходной путь заключается в том, чтобы операционная система раньше искусственно ограничивала очередь NCQ, чтобы своевременно удовлетворять приложения с малой задержкой.[10]
На прошивках некоторых приводов, например WD Raptor около 2007 г., чтение вперед отключается, когда включен NCQ, что снижает скорость последовательного выполнения.[11]
Безопасность (FUA)
Одна менее известная особенность NCQ заключается в том, что, в отличие от своего предшественника ATA TCQ, он позволяет хосту указывать, хочет ли он получать уведомление, когда данные достигают пластин диска или когда они достигают буфера диска (встроенного кеша). Предполагая правильную аппаратную реализацию, эта функция позволяет гарантировать согласованность данных, когда встроенный кэш диска используется вместе с такими системными вызовами, как fsync.[12] Соответствующий флаг записи, который также заимствован из SCSI, называется Принудительный доступ к юниту (FUA).[13][14][15]
Твердотельные накопители
NCQ также используется в более новых твердотельные накопители где диск сталкивается с задержкой на хосте, а не наоборот. Например, IntelВ твердотельном накопителе X25-E Extreme используется NCQ, чтобы гарантировать, что накопитель имеет команды для обработки, пока хост-система занята обработкой задач ЦП.[16]
NCQ также позволяет контроллеру SSD выполнять команды одновременно (или частично одновременно, например, используя конвейеры), если внутренняя организация устройства позволяет такую обработку.
В NVM Express Стандарт (NVMe) также поддерживает организацию очереди команд в форме, оптимизированной для твердотельных накопителей.[17] NVMe позволяет создавать несколько очередей для одного контроллера и устройства, обеспечивая в то же время гораздо большую глубину для каждой очереди, что более точно соответствует тому, как работает базовое оборудование SSD.[18]
Смотрите также
Рекомендации
- ^ Технический документ в формате PDF по NCQ от Intel и Seagate
- ^ Том 1 окончательного проекта стандарта ATA-7
- ^ «Обзор встроенной очереди команд SATA II», Технический документ Intel, апрель 2003 г.
- ^ Мэтью Диллон (2009-06-04). ""Re: DragonFly-2.3.1.165.g25822 master sys / dev / disk / ahci Makefile TODO ahci.c ahci.h ahci_attach.c ahci_cam.c ahci_dragonfly.c ahci_dragonfly.h atascsi.h"".
- ^ Мэтью Диллон (2009). "ahci (4) - Расширенный интерфейс хост-контроллера для Serial ATA". Перекрестная ссылка BSD. DragonFly BSD. Сложить резюме.
- ^ «Жесткий диск Seagate Barracuda 7200.7 NCQ - Технический отчет - Стр. 13». Технический отчет. Получено 2014-01-11.
- ^ «Многозадачность с встроенной организацией очереди команд - технический отчет - стр. 5». Технический отчет. Получено 2014-01-11.
- ^ а б Yu, Y.J .; Shin, D. I .; Eom, H .; Йом, Х. Ю. (2010). «NCQ против планировщика ввода-вывода». ACM-транзакции в хранилище. 6: 1. Дои:10.1145/1714454.1714456. [1]
- ^ "жесткий диск - Низкая производительность программного обеспечения Linux RAID 5 с NCQ". Ошибка сервера. Получено 2014-01-11.
- ^ Гвендаль Гринью, NCQ Emulation, FLS'08 краткое содержание выступления (стр.109) слайды
- ^ «Марк Лорд: Re: Понизить скорость передачи HD при включенном NCQ?». LKML. 2007-04-03. Получено 2014-01-11.
- ^ Маршалл Кирк МакКусик. «Диски с точки зрения файловой системы - очередь ACM». Queue.acm.org. Получено 2014-01-11.
- ^ Грегори Смит (2010). PostgreSQL 9.0: высокая производительность. Packt Publishing Ltd. стр.78. ISBN 978-1-84951-031-8.
- ^ http://www.seagate.com/docs/pdf/whitepaper/D2c_tech_paper_intc-stx_sata_ncq.pdf
- ^ Джонатан Корбет (18 августа 2010 г.). «Конец блочных преград». LWN.net. Получено 2015-06-27.
- ^ Гасиор, Джефф (23 ноября 2008 г.). «Твердотельный накопитель Intel X25-E Extreme - теперь с одноуровневой флеш-памятью». Технический отчет.
- ^ Дэйв Ландсман (9 августа 2013 г.). «AHCI и NVMe как интерфейсы для устройств SATA Express - Обзор» (PDF). SATA-IO. Получено 2013-10-02.
- ^ «Обзор NVM Express». nvmexpress.org. Получено 2014-11-26.