Собственная очередь команд

В вычислительной технике Native Command Queuing ( NCQ ) представляет собой расширение протокола Serial ATA, позволяющее жестким дискам внутренне оптимизировать порядок выполнения полученных команд чтения и записи. Это может уменьшить количество ненужных движений головки диска, что приведет к повышению производительности (и небольшому уменьшению износа диска) для рабочих нагрузок, в которых выполняются несколько одновременных запросов на чтение/запись, что чаще всего происходит в серверного приложениях типа.
История
[ редактировать ]Нативной очереди команд предшествовала (TCQ) от Parallel ATA версия Tagged Command Queuing . Попытка ATA интегрировать TCQ была ограничена требованием, чтобы адаптеры главной шины ATA использовали протоколы устройств шины ISA для взаимодействия с операционной системой. В результате высокая нагрузка на ЦП и незначительный прирост производительности привели к тому, что ATA TCQ не был принят рынком.
NCQ отличается от TCQ тем, что в NCQ каждая команда имеет одинаковую важность, но адаптер главной шины NCQ также программирует свой собственный механизм DMA первого производителя , заданными ЦП с параметрами DMA во время своей последовательности команд, тогда как TCQ прерывает ЦП во время командных запросов и требует адаптера главной шины ATA он предназначен для модуляции механизма DMA стороннего . Реализация NCQ предпочтительнее, поскольку привод более точно знает свои рабочие характеристики и способен учитывать свое вращательное положение. И NCQ, и TCQ имеют максимальную длину очереди в 32 невыполненные команды. [1] [2] Поскольку ATA TCQ используется редко, Parallel ATA (и режим IDE некоторых наборов микросхем) обычно поддерживают только одну невыполненную команду на порт.
Чтобы NCQ был включен, он должен поддерживаться и быть включен в адаптере главной шины SATA и на самом жестком диске. Соответствующий драйвер должен быть загружен в операционную систему, чтобы включить NCQ на адаптере главной шины. [3]
Многие новые наборы микросхем поддерживают расширенный интерфейс хост-контроллера (AHCI), который позволяет операционным системам универсально управлять ими и включать NCQ. DragonFly BSD поддерживает AHCI с NCQ начиная с версии 2.3 в 2009 году. [4] [5] Ядра Linux изначально поддерживают AHCI, начиная с версии 2.6.19, а FreeBSD полностью поддерживает AHCI, начиная с версии 8.0. Windows Vista и Windows 7 также изначально поддерживают AHCI, но их поддержку AHCI (через службу msahci) необходимо включить вручную посредством редактирования реестра, если поддержка контроллера отсутствовала во время первоначальной установки. Windows 7 AHCI в TRIM обеспечивает не только NCQ, но и поддержку на 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]
SATA Твердотельные накопители значительно выигрывают от возможности ставить в очередь несколько команд для параллельных рабочих нагрузок. на базе PCIe Для твердотельных накопителей NVMe глубина очереди была даже увеличена для поддержки максимум 65 535 очередей по 65 535 команд в каждой.
Безопасность (БЕСПЛАТНО)
[ редактировать ]Одна менее известная особенность 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]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Технический документ в формате PDF по NCQ от Intel и Seagate.
- ^ Том 1 окончательного проекта стандарта ATA-7.
- ^ «Обзор собственной очереди команд SATA II», официальный документ Intel, апрель 2003 г.
- ^ Мэтью Диллон (4 июня 2009 г.). " "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 . Драгонфлай БСД .
- «ahci — расширенный интерфейс хост-контроллера для Serial ATA». Страницы онлайн-руководства DragonFly .
- ^ «Жесткий диск Seagate Barracuda 7200.7 NCQ — Технический отчет — Страница 13» . Технический отчет. 17 декабря 2004 года . Проверено 11 января 2014 г.
- ^ «Многозадачность с собственной очередью команд — Технический отчет — Страница 5» . Технический отчет. 3 августа 2005 г. Проверено 11 января 2014 г.
- ^ Перейти обратно: а б Ю, YJ; Шин, ДИ; Эом, Х.; Йом, HY (2010). «NCQ против планировщика ввода-вывода». Транзакции ACM в хранилище . 6 :1–37. дои : 10.1145/1714454.1714456 . S2CID 14414608 . [1]
- ^ «жесткий диск — низкая производительность программного обеспечения Linux RAID 5 с NCQ» . Ошибка сервера . Проверено 11 января 2014 г.
- ^ Гвендал Гринью, Эмуляция NCQ, Краткое содержание выступления FLS'08 (стр. 109) , слайды
- ^ «Марк Лорд: Re: Снижение скорости передачи данных HD при включенном NCQ?» . ЛКМЛ. 03 апреля 2007 г. Проверено 11 января 2014 г.
- ^ Маршалл Кирк МакКьюсик . «Диски с точки зрения файловой системы — очередь ACM» . Queue.acm.org . Проверено 11 января 2014 г.
- ^ Грегори Смит (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 [ только URL-адрес PDF ]
- ^ Джонатан Корбет (18 августа 2010 г.). «Конец блочных барьеров» . LWN.net . Проверено 27 июня 2015 г.
- ^ Гасиор, Джефф (23 ноября 2008 г.). «Твердотельный накопитель Intel X25-E Extreme — теперь с одноуровневой флэш-памятью» . Технический отчет .
- ^ Дэйв Ландсман (9 августа 2013 г.). «AHCI и NVMe как интерфейсы для устройств SATA Express – обзор» (PDF) . САТА-ИО . Проверено 2 октября 2013 г.
- ^ «Обзор NVM Express» . nvmexpress.org . Проверено 26 ноября 2014 г.