Native Command Queuing (NCQ) je tehnologija, zasnovana za povečanje zmogljivosti trdih diskov SATA. Omogoča, da sam pogon preuredi vrstni red prejetih ukazov za branje in pisanje glede na fizično lego podatkov na ploščah in položaj glave, s čimer zmanjša nepotrebne premike glave in posledično skrajša skupni čas izvajanja več ukazov. To prinaša največje koristi pri sočasnih, naključnih zahtevah — tipično pri strežniških ali virtualizacijskih obremenitvah — medtem ko pri zaporednem branju oziroma pisanju ali pri aplikacijah z eno samo zahtevno nitjo (npr. mnoge igre) izboljšave niso opazne ali pa lahko nastopi manjša dodatna zakasnitev zaradi logike NCQ.

Kako NCQ deluje

NCQ uporablja označevanje (tagging) ukazov, kar pogonu omogoča, da ima v interni čakalni vrsti več ukazov (teoretična največja dolžina je 32 ukazov; v praksi največ 31). Poglobljeno poznavanje notranje sheme pogona (rotacijski položaj plošč, pozicija glav) omogoči pogonu, da načrtuje vrstni red izvedbe ukazov tako, da zmanjša skupne premike glave in rotacijska čakanja. Efekt je zmanjšanje latence pri konkurenčnih zahtevah in manjša obraba mehaničnih delov.

Kdaj NCQ najbolj pomaga

  • Strežniški scenariji z veliko sočasnimi naključnimi I/O zahtevami (datotečni strežniki, baze podatkov, virtualne naprave).
  • Okolja, kjer več uporabnikov ali procesov hkrati dostopa do diska.
  • Scenariji z veliko majhnimi naključnimi zapisi in bralnimi zahtevami, kjer zmanjšanje premikov glav prinese opazno povečanje I/O throughputa.

Kdaj NCQ lahko upočasni

  • Zaporedne operacije velikega prepisovanja ali branja: pri teh delih lahko dodana logika NCQ prinese minimalno dodatno zakasnitev.
  • Enonitne aplikacije (npr. večina iger), kjer je število sočasnih I/O zahtev nizko — upravljanje čakalne vrste nima pozitivnega učinka.
  • Starejše ali slabo izvedene implementacije NCQ so v preteklosti v določenih pogojih privedle do poslabšanja zmogljivosti; sodobni pogoni in vmesniki pa so bolj optimizirani.

NCQ vs. PATA TCQ in SCSI TCQ

Pred NCQ je obstajal pristop označenega vrstnega reda ukazov (TCQ) pri ATA. Glavna razlika je v tem, da pri NCQ ponovno vrstni red ukazov spreminja sam pogon (ne operacijski sistem), kar je smiselno, saj pogon najbolje pozna svoje zmogljivosti in fizikalno postavitev. NCQ (in nekateri PATA TCQ) omogočata do 32 označkov v čakalni vrsti (v praksi do 31), medtem ko so SCSI rešitve običajno podpirale bistveno večje globine čakalnih vrst (odvisno od implementacije, pogosto do 256 ali več).

Podpora, vklop in diagnostika

NCQ mora biti podprt tako na strani pogona kot na strani kontrolerja (adapterja gostiteljskega vodila). Večina sodobnih SATA kontrolerjev uporablja vmesnik AHCI (Advanced Host Controller Interface), kar omogoči splošnim gonilnikom operacijskih sistemov upravljanje funkcij, kot je NCQ. Za omogočanje NCQ običajno:

  • V BIOS/UEFI nastavite način SATA na AHCI (ne na stari IDE način ali na določen način RAID, če ne uporabljate ustreznih RAID gonilnikov).
  • V operacijskem sistemu naložite primeren AHCI gonilnik (Linux: jedro običajno že vključuje podporo; Windows: novejše različice vsebujejo generični AHCI gonilnik, starejši Windows XP pa pogosto potrebujejo gonilnik proizvajalca).

Za preverjanje podpore in stanja NCQ:

  • Linux: poglejte vrednost v /sys, npr. cat /sys/block/sdX/device/queue_depth ali hdparm -I /dev/sdX za podrobnosti o podpori.
  • Windows: Device Manager in lastnosti pogona ali orodja proizvajalca diska običajno pokažejo informacije o AHCI/NCQ; nekatere diskovne pripomočke (Smartmontools, proizvajalčeve utilite) lahko prikažejo dodatne podatke.

NCQ in sodobne tehnologije

Pri trdih magnetnih diskih (HDD) NCQ ostaja pomemben za zmanjševanje mehaničnih premikov. Pri pogonih brez gibajočih se delov (SSD) je situacija drugačna: ker ni glave in rotacije, fizična optimizacija ni potrebna, a NCQ vseeno omogoča vzporedno obdelavo ukazov in izkoriščanje notranjih paralelnih kanalov flash pomnilnika. Vendar pa sodobni hitrejši vmesniki, zlasti NVMe, ponujajo bistveno več vrst (queues) in mnogo večjo globino čakalnih vrst kot SATA/AHCI, zato je za SSD-jeposodobne naloge NVMe pogosto bolj primeren.

Praktični nasveti

  • Če uporabljate sodoben SATA pogon in imate možnost, omogočite AHCI v BIOS/UEFI — to običajno omogoči NCQ in druge napredne funkcije.
  • Za strežniške aplikacije ali okolja z veliko sočasnimi I/O obremenitvami bo NCQ verjetno prinesel opazno izboljšanje zmogljivosti.
  • Za odpravljanje morebitnih težav, prednostno posodobite firmware pogona in gonilnike kontrolerja ter izvedite merjenje zmogljivosti s konkretnimi testi (naključno 4K IOPS, sekvenčno branje/pisanje itd.).
  • Pri zamenjavi HDD z SSD upoštevajte, da SSD pogosto najbolje deluje preko NVMe (če je podprto), kjer arhitektura vhodno-izhodnih čakalnih vrst povsem drugače optimizira končne zmogljivosti.

NCQ je še vedno uporabna in smiselna tehnologija za izboljšanje učinkovitosti pri sodobnih SATA pogonih, zlasti tam, kjer so I/O zahtevke sočasno oddajajo številne niti ali procesi. Njena dejanska korist je odvisna od vrste obremenitve, kakovosti implementacije v firmwareu pogona in podpore na ravni kontrolerja ter gonilnikov.