En informática , Native Command Queueing ( NCQ ) es una extensión del protocolo Serial ATA que permite que las unidades de disco duro optimicen internamente el orden en que se ejecutan los comandos de lectura y escritura recibidos. Esto puede reducir la cantidad de movimiento innecesario del cabezal de la unidad, lo que da como resultado un mayor rendimiento (y un desgaste levemente menor de la unidad) para cargas de trabajo en las que hay pendientes múltiples solicitudes de lectura / escritura simultáneas, que ocurren con mayor frecuencia en aplicaciones de tipo servidor .
Historia
Native Command Queueing fue precedido por la versión de Tagged Command Queueing (TCQ) de Parallel ATA . El intento de ATA de integrar TCQ se vio limitado por el requisito de que los adaptadores de bus de host ATA usen protocolos de dispositivo de bus ISA para interactuar con el sistema operativo. La alta sobrecarga de CPU resultante y la ganancia de rendimiento insignificante contribuyeron a la falta de aceptación en el mercado de TCQ.
NCQ se diferencia de TCQ en que, con NCQ, cada comando es de igual importancia, pero el adaptador de bus de host de NCQ también programa su propio motor DMA de primera parte con parámetros DMA proporcionados por la CPU durante su secuencia de comandos, mientras que TCQ interrumpe la CPU durante las consultas de comandos y para modular el motor DMA de terceros del adaptador de bus de host ATA . Es preferible la implementación de NCQ porque el variador tiene un conocimiento más preciso de sus características de rendimiento y puede tener en cuenta su posición de rotación. Tanto NCQ como TCQ tienen una longitud de cola máxima de 32 comandos pendientes. [1] [2]
Para que NCQ esté habilitado, debe ser compatible y habilitado en el adaptador de bus de host SATA y en el propio disco duro. Se debe cargar el controlador apropiado en el sistema operativo para habilitar NCQ en el adaptador de bus de host. [3]
Muchos conjuntos de chips más nuevos admiten la Interfaz de controlador de host avanzada (AHCI), que permite que los sistemas operativos los controlen universalmente y habiliten NCQ. DragonFly BSD ha admitido AHCI con NCQ desde 2.3 en 2009. [4] [5] Más reciente [ ¿cuál? ] Los núcleos de Linux convencionales son compatibles con AHCI de forma nativa, y FreeBSD es totalmente compatible con AHCI desde la versión 8.0. Windows Vista y Windows 7 también son compatibles de forma nativa con AHCI, pero su compatibilidad con AHCI (a través del servicio msahci) debe habilitarse manualmente mediante la edición del registro si la compatibilidad con el controlador no estuvo presente durante la instalación inicial. AHCI de Windows 7 habilita no solo NCQ sino también el soporte TRIM en unidades SSD (con su firmware de soporte). Los sistemas operativos más antiguos, como Windows XP, requieren la instalación de un controlador específico del proveedor (similar a instalar un controlador RAID o SCSI ) incluso si AHCI está presente en el adaptador de bus de host, lo que hace que la configuración inicial sea más tediosa y las conversiones de las instalaciones existentes sean relativamente difíciles. ya que la mayoría de los controladores no pueden operar sus puertos en modo mixto AHCI – SATA / IDE / heredado.
Discos Duros
Actuación
Una prueba de 2004 con la unidad NCQ de primera generación (Seagate 7200.7 NCQ) encontró que mientras NCQ aumentó el rendimiento de IOMeter, el rendimiento de las aplicaciones de escritorio en realidad disminuyó. [6] Una revisión en 2010 encontró mejoras del orden del 9% (en promedio) con NCQ habilitado en una serie de pruebas multitarea de Windows. [7]
NCQ puede interferir negativamente con el programador de E / S del sistema operativo , lo que en realidad reduce el rendimiento; [8] esto se ha observado en la práctica en Linux con RAID-5 . [9] No hay ningún mecanismo en NCQ para que el host especifique algún tipo de fecha límite para una E / S, como cuántas veces se puede ignorar una solicitud en favor de otras. En teoría, la unidad puede retrasar una solicitud en cola una cantidad de tiempo arbitraria mientras atiende otras solicitudes (posiblemente nuevas) bajo presión de E / S. [8] Dado que los algoritmos utilizados dentro del firmware de las unidades para el pedido de despacho de NCQ generalmente no se conocen públicamente, esto introduce otro nivel de incertidumbre para el rendimiento del hardware / firmware. Las pruebas en Google alrededor de 2008 han demostrado que NCQ puede retrasar una E / S hasta 1 o 2 segundos. Una solución alternativa propuesta es que el sistema operativo muera de hambre artificialmente la cola NCQ antes para satisfacer las aplicaciones de baja latencia de manera oportuna. [10]
En el firmware de algunas unidades, como el WD Raptor alrededor de 2007, la lectura anticipada está deshabilitada cuando NCQ está habilitado, lo que resulta en un rendimiento secuencial más lento. [11]
Seguridad (FUA)
Una característica menos conocida de NCQ es que, a diferencia de su predecesor ATA TCQ, permite al host especificar si desea ser notificado cuando los datos lleguen a los platos del disco o cuando lleguen al búfer del disco (caché integrado). Suponiendo una implementación de hardware correcta, esta función permite garantizar la coherencia de los datos cuando se utiliza la memoria caché integrada del disco junto con llamadas al sistema como fsync . [12] El indicador de escritura asociado, que también se toma prestado de SCSI, se llama Forzar acceso a la unidad (FUA). [13] [14] [15]
Discos de estado sólido
NCQ también se usa en unidades de estado sólido más nuevas donde la unidad encuentra latencia en el host, en lugar de al revés. Por ejemplo, la unidad de estado sólido X25-E Extreme de Intel utiliza NCQ para garantizar que la unidad tenga comandos para procesar mientras el sistema host está ocupado procesando las tareas de la CPU. [dieciséis]
NCQ también permite que el controlador SSD complete comandos al mismo tiempo (o parcialmente al mismo tiempo, por ejemplo, usando canalizaciones) donde la organización interna del dispositivo permite dicho procesamiento.
El estándar NVM Express (NVMe) también admite la cola de comandos, en una forma optimizada para SSD. [17] NVMe permite múltiples colas para un solo controlador y dispositivo, permitiendo al mismo tiempo profundidades mucho mayores para cada cola, lo que se asemeja más al funcionamiento del hardware SSD subyacente. [18]
Ver también
- Programación de E / S
- Barrera de escritura
Referencias
- ^ Documento técnico en PDF sobre NCQ de Intel y Seagate
- ^ Volumen 1 del borrador final del estándar ATA-7
- ^ "Descripción general de la cola de comandos nativos de SATA II", Informe técnico de Intel, abril de 2003.
- ↑ Matthew Dillon (4 de junio de 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 " " .
- ^ Matthew Dillon (2009). "ahci (4) - Interfaz de controlador de host avanzada para Serial ATA" . Referencia cruzada BSD . DragonFly BSD . Lay resumen .
- ^ "Disco duro Barracuda 7200.7 NCQ de Seagate - Informe técnico - Página 13" . El informe técnico . Consultado el 11 de enero de 2014 .
- ^ "Multitarea con cola de comando nativo - El informe técnico - Página 5" . El informe técnico . Consultado el 11 de enero de 2014 .
- ^ a b Yu, YJ; Shin, DI; Eom, H .; Yeom, HY (2010). "NCQ vs planificador de E / S". Transacciones ACM sobre almacenamiento . 6 : 1. doi : 10.1145 / 1714454.1714456 . [1]
- ^ "disco duro - Rendimiento deficiente del software RAID 5 de Linux con NCQ" . Fallo del servidor . Consultado el 11 de enero de 2014 .
- ^ Gwendal Grignou, NCQ emulación, FLS'08 resumen de la comunicación (p. 109) se desliza
- ^ "Mark Lord: Re: ¿Velocidad de transferencia HD más baja con NCQ habilitado?" . LKML. 2007-04-03 . Consultado el 11 de enero de 2014 .
- ^ Marshall Kirk McKusick . "Discos desde la perspectiva de un sistema de archivos - Cola ACM" . Queue.acm.org . Consultado el 11 de enero de 2014 .
- ^ Gregory Smith (2010). PostgreSQL 9.0: Alto rendimiento . Packt Publishing Ltd. pág. 78 . ISBN 978-1-84951-031-8.
- ^ http://www.seagate.com/docs/pdf/whitepaper/D2c_tech_paper_intc-stx_sata_ncq.pdf
- ^ Jonathan Corbet (18 de agosto de 2010). "El fin de las barreras de bloque" . LWN.net . Consultado el 27 de junio de 2015 .
- ^ Gasior, Geoff (23 de noviembre de 2008). "Unidad de estado sólido X25-E Extreme de Intel: ahora con memoria flash de celda de un solo nivel" . Informe técnico .
- ^ Dave Landsman (9 de agosto de 2013). "AHCI y NVMe como interfaces para dispositivos SATA Express - Descripción general" (PDF) . SATA-IO . Consultado el 2 de octubre de 2013 .
- ^ "Descripción general de NVM Express" . nvmexpress.org . Consultado el 26 de noviembre de 2014 .
enlaces externos
- Serial ATA y los 7 pecados capitales del ATA paralelo en circuitos perdidos (para TCQ)
- Análisis de bombo frente a la realidad en Tom's Hardware