
En informática , la cola de comandos nativa ( NCQ ) es una extensión del protocolo Serial ATA que permite a las unidades de disco duro optimizar internamente el orden de ejecución de los comandos de lectura y escritura recibidos. Esto reduce el movimiento innecesario del cabezal de lectura/escritura, lo que se traduce en un mayor rendimiento (y una ligera disminución del desgaste de la unidad) para cargas de trabajo con múltiples solicitudes simultáneas de lectura/escritura, como suele ocurrir en aplicaciones de servidor .
Historia
La función Native Command Queuing fue precedida por la versión de Tagged Command Queuing (TCQ) de Parallel ATA . El intento de ATA de integrar TCQ se vio limitado por el requisito de que los adaptadores de bus host de ATA utilizaran protocolos de dispositivo de bus ISA para interactuar con el sistema operativo . El elevado consumo de CPU resultante y la escasa mejora del rendimiento contribuyeron a la falta de aceptación en el mercado de ATA TCQ.
NCQ se diferencia de TCQ en que, con NCQ, cada comando tiene la misma 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 requiere que module el motor DMA de terceros del adaptador de bus de host ATA . La implementación de NCQ es preferible porque la unidad tiene un conocimiento más preciso de sus características de rendimiento y puede tener en cuenta su posición rotacional. Tanto NCQ como TCQ tienen una longitud máxima de cola de 32 comandos pendientes. [ 1 ] [ 2 ] Debido a que el ATA TCQ se usa raramente, Parallel ATA (y el modo IDE de algunos conjuntos de chips) generalmente solo admite un comando pendiente por puerto.
Para que NCQ esté habilitado, debe ser compatible y estar habilitado en el adaptador de bus host SATA y en el propio disco duro. El controlador adecuado debe cargarse en el sistema operativo para habilitar NCQ en el adaptador de bus host. [ 3 ]
Muchos chipsets más recientes admiten la Interfaz de controlador de host avanzada (AHCI), que permite a los sistemas operativos controlarlos universalmente y habilitar NCQ. DragonFly BSD ha admitido AHCI con NCQ desde la versión 2.3 en 2009. [ 4 ] [ 5 ] Los kernels de Linux admiten AHCI de forma nativa desde la versión 2.6.19, y FreeBSD admite AHCI completamente desde la versión 8.0. Windows Vista y Windows 7 también admiten AHCI de forma nativa, 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 estaba presente durante su instalación inicial. El AHCI de Windows 7 habilita no solo NCQ sino también la compatibilidad con TRIM en unidades SSD (con su firmware compatible ). Los sistemas operativos más antiguos, como Windows XP, requieren la instalación de un controlador específico del proveedor (similar a la instalación de un controlador RAID o SCSI ), incluso si el adaptador del bus host es compatible con AHCI. Esto hace que la configuración inicial sea más tediosa y que las conversiones de 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 realizada en 2004 con la unidad NCQ de primera generación (Seagate 7200.7 NCQ) reveló que, si bien NCQ mejoraba el rendimiento de IOMeter, el rendimiento de las aplicaciones de escritorio disminuía. [ 6 ] Una revisión de 2010 halló mejoras del orden del 9 % (en promedio) con NCQ habilitado en una serie de pruebas de multitarea de Windows. [ 7 ]
NCQ puede interferir negativamente con el planificador de E/S del sistema operativo , disminuyendo el rendimiento; [ 8 ] esto se ha observado en la práctica en Linux con RAID-5 . [ 9 ] No existe ningún mecanismo en NCQ para que el host especifique ningún tipo de plazos para una E/S, como cuántas veces se puede ignorar una solicitud en favor de otras. En teoría, una solicitud en cola puede ser retrasada por la unidad una cantidad arbitraria de tiempo 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 orden de despacho de NCQ generalmente no se conocen públicamente, esto introduce otro nivel de incertidumbre para el rendimiento del hardware/firmware. Pruebas en Google alrededor de 2008 han demostrado que NCQ puede retrasar una E/S hasta 1-2 segundos. Una solución propuesta es que el sistema operativo agote artificialmente la cola NCQ antes para satisfacer las aplicaciones de baja latencia de manera oportuna. [ 10 ]
En el firmware de algunas unidades, como la WD Raptor de alrededor de 2007, la lectura anticipada se desactiva cuando NCQ está habilitado, lo que resulta en un rendimiento secuencial más lento. [ 11 ]
Las unidades de estado sólido SATA se benefician significativamente de la capacidad de poner en cola múltiples comandos para cargas de trabajo paralelas. En el caso de las unidades SSD NVMe basadas en PCIe , la profundidad de la cola se incrementó aún más para admitir un máximo de 65 535 colas con hasta 65 535 comandos cada una.
Seguridad (FUA)
Una característica menos conocida de NCQ es que, a diferencia de su predecesor ATA TCQ, permite al host especificar si desea recibir una notificación cuando los datos llegan a los platos del disco o cuando llegan al búfer del disco (caché integrada). Suponiendo una implementación de hardware correcta, esta característica permite garantizar la consistencia de los datos cuando se utiliza la 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 Acceso a Unidad Forzada (FUA). [ 13 ] [ 14 ] [ 15 ]
Unidades de estado sólido
NCQ también se utiliza en unidades de estado sólido más recientes donde la unidad experimenta 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 que procesar mientras el sistema host está ocupado procesando tareas de la CPU. [ 16 ]
NCQ también permite que el controlador SSD complete comandos de forma concurrente (o parcialmente concurrente, por ejemplo, utilizando tuberías) cuando la organización interna del dispositivo permite dicho procesamiento.
El estándar NVM Express (NVMe) también admite la cola de comandos, en un formato optimizado para SSD. [ 17 ] NVMe permite múltiples colas para un único controlador y dispositivo, lo que a su vez permite profundidades mucho mayores para cada cola, lo que se ajusta mejor al funcionamiento del hardware SSD subyacente. [ 18 ]
Véase también
Referencias
- ↑ Documento técnico en PDF sobre NCQ de Intel y Seagate
- ↑ "Volumen 1 del borrador final del estándar ATA-7" (PDF) . Archivado del original (PDF) el 6 de febrero de 2012. Consultado el 2 de enero de 2007 .
- ↑ "Descripción general de la cola de comandos nativa SATA II", documento técnico de Intel, abril de 2003.
- ↑ Matthew Dillon (04-06-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 avanzada de controlador de host para Serial ATA" . Referencia cruzada de BSD . DragonFly BSD .
- "ahci - Interfaz avanzada de controlador de host para Serial ATA". Páginas del manual en línea de DragonFly .
- ↑ "Disco duro Barracuda 7200.7 NCQ de Seagate - The Tech Report - Página 13" . The Tech Report. 17 de diciembre de 2004. Consultado el 11 de enero de 2014 .
- ↑ "Multitarea con cola de comandos nativa - The Tech Report - Página 5" . The Tech Report. 3 de agosto de 2005. Consultado el 11 de enero de 2014 .
- 1 2 Yu, YJ; Shin, DI; Eom, H.; Yeom, HY (2010). "NCQ vs. planificador de E/S". ACM Transactions on Storage . 6 : 1– 37. doi : 10.1145/1714454.1714456 . S2CID 14414608 . Archivado el 11 de enero de 2014 en Wayback Machine.
- ↑ "disco duro - Rendimiento deficiente del software RAID 5 de Linux con NCQ" . Server Fault . Consultado el 11 de enero de 2014 .
- ^ Gwendal Grignou, Emulación NCQ, diapositivas del resumen de la charla FLS'08 (p. 109)
- ↑ "Mark Lord: Re: ¿Menor velocidad de transferencia HD con NCQ habilitado?" . LKML. 2007-04-03 . Recuperado el 2014-01-11 .
- ↑ Marshall Kirk McKusick . "Discos desde la perspectiva de un sistema de archivos - ACM Queue" . 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.
- ↑ "Cola de comandos nativa" (PDF) . Archivado del original (PDF) el 17 de mayo de 2004.
- ↑ 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 (09-08-2013). "AHCI y NVMe como interfaces para dispositivos SATA Express: descripción general" (PDF) . SATA-IO . Consultado el 02-10-2013 .
- ↑ "Descripción general de NVM Express" . nvmexpress.org . Consultado el 26 de noviembre de 2014 .
Enlaces externos
- ATA serial y los 7 pecados capitales del ATA paralelo en Lost Circuits (para TCQ)
- Análisis de la realidad frente a la exageración en Tom's Hardware
- ATA serie