Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
NCQ позволяет самому диску определять оптимальный порядок извлечения невыполненных запросов. Это может, как здесь, позволить приводу выполнять все запросы за меньшее количество оборотов и, следовательно, меньше времени.

В вычислении , очереди команд Native ( NCQ ) является расширением Serial ATA протокол , позволяющий жесткие диски внутренне оптимизировать порядок , в котором полученные чтения и записи команд выполняются. Это может уменьшить количество ненужных движений головки диска, что приведет к повышению производительности (и небольшому снижению износа диска) для рабочих нагрузок, когда несколько одновременных запросов на чтение / запись остаются невыполненными, что чаще всего происходит в приложениях серверного типа.

История [ править ]

Собственной очереди команд предшествовала версия Tagged Command Queuing (TCQ) для Parallel ATA . Попытка ATA интегрировать TCQ была ограничена требованием, чтобы адаптеры шины хоста ATA использовали протоколы устройств шины ISA для взаимодействия с операционной системой. В результате высокие накладные расходы ЦП и незначительный прирост производительности привели к тому, что TCQ не был принят рынком.

NCQ отличается от TCQ тем, что с NCQ каждая команда имеет одинаковую важность, но адаптер шины хоста NCQ также программирует свой собственный механизм DMA первой стороны с параметрами DMA, заданными ЦП, во время выполнения своей последовательности команд, тогда как TCQ прерывает ЦП во время командных запросов и требует он используется для модуляции стороннего механизма DMA адаптера шины хоста ATA . Реализация 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 Vista и Windows 7 также изначально поддерживают AHCI, но их поддержка AHCI (через службу msahci) должна быть включена вручную с помощью редактирования реестра, если во время первоначальной установки не было поддержки контроллера. Windows 7AHCI обеспечивает поддержку не только NCQ, но и TRIM на SSD- дисках (с их поддерживающей прошивкой). Старые операционные системы, такие как Windows XP, требуют установки драйвера от производителя (аналогично установке контроллера RAID или SCSI ), даже если AHCI присутствует на адаптере главной шины, что делает первоначальную настройку более утомительной, а преобразование существующих установок относительно трудным. поскольку большинство контроллеров не могут работать со своими портами в смешанном режиме AHCI – SATA / IDE / legacy.

Жесткие диски [ править ]

Производительность [ править ]

Тест 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, называется Force Unit Access (FUA). [13] [14] [15]

Твердотельные накопители [ править ]

NCQ также используется в новых твердотельных накопителях, где накопитель сталкивается с задержкой на хосте, а не наоборот. Например, твердотельный накопитель Intel X25-E Extreme использует NCQ, чтобы гарантировать, что накопитель имеет команды для обработки, пока хост-система занята обработкой задач ЦП. [16]

NCQ также позволяет контроллеру SSD выполнять команды одновременно (или частично одновременно, например, используя конвейеры), если внутренняя организация устройства позволяет такую ​​обработку.

Стандарт NVM Express (NVMe) также поддерживает очередь команд в форме, оптимизированной для твердотельных накопителей. [17] NVMe допускает создание нескольких очередей для одного контроллера и устройства, позволяя в то же время гораздо большую глубину для каждой очереди, что более точно соответствует тому, как работает базовое оборудование SSD. [18]

См. Также [ править ]

  • Планирование ввода / вывода
  • Барьер записи

Ссылки [ править ]

  1. ^ Официальный документ в формате PDF по NCQ от Intel и Seagate
  2. ^ Том 1 окончательного проекта стандарта ATA-7
  3. ^ «Обзор встроенной очереди команд SATA II», Технический документ Intel, апрель 2003 г.
  4. ^ Мэтью Диллон (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 " " .
  5. ^ Мэттью Диллон (2009). «ahci (4) - Расширенный интерфейс хост-контроллера для Serial ATA» . Перекрестная ссылка BSD . DragonFly BSD . Выложите резюме .
  6. ^ «Жесткий диск Seagate Barracuda 7200.7 NCQ - Технический отчет - Страница 13» . Технический отчет . Проверено 11 января 2014 .
  7. ^ «Многозадачность с собственной организацией очереди команд - Технический отчет - Страница 5» . Технический отчет . Проверено 11 января 2014 .
  8. ^ a b Yu, YJ; Шин, ДИ; Eom, H .; Йом, HY (2010). «NCQ против планировщика ввода / вывода». ACM-транзакции в хранилище . 6 : 1. DOI : 10,1145 / 1714454,1714456 . [1]
  9. ^ "жесткий диск - Плохая производительность программного обеспечения Linux RAID 5 с NCQ" . Ошибка сервера . Проверено 11 января 2014 .
  10. ^ Гвендал Гринью, NCQ Emulation, сводка выступления FLS'08 (стр. 109), слайды
  11. ^ "Марк Лорд: Re: Понизить скорость передачи HD с включенным NCQ?" . LKML. 2007-04-03 . Проверено 11 января 2014 .
  12. ^ Маршалл Кирк МакКьюзик . «Диски с точки зрения файловой системы - очередь ACM» . Queue.acm.org . Проверено 11 января 2014 .
  13. ^ Грегори Смит (2010). PostgreSQL 9.0: высокая производительность . Packt Publishing Ltd. стр. 78 . ISBN 978-1-84951-031-8.
  14. ^ http://www.seagate.com/docs/pdf/whitepaper/D2c_tech_paper_intc-stx_sata_ncq.pdf
  15. Джонатан Корбет (18.08.2010). «Конец блочных преград» . LWN.net . Проверено 27 июня 2015 .
  16. ^ Gasior, Geoff (23 ноября 2008). «Твердотельный накопитель Intel X25-E Extreme - теперь с одноуровневой флеш-памятью» . Технический отчет .
  17. ^ Дэйв Ландсман (2013-08-09). «AHCI и NVMe как интерфейсы для устройств SATA Express - Обзор» (PDF) . SATA-IO . Проверено 2 октября 2013 .
  18. ^ «Обзор NVM Express» . nvmexpress.org . Проверено 26 ноября 2014 .

Внешние ссылки [ править ]

  • Serial ATA и 7 смертных грехов параллельного ATA при утерянных цепях (для TCQ)
  • Анализ хайпа и реальности в Tom's Hardware