
Native Command Queuing (NCQ) on SATA-liitännässä käytetty ominaisuus, jonka tarkoituksena on parantaa kiintolevyjen ja SATA-kiintolevyjä korvaavien laitteiden suorituskykyä erityisesti rinnakkaisissa I/O-työkuormissa. NCQ sallii aseman itse päättää, missä järjestyksessä vastaanottamansa luku- ja kirjoituskomennot suoritetaan, jolloin asema voi minimoida asemapään tarpeettoman liikkeen ja lyhentää kokonaisaikaviivettä. Tämä parantaa suorituskykyä ja voi vähentää aseman kulumista kuormissa, joissa on useita samanaikaisia pyyntöjä, kuten palvelin- ja monikäyttäjäympäristöissä sekä I/O-intensiivisissä sovelluksissa.
Miten NCQ toimii ja mitä se tekee
NCQ:n perusidea on sallia asemalle usean yhtäaikaisen komentopyynnön pitäminen jonossa (tagged command queuing). Asema saa useita pyyntöjä ja järjestelee ne siten, että fyysinen lukupää ja levyn pyörintä liikkuvat mahdollisimman vähän. Tällä saavutetaan parempi läpäisykyky ja alhaisempi vasteaika monen pienen, hajanaisen I/O-pyynnön tilanteissa verrattuna siihen, että isäntä suorittaisi pyynnöt tiukassa saapumisjärjestyksessä.
Vertailu muihin queuing-tekniikoihin
NCQ on eräänlainen komentojonotusmekanismi, ja sitä verrataan usein aiempaan Parallel ATA-tekniikan Tagged Command Queuingyn (TCQ) ja SCSI:n TCQ:hun. NCQ eroaa PATA TCQ:sta pääasiallisesti siinä, että komentojen uudelleenjärjestelyn suorittaa asema itse eikä isäntäjärjestelmä, ja kaikki komennot ovat samanarvoisia (tagged). Tämä on etu, koska asema tuntee parhaiten omat mekaaniset ominaisuutensa (esimerkiksi pyörintäasennon) ja voi optimoida suorituksen sen mukaisesti.
NCQ tukee enintään 32 komentoa jonossa yhtä aikaa (käytännössä 31 riippuen laiteohjelmistosta ja käytännöstä). SCSI-järjestelmissä komentojen jonopituudet ovat yleensä suurempia ja konfiguroitavissa laitteesta ja ajureista riippuen; SCSI-ympäristöt suunniteltiin alun perin raskaaseen ja erittäin rinnakkaiseen palvelinkäyttöön, joten niissä voi olla suurempi määrä yhtä aikaa käsiteltäviä komentoja.
Hyödyt ja rajoitukset
- Hyödyt: parantaa suorituskykyä satunnaisissa luku- ja kirjoituskuormissa, vähentää asemapään liikettä, voi pidentää mekaanisten levyjen elinikää ja parantaa järjestelmän reagointikykyä monikäyttötilanteissa.
- Rajoitukset: sekvenssiluonteisissa tai yhden pitkän siirron työkuormissa NCQ ei anna etua ja vanhemmissa aseissa tai ohjaimissa NCQ:n hallintakustannukset voivat jopa lisätä latenssia. Ajan myötä laitevalmistajat ovat kuitenkin parantaneet NCQ-toteutuksia, ja modernit levyt hyötyvät useimmiten siitä.
Yhteensopivuus ja vaatimusketju
NCQ:n käyttö edellyttää, että:
- SATA-kiintolevy tai SSD tukee NCQ:ta.
- SATA-isäntäväyläsovittimessa (emolevyn piirisarja/ohjain) on tuki NCQ:lle tai AHCI:lle (Advanced Host Controller Interface), joka mahdollistaa NCQ:n käytön yleisen ajurin kautta.
- Käyttöjärjestelmässä on asianmukainen laiteohjain, joka mahdollistaa NCQ:n hyödyntämisen (esim. AHCI-ajuri).
Monet uudemmat piirisarjat tukevat AHCI-liitäntää, jolloin käyttöjärjestelmän yleinen AHCI-ajuri voi ottaa NCQ:n käyttöön ilman erikoisajureita. Linux-kerneli tukee AHCI:ta natiivisti useissa jakeluissa. Windowsissa tilanne on riippuvainen versiosta: Windows XP vaati usein valmistajakohtaisen AHCI-ajurin, jotta NCQ/AHCI tuli kunnolla käyttöön (muuten saatettiin käyttää vanhaa IDE-emulointia). Windows Vista ja uudemmat versiot sisältävät yleisen AHCI-ajurin, joka helpottaa NCQ:n käyttöönottamista.
NCQ ja SSD:t
Vaikka NCQ suunniteltiin alun perin mekaanisille SATA-levyille, se toimii myös SATA-SSD:iden kanssa. SSD:issä on oma sisäinen rinnakkaisuus (multichannel, useita muistipiirejä), joten useiden päällekkäisten komentojen (queue depth) käyttö voi parantaa suorituskykyä merkittävästi. Nykyiset nopeammat tallennusratkaisut, kuten NVMe, tarjoavat kuitenkin paljon syvemmät ja monipuolisemmat jonot (useita rinnakkaisia q-saavutuksia ja paljon suuremman per-jonon syvyyden), joten NVMe-SSD:issä käytetään NVMe:n omaa komentojonoarkkitehtuuria AHCI/NCQ:n sijaan.
Kuinka ottaa NCQ käyttöön tai tarkistaa sen tila
- Aseta SATA-ohjain BIOS/UEFI-asetuksissa AHCI-tilaan (ei IDE/compatibility-mode), jos haluat NCQ:n käytön yleisimmin. Muuta asetusta varoen: käyttöjärjestelmän käynnistys voi vaatia oikean ajurin ennen muutosta tai muuten järjestelmä ei ehkä käynnisty.
- Windows: varmista, että AHCI-ajuri on asennettu. Uudemmissa Windows-versioissa AHCI otetaan yleensä automaattisesti käyttöön, jos BIOS on asetettu AHCI-tilaan.
- Linux: useimmat jakelut tunnistavat AHCI-hallinnan automaattisesti. Voit tarkistaa laitteen ominaisuudet työkaluilla kuten hdparm ja smartctl tai etsiä kernelin lokiviesteistä AHCI- tai NCQ-merkintöjä.
- Esimerkkejä tarkistustavoista:
- Linux: hdparm -I /dev/sdX | grep -i ncq tai hdparm -I /dev/sdX ja etsi mainintaa NCQ:sta tai "Queue depth".
- Windows: Laitehallinta -> Levyasemat -> aseman ominaisuudet ja ajurin tiedot; lisäksi valmistajan tarjoamat työkalut ja S.M.A.R.T.-ohjelmat voivat ilmoittaa NCQ-tuen.
Vianetsintä ja suorituskykyongelmat
Jos järjestelmässä esiintyy odottamattomia viiveitä tai heikentynyttä suorituskykyä, kannattaa testata tilannetta poistamalla AHCI/NCQ väliaikaisesti käytöstä ja vertaamalla tuloksia. Joissain harvinaisissa tapauksissa vanhat tai vialliset firmwaresovellukset voivat aiheuttaa huonoa käyttäytymistä NCQ:n kanssa. Päivitä kiintolevyn firmware ja piirisarjan ohjaimet tarvittaessa valmistajan ohjeiden mukaisesti.
Yhteenveto
NCQ on hyödyllinen tekniikka, joka parantaa erityisesti rinnakkaisissa ja satunnaisissa I/O-työkuormissa olevan tallennustilan suorituskykyä vähentämällä asemapään liikettä ja latenssia. Se vaatii tukea sekä laitteelta että isäntäohjaimelta (yleensä AHCI). Modernit mekaaniset levyt ja SATA-SSD:t hyötyvät usein NCQ:sta, mutta raskaimmat ja lafina peräkkäiset siirrot eivät siitä juuri hyödy — ja vanhoissa toteutuksissa voi esiintyä myös haittavaikutuksia. Nykyään useimmat järjestelmät hyödyntävät NCQ:ta hyvin, mutta jos kohtaat ongelmia, pidä ajurit ja firmware päivitettyinä ja testaa suorituskykyä ilman NCQ:ta maistaksesi eroa.