Nativní řazení příkazů (NCQ): jak zvyšuje výkon disků SATA
Objevte, jak NCQ (Native Command Queuing) optimalizuje pořadí příkazů a zvyšuje výkon disků SATA — výhody, omezení a nastavení přes AHCI pro rychlejší servery i PC.

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.
Související stránky
- Tagged Řízení front příkazů
Otázky a odpovědi
Otázka: Co je to Native Command Queuing?
Odpověď: Native Command Queuing (NCQ) je technologie navržená pro zvýšení výkonu pevných disků SATA v počítačích tím, že umožňuje jednotlivým pevným diskům optimalizovat pořadí, v jakém provádějí požadavky na čtení a zápis.
Otázka: Jak NCQ zvyšuje výkon?
Odpověď: Funkce NCQ dokáže snížit množství zbytečných pohybů hlaviček disku, což vede k vyššímu výkonu a mírně nižšímu opotřebení disku při zátěži, kdy je současně vyřizováno více požadavků na čtení/zápis, například u aplikací serverového typu.
Otázka: Zpomaluje funkce NCQ přístup k pevnému disku v určitých aplikacích?
Odpověď: Ano, NCQ může skutečně zpomalit přístup k HD v určitých aplikacích, jako jsou hry a sekvenční čtení a zápis, kvůli přidané latenci způsobené logikou NCQ.
Otázka: Jak se liší Native Command Queuing od PATA TCQ?
Odpověď: Na rozdíl od PATA TCQ je změna pořadí příkazů v NCQ prováděna jednotkou, nikoli operačním systémem, a každý příkaz má stejnou důležitost. Jednotka má více znalostí o svých výkonnostních charakteristikách, takže může při optimalizaci příkazů zohlednit polohu při otáčení. Kromě toho má NCQ maximální délku fronty 32 ve srovnání s maximální délkou fronty PATA TCQ 32 (v praxi 31).
Otázka: Jaké hardwarové požadavky musí být splněny, aby byla funkce NCQ povolena?
Odpověď: Aby byla funkce NCQ povolena, musí být podporována a povolena jak na adaptéru hostitelské sběrnice SATA, tak na samotném pevném disku. Kromě toho musí být do operačního systému nahrán příslušný ovladač zařízení, aby bylo NCQ povoleno na adaptéru hostitelské sběrnice.
Otázka: Je pro systém Windows XP k dispozici obecná podpora AHCI?
Odpověď: Ne, systém Windows XP vyžaduje instalaci ovladače specifického pro výrobce, i když je AHCI na adaptéru hostitelské sběrnice přítomno. Systém Windows Vista však obsahuje generický ovladač AHCI, který umožňuje generickou podporu zařízení AHCI.
Související články
Autor
AlegsaOnline.com Nativní řazení příkazů (NCQ): jak zvyšuje výkon disků SATA Leandro Alegsa
URL: https://cs.alegsaonline.com/art/68740
Zdroje
- techreport.com : Test of Seagate Barracuda 7200.7 NCQ and other drives
- seagate.com : PDF white paper on NCQ from Intel and Seagate
- t13.org : Volume 1 of the final draft of the ATA-7 standard
- linux-ata.org : Linux ATA FAQ about NCQ
- linux-ata.org : Linux support status of various Serial ATA host bus adapters