Kertasin vielä nopeasti nuo kaikki SSD:n liittyvät parametrit. (Taas kerran, kuinka nopeaa se koneen uudelleen asentaminen onkaan, kun tekee kaikki säädöt.
)
1. I/O elevatoriksi NOOP, vähentää levy I/O:n latenssia. Voi toimia myös hyvin järjestelmien kanssa joissa on NCQ / TCQ tai muu vastaava alemmantason I/O järjestelijä. Monet sanoi että NCQ lisää latenssia, mutta unohtuvat siinä samalla, että käyttöjärjestelmässä voi olla vastaavanlainen toiminnallisuus käytössä.
2. Disk cache writeback tilaan, vähentää levykirjoituksia. (Toimii tietenkin myös muilla kuin SSD levyillä)
3. Barrier=0, poistaa fsyncit käytöstä, data voidaan kirjoittaa levylle täysin "out of order"
4. Nobh, poista käytöstä vielä yhden suojamenetelmän joka takaa tietojen oikean järjestyksen levyllä.
5. Commit=X, sallii levy kirjoituksen viivästäminen X sekuntia.
Nämä eivät ole SSD spesifistisiä parametrejä, vaan yleisä levyjärjestelmän parametrejä. Kuten sanottu, cachen kautta voidaan saada merkittävästi lisää tehoa, mutta se kasvattaa myös katastrofaalisen korruptoitumisen riksiä. mm. tilanne jossa data kirjoitetaan levylle vasta 15 minuuttia sen "tallentamisen" jälkeen. Koska vielä kaikki datan järjestykseen liittyvät suojajärjestelmät on laitettu pois päältä. Voi käydä niin että osa datasta ei vain katoa, vaan se voi olla vielä vanhempaa dataa kuin se, joka ei kadonnut.
Kuten sanoin, mm. hyperdisk cache oli hemmetisti nopeampi kuin smartdrv, johtuen juuri "täydelisestä" write cachesta. Mutta jos kone tilttasi tai sen sammutti väärin, niin sitten oli h*****ti valloillaan.
Ajattele esimerkiksi tietokantaa, jota päivitetään jatkuvasti. Indeksiin tulee jatkuvia kirjoituksia, mutta data alueelle niitä tulee hieman hajanaisemmin. Tämä johtaa siihen, että täydellinen levycache järjestelmä, kirjoittaa levylle vain dataa, koska sitä päivitetään harvemmin. Indeksiin kun tulee niin usein päivityksiä, niin sitähän ei vielä kannata kirjoittaa levylle, koska sehän muuttuu jatkuvasti.
Kun virta katkaistaan, on edessä hauska tilanne. Indeksi voi olla 15 minuuttia vanha ja data on kirjoitettu levylle minuutti sitten. Tuosta on aika haastavaa ottaa selvää.
Toisaalta, kuten sanoin. Tuo tarjoaa toistuvat ja useimmat levy-kirjoitukset keskusmuistin vauhdilla, eikä sillä "sairaan hitaalla SSD" vauhdilla. Data kirjoitetaan levylle vasta, kun se on pakko kirjoittaa sinne, joko timeoutin takia (commit delay), tai siksi että cacheen on tulossa tärkeämpää dataa, joka syrjäyttää vanhan ja se pitää työntää sen takia levyn pinnalle talteen.
mm. transaktionaalisissa tietokannoissa tämä tekee järjestelmästä kymmeniä tai jopa satoja kertoja nopeamman. Mutta kaikki voi lentää silmille ja pahasti.
p.s. hyvä levyohjain, jossa mm. oma akkuvarmennus ja gigatavu välimuistia, voi kuitenkin tarjota tätä aivan vastaavaa palvelua suoraan levy-ohjaimen tasolla. Silloin NOOPin käyttäminen onkin perusteltua. (esimerkki:
http://search.dell.ie/1/2/94804-dell-perc-h700a-raid-controller-1gb-nv-cache-no-cable-included-kit.html )
Yhtä konetta kasattessaa mietittiin, että ostetaanko pirun kalliit SSD:t koko datalle, vai laitetaanko isoja SATA levyjä RAID5:lla ja sitten ohjain, jossa on iso kirjoitusvälimuisti. Päädyttiin tuohon kunnolliseen ohjaimeen ja se on toiminut oikein hyvin tietokantapalvelimessa. Koska tiedettiin, että kirjoitukset osuvat toistuvasti samoille alueille, jolloin cache nimenomaisesti on ehdottomasti parhaimmillaan. Nopeakin levy on paljon hitamapi kuin muistiin perustuva cache. Riippuen taas cache eviction algoritmistä ja datasetin koosta, voi suorituskyky myös totaalisesti romahtaa jos käytetään mm. LRU:ta ja working set ylittää tuon. Siksi onkin olemassa edistyneempiä vaihtoehtoja kuten CAR / ARC cache eviction algoritmit, jotka ovat kuitenkin niin yksinkertaisia, että ne on helppoja toteuttaa hardis tasolla.