
Native Command Queuing (NCQ) je technologie navržená ke zvýšení propustnosti a efektivity pevných disků připojených přes rozhraní SATA. Umožňuje jednotce (disku) přijímat více současných požadavků na čtení a zápis a interně optimalizovat jejich pořadí tak, aby se minimalizovaly zbytečné mechanické pohyby hlaviček a čekací doby vzniklé rotací ploten. NCQ nejvíce pomáhá v situacích, kdy je současně nevyřízeno více požadavků — typicky v serverových nebo víceuživatelských prostředích a u multitaskingových aplikací.
Jak NCQ funguje
Místo aby operační systém nebo řadič striktně pořadí vykonávání příkazů určoval, předává disk přijmuté příkazy do své interní fronty. Disk pak podle své znalosti fyzického uspořádání ploten a aktuální rotační polohy optimalizuje pořadí zpracování tak, aby byl počet pohybů hlavičky a čas čekání minimalizován. To vede k lepšímu průtoku operací I/O a potenciálně i ke snížení opotřebení mechanických částí.
Výhody
- Vyšší propustnost při smíšených náhodných operacích I/O, zejména když je aktivních více požadavků současně.
- Snížení zbytečných mechanických pohybů hlaviček a tím i potenciálně mírné snížení opotřebení diskových komponent.
- Možnost lepšího využití paralelních požadavků z více aplikací nebo vláken bez potřeby složitého plánování na straně OS.
Nevýhody a omezení
- V některých scénářích snížení výkonu — u čistě sekvenčních operací (velké soubory čtené/zapisované v pořadí) nebo v některých hrách či interaktivních aplikacích může přidání logiky pro přeřazování způsobit drobnou dodatečnou latenci. Moderní disky a řadiče však tyto problémy často minimalizují.
- NCQ dává přednost výkonu při paralelním zatížení; u jednovláknových sekvenčních přístupů přínos nebývá znatelný.
- Funkčnost závisí na podpoře jak na straně disku, tak na straně hostitelského řadiče a jeho ovladače.
Historie a srovnání s PATA TCQ a SCSI
Před NCQ existovala varianta řazení příkazů u paralelního rozhraní ATA označovaná jako PATA TCQ. Pokusy o integraci TCQ do ATA byly omezené kvůli nutnosti komunikovat přes starší protokoly a výsledkem byla vysoká spotřeba CPU s malým nárůstem výkonu, takže se tato forma na trhu příliš neprosadila.
NCQ se od PATA TCQ liší tím, že za změnu pořadí příkazů odpovídá samotná jednotka (disk), nikoli operační systém. Disk má detailní znalost svých výkonnostních vlastností a může zohlednit rotační pozici talířů, což často vede k lepším výsledkům. Standardní hloubka fronty NCQ pro SATA je až 32 příkazů (v praxi se běžně používá 31), zatímco rozhraní SCSI (tagged command queuing) dlouhodobě podporuje podstatně větší možnosti front a pokročilejší plánování (SCSI implementace se liší podle zařízení a řadiče).
Implementace a zapnutí NCQ
Aby NCQ fungovalo, musí být podpora povolena na obou stranách:
- v samotném disku (firmware disku musí NCQ podporovat),
- a v adaptéru hostitelské sběrnice / řadiči (ovladač musí umět AHCI/NCQ nebo specifický vendor ovladač).
Mnoho moderních čipových sad podporuje rozhraní AHCI (Advanced Host Controller Interface), které poskytuje standardizovaný přístup k funkcím SATA včetně NCQ. V praxi to znamená:
- v BIOS/UEFI nastavit režim SATA na AHCI (pokud je k dispozici),
- nainstalovat odpovídající ovladač v operačním systému — novější operační systémy (moderní jádra Linuxu a novější verze Windows) obsahují generické ovladače AHCI, které obvykle NCQ automaticky povolí.
Historicky Windows XP často vyžadoval instalační ovladač konkrétního výrobce pro AHCI, zatímco Windows Vista a novější obsahují generický ovladač AHCI. Dnes mají i aktuální Windows 10/11 a většina distribucí Linuxu natívní podporu AHCI/NCQ.
NCQ a SSD
U mechanických disků NCQ přináší komfortní benefit díky omezení pohybu hlaviček. U SATA SSD (bez pohyblivých částí) NCQ také má smysl — SSD mohou paralelně zpracovávat více požadavků a NCQ pomáhá zlepšit propustnost a latenci při konkurenčních I/O operacích. Nicméně moderní NVMe zařízení používají jiný, výrazně výkonnější model front (více front a vyšší počet příkazů v každé frontě), proto pro NVMe se NCQ jako takové nepoužívá — NVMe má vlastní pokročilé příkazy a architekturu front.
Jak zkontrolovat a diagnostikovat NCQ
- Na Linuxu lze zjistit podporu a stav NCQ pomocí nástrojů jako hdparm nebo smartctl (např.
hdparm -I /dev/sdXa hledat "Queue depth" nebo "NCQ"). - Ve Windows lze stav ověřit v Device Manager u řadiče SATA/AHCI nebo pomocí utilit výrobce disku/řadiče.
Doporučení
- Pro servery a počítače s více současnými I/O to obvykle stojí za povolení NCQ (přes AHCI), protože přináší největší přínos při paralelních požadavcích.
- U starších systémů nebo v situacích s dominantním sekvenčním přístupem je vhodné otestovat výkon s NCQ zapnutým i vypnutým — v některých okrajových případech může být rozdíl zanedbatelný nebo negativní.
- Pro novější stroje doporučujeme používat AHCI/NCQ a u NVMe disků spoléhat na nativní NVMe fronty, které jsou optimalizované pro moderní SSD.
NCQ zůstává užitečnou technologií pro zlepšení efektivity I/O u SATA zařízení, zejména v prostředích s vysokou mírou současných požadavků. Správná kombinace podpory v disku, řadiči a ovladači zajistí, že NCQ přinese očekávané zlepšení výkonu.