
Mi az NCQ és hogyan működik?
A Native Command Queuing (NCQ) egy olyan vezérlési technika, amely a számítógépek SATA merevlemezeinek (HDD) és SATA-alapú SSD-meghajtóinak teljesítményét javítja azáltal, hogy a meghajtó belső firmware-e optimalizálja a beérkező olvasási és írási parancsok végrehajtási sorrendjét. A cél az, hogy csökkentsék a lemeztárcsa/fej mozgatásának és forgási késedelemének hatását, így rövidebb átlagos késleltetés és jobb párhuzamos teljesítmény érhető el.
NCQ különösen előnyös olyan munkaterheléseknél, ahol egy időben több, egymástól független I/O‑kérés van (például szervereknél, adatbázis‑műveleteknél, virtualizációs környezetekben). Ilyen esetekben a meghajtó képes a parancsokat úgy sorbarendezni, hogy minimális legyen a fejmozgatás, ami növeli az IOPS‑értéket és csökkenti a várakozást.
Fontos azonban megjegyezni, hogy sorozatos (szekvenciális) olvasásoknál vagy teljesen egyszálú munkaterheléseknél az NCQ nem mindig ad észrevehető előnyt, sőt nagyon régi firmware-ek esetén előfordulhatott minimális késleltésnövekedés. Ez a jelenség azonban nagyrészt történelmi: a gyártók firmware‑ és driverfejlesztései óta ezek a problémák nagyrészt megszűntek.
Rövid történet és összehasonlítás más megoldásokkal
A natív parancssorba állítást megelőzte a Parallel ATA TCQ (Tagged Command Queuing) változata. Az ATA TCQ elterjedését korlátozta, hogy a korai ATA host buszadapterek és a hozzájuk kapcsolódó eszközprotokollok jelentős CPU‑terhelést igényeltek az operációs rendszer felől, miközben a teljesítménynövekedés gyakran szerény volt. Emiatt a PATA TCQ nem vált széles körben elfogadottá.
Az NCQ fő különbsége a PATA TCQ‑hoz képest, hogy a parancsok újrarendezését a meghajtó végzi (nem az operációs rendszer), és minden parancs azonos „címkét” kaphat a soron belül. A meghajtó firmware‑e így jobban ismeri a fizikai jellemzőket (például a forgási helyzetet), és intelligensebben tud dönteni az optimális végrehajtási sorrendről.
Tipikus sorhosszak (maximum egyidejű parancs): SATA NCQ általában 32 parancs (gyakorlati limit: 31), míg a SCSI TCQ rendszerek gyakran nagyobb, tipikusan akár 256 parancsot is kezelnek.
Beállítás, hardver- és szoftvertámogatás
Az NCQ használatához követelmény, hogy:
- a SATA host buszadapter (vezérlő) támogassa az NCQ-t,
- a meghajtó maga is támogassa az NCQ-t,
- az operációs rendszerben megfelelő eszközillesztő (driver) legyen betöltve az NCQ engedélyezéséhez.
Sok modern chipkészlet támogatja az AHCI (Advanced Host Controller Interface) szabványt, amely lehetővé teszi az operációs rendszer általános, gyártótól független illesztőprogramjainak használatát és az NCQ funkciók kihasználását. A legtöbb újabb Linux rendszermag (különösen az utóbbi évek verziói) natív módon támogatja az AHCI‑t és az NCQ‑t.
A Microsoft Windows-sorozatban történelmi megjegyzésként: a Windows XP esetén gyakran szükséges volt gyártóspecifikus AHCI‑illesztő telepítése az NCQ használatához, míg a Windows Vista és az azt követő verziók már tartalmaznak általános AHCI‑illesztőket. A modern Windows-verziók (Windows 7/8/10/11) alapértelmezésben jól együttműködnek az AHCI‑vezérlőkkel, feltéve, hogy az alaplap BIOS/UEFI‑jében az SSD/HDD üzemmód AHCI‑re van állítva (nem IDE/Legacy). Üzem közben a BIOS‑módból történő váltás Windows telepítés után rendszerint további lépéseket igényel (illesztőprogram telepítése vagy regisztrációs beállítások módosítása), különben a rendszer nem bootol.
Modern kontextus: SSD-k és NVMe
SATA‑alapú SSD‑k is támogatják az NCQ‑t, és a parancssorozás hasznos lehet a párhuzamos I/O‑terhelések kezelésében. Ugyanakkor az NVMe (Non‑Volatile Memory Express) egy újabb, közvetlenül PCIe‑re épülő szabvány, amely sokkal több párhuzamos sorral és mélyebb parancssorral dolgozik, így az NVMe máshogy (és hatékonyabban) kezeli a többmagos és párhuzamos terheléseket, mint a SATA/NCQ megoldások.
Gyakorlati tippek és ellenőrzés
- Ha szeretné ellenőrizni, hogy egy meghajtó támogatja‑e az NCQ‑t, használhatja a gyártó által adott eszközinformációs programokat, illetve Linux alatt például az hdparm -I /dev/sdX paranccsal is lekérdezhető a támogatás (és a driverek naprakészsége is fontos).
- Győződjön meg arról, hogy a BIOS/UEFI‑ben az SATA mód AHCI‑re van állítva, ha NCQ‑t és egyéb modern SATA szolgáltatásokat szeretne használni.
- Ha teljesítményoptimalizálás a cél, mérje a rendszere teljesítményét a konkrét munkaterhelés alatt (véletlenszerű I/O, több felhasználós terhelés, adatbázis‑lekérdezések stb.), mert az NCQ előnyei munkaterhelésfüggők.
Összefoglalva: az NCQ egy hasznos, széles körben támogatott technika a SATA‑eszközök párhuzamos I/O‑teljesítményének javítására, különösen véletlenszerű és többkérést tartalmazó munkaterhelésekben. A hardver- és szoftvertámogatás (AHCI, driverek, BIOS/UEFI beállítás) megléte kulcsfontosságú annak érdekében, hogy a funkciót ki lehessen használni.