Juuri tänään aloin tässä samaa kysymystä pohtimaan mistä tämänkin ketjun avauksessa puhuttiin.
Henkilökohtaisesti olen monessa järjestelmässä panostanut välimuistitukseen ja tiedän miten paljon sen avulla saadaan nopeushyötyjä.
Henkkoht. uskoisin hybridi levyn olevan mitä mainioin vaihtoehto. Siinä kun SSD:n tila tulee paljon tehokkaammin käytettyä kuin perinteisillä ratkaisuilla. Toinen ongelma on juuri se, mitä täällä EI mainittu. Hybridin idea onkin juuri siinä, että sinä ET päätä mitä on SSD:llä ja mitä muulla levyllä, vaan järjestelmä hoitaa tuon aivan automaattisesti.
Mikäli teillä on kokemuksia suuremmista tietojärjestelmistä, on kaikki manuaalinen hallinta bittinikkarinysväreiden mielestä upeaa ja mahtavaa, mutta käytännössä se onrasittavaa, usein todellisuudessa epätehokasta ja aikaa vievää. Ongelma on siinä, että kenelläkään muulla kuin nysväreillä ei ole aikaa panostaa siihen lopulliseen hiomiseen ja hienosäätöön. Sen takia automaattiset järjestelmät hoitavatkin tämän asian yleensä tehokkaammin, vaikka aina hakemalla tietysti voidaan poikkeuksia löytää.
Oliko kenelläkään noista hybrideistä käytännön kokemusta? Olisi todella kiva kuulla.
Kuten Seagaten omissa mainoksissa mainittiin, niin uskon että tuollaisella 8 gigatavun SSD välimusitituksella päästään todella helposti ~80-90% cache hit-ratioon, joka tarkoittaa sitä että suurin osa levypyynnöistä voidaan täyttää suoraan SSD välimuistista. Lisäksi jos NCQ / TCQ toimii kaikilla tasoilla kuten pitää, niin nekään pyynnöt jotka menevät oli cachesta, eivät hidasta cachesta tulevien vastausten virtaa.
Mitä todennäköisimmin käyttöjärjestelmän tiedostoista 90% on myös selaisia joiden ei tarvitsisi olla SSD:llä. Aivan varmasti 4 gigaan mahtuu ubuntusta kaikki tarpeelinen, ilman että tekee edes tiukkaa. Kun puhutaan siis siitä data massasta, jota käytetään joka päivä. Ne tiedot joita ei käytetä päivittäin, ei ainakaan tarvitse olla SSD:llä.
Tiivistetään vielä pointti, käyttäjän on todella vaikeaa tietää mitä dataa kannattaisi pistää SSD:lle ja mitä perinteiselle levylle, tuo hybridi asema hoitaa tuon asian täysin automaattisesti.
BI järjestelmiä käytettäessä usein törmätään siihen, että käyttäjien kuvittelemat mutu-asiat eivät ole lähelläkään sitä, mitä todellisuus on. Mutta tietysti ilman tarkkaa faktaa, sen osoittaminen on vaikeaa. Tuossa järjestelmä hoitaa automaattisesti optimoinnin.
Btw. Kannattaa lukea Wikipediasta muutama artikkeli cachesta ja sen optimoinnista, siinä on yksi ihan mielenkiintoinen tieteenalue. Yksinkertaista, mutta ah, niin monimutkaista. Kunhan mennään LRU:ta pidemmälle.
ARC / CAR voisi toimia ihan hyvin tuollaisessa laitteessa. Siinä tulisi toteutettua myös scan resistance. Monet web-selaimet käyttävät LRU:ta, vaikka se on erityisesti ongelmallinen valinta jos cache tila on ahdas, kuten käytännössä aina on. Toteutin tuon CAR cachen 9ox.net verkkopalveluun ihan omaksi ilokseni Pythonilla.
Tätä levyä vähän katslein:
http://www.verkkokauppa.com/fi/product/33200/dgbbs/Seagate-Momentus-XT-750-GB-SATA3-8-GB-SSD-2-5Yhdessä SAN järjestelmässä tehtiin niin, että laitettiin käyttöön sekä SSD levyjä, että perinteisiä kiintolevyjä. Mutta datan allokointi eri levyjen välille, jätettiin nimenomaisesti automatiikan tehtäväksi tehokkuuden vuoksi. Käyttäjät usein allokoivat datan aivan väärin, jos se jätetään niiden tehtäväksi. Tästäkin voisi tietysti tehdä mielenkiintoisen kokeen. Listataan kaikki tiedostojärjestelmässä olevat tiedostot ja pyydetään käyttäjää merkitsemään mitä tiedostoja käytettiin kuinkakin monta kertaa päivän / kuukauden aikana ja kuinka paljon dataa niistä luettiin tai niihin kirjoitettiin. Arvioiden tekemisen jälkeen käyttäjät voivat käyttää työasemiaan normaalisti esimerkiksi kuukauden ajan ja sitten otetaan tilastot esiin ja verrataan niitä käyttäjien tekemään arvioon. Uskon että aikalailla varmasti menee metsään niin että kohisee. Nimimerkillä, niin se menee muissakin asioissa, ellei henkilö ole todella perehtynyt aiheeseen.
Edit: Linkki testeihin:
http://www.storagereview.com/seagate_momentus_xt_750gb_reviewKannattaa myös tutustua Intelin Z68 piirisarjaan ja sen tuomaan mahdolliuuteen käyttää erillistä SSD:tä cachena perinteiselle levylle. Jolloin voi ottaa vaikka 128 gigasen ssd:n ja vaikka raid 0:na kaksi 3 teraan levyä jos tahtoo enemmän kapasiteettia, siten että nopeus on kuitenkin hyvä toistuvasti luettavan datan osalta. Tuota sitten voi skaalata sujuvasti ylöspäin tarpeen niin vaatiessa.
ZFS osaa muuten muistaakseni tuon myös softa-tasolla. Eli levyjärjestelmään voidaan laittaa usean eri suorituskyvyn tallennusvälineitä ja järjestelmä itsenäisesti allokoi datan noille. Taatusti tehokkaampaa kuin "käyttäjien tekemät (virheelliset) valinnat".
High performance computing forumissa olivat vakaasti sitä mieltä, että SSD:t ovat todella hitaita keskusmuistiin verrattuna. On parasta jos palvelimessa on niin paljon rammia, että kaikki tarvittava data voidaan ladata sinne. Juuri tämän takia "multi layer" caching onkin oikea ratkaisu, jossa hyödynnetään eritasoisia järjestelmiä tarpeiden mukaan ja haetaan sopivaa balanssia suorituskyvyn ja kustannusten välillä.
Bootissa siis kannattaa kopioida koko levyjärjestelmä rammiin ja käyttää sitä. -> nopeampaa.
Vielä parempi jos kaikki data on prosessorin cachessa tai vielä parempi jos suoraan rekistereissä, jossa sitä voidaan käsitellä ilman turhia odotuksia ja latauksia.
Samoihin virheellisiin käsityksiin kuuluu myös se käsitys, että jos koneessa on swappia käytössä, niin se tarkoittaisi sitä että keskusmuistia on liian vähän. Ei, se ei tarkoita sitä. Swapilla on oma käyttötarkoituksensa nimenomaisesti keskusmuistin käytön optimoinnissa, eli jos varaan esimerkiksi 2 gigaa muistia, enkä käytä sitä. Niin on paljon järkevämpää laittaa nuo 2 gigaa swappiin ja käyttää tuota keskusmuistin määrää levyvälimuistina, kuin varata se 2 gigaa sovellukselle, joka ei tee sillä yhtään mitään. Jopa eräs serveri admini lähti väittelemään tästä, ei näköjään ole kokemusta... mm. tyypillinen tämän sortin ongelman aiheuttaja on muistivuoto, jossa roskaa jää keskusmuistiin jota ei tarvita. Miksi sen siis pitää olla keskusmuistissa? Aivan samaan malliin, olen 100% varma siitä, että puolet sinne SSD:lle käyttäjien laittamista tiedostoista ovat vähintään sellaisia, joita ei käytännössä koskaan tarvita. Tietysti poikkeuksia löytyy, mutta noin nyrkkisääntönä tuo on vielä aikamoinen alakantin arvio.
Asiasta hieman lisää lueskelleena alkoi hymyilyttämään:
Monessa foorumissa jengi on sanonut asentavansa käyttiksen SSD:lle ja kaikki datat perinteiselle levylle? Eikös tuo ole juuri väärin päin? Käyttistä ei tarvita normaalisti yhtään mihinkään, mutta dataa senkin edestä. Tällaisessa tilanteissa mennään helposti pahasti metsään. Toinen asia mikä foorumeilla saa mut hymyilemään on SSD levyjen säästely. Haloo? Jos ostetaan levy suorituskyvyn takia, niin ei kai sitä silloin ruveta säästelemään? Sille pitäisi tarjota kovaa ajoa kellon ympäri. Eikä lähteä siitä liikenteeseen, ettei levylle saa kirjoittaa mitään, kun sehän kuluu käytössä.
Tietokantapalvelimeen ssd järjestelmälyvyksi ja sitten swappi ja tietokannat perinteiselle levylle, voi huhhuh. Atk-roina on muutenkin kulutustavaraa, täysin yhden tekevää jos palaa loppuun 3 vuodessa, sittenhän se on täysin palvellut.
BtrFS ei tarjoa vielä erillisiä cache devicejä levyjärjestelmään, mutta sitäkin on
ehdotettu.
Hyvä linkki jossa viiveistä, jotka kaikkien tulisi tietää:
https://gist.github.com/2841832 koska nopeammat tietovarastot on kalliimpia, kannattaa tietoja fiksulla logiikalla siirtää aina alemmille tasoille.