Filsystemcache på SSD?

Har du noe lurt å dele med oss? NB. Dette er ikke et support forum.

Filsystemcache på SSD?

Innleggav oyoy » søn 03.10.2010 20:00

Hei!

Jeg ønsker å øke diskytelse på hjemme-maskiner.
Jeg jobber med datalagring, så jeg vet en del om hvilke muligheter som finnes, og litt om hvor vi beveger oss, men hvilke muligheter har man på en typisk hjemme-maskin med Linux?

Det er i korte trekk tre måter å øke diskytelse på med SSD:
1) Sette opp dedikerte volumer med SSD. Ulempen er at man må flytte data med høye krav til ytelse til disse volumene.
2) SSD/flash som en system-/kontrollerressurs. Dette er mer fleksibelt ved at diskblokker som brukes mye automatisk flyttes til raskere media.
3) Hirarkisk/staging filsystem. Her er det mekanismer som flytter data (hele filer) mellom flere nivåer med datalager basert på forskjellige kriterier. Dette er ikke like dynamisk som 2), men har andre fordeler, spesiellt med tanke på backup/restore og DR (disaster recovery)

For meg og hjemmemaskinen min er det vel 1) og 2) som er aktuellt. Den "vanlige" måten med system på SSD og data på HDD (tilsvarende 1)) er jo den enkle måten å løse dette på, men jeg har mest lyst på en løsning med dynamisk caching som i 2)

Hvilke muligheter har jeg her?
Det mest elegante hadde kanskje vært ZFS med hetrogene Zpools (cache-devicer), men ZFS er jo ikke helt uproblematisk på Linux. Har noen praktisk erfaring med ZFSfuse på Linux? Spesiellt med tanke på å ha root på ZFS?
Jeg har også sett på andre muligheter. Jeg håper at BTRFS kommer med tilsvarende støtte som ZFS, men jeg har ikke funnet referanser til at det kommer med det første. Jeg har også funnet bcache, som kan cache block-devices og virker ganske lovende, men denne er heller ikke tatt inn i kjernen enda. En siste mulighet kan være CacheFS, men den kan så langt bare cache nettverksfilsystemer, og det virker litt ulogisk å kjøre kun med NFS på arbeidsstasjonen min. (selv om det også er litt fristende med tanke på støy)

Så, hvilke muligheter har jeg? Det jeg ønsker er å ha lagring på "snurredisker" med rikelig kapasitet, og bruke SSD for å dynamisk cache data for å øke leseytelse.

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav ak » man 04.10.2010 8:42

Jeg tror bcache er det du er ute etter, selv om det ikke er del av den offisielle kjernen enda. Uansett vil det du bygger være eksperimentelt. Når man snakker om btrfs sin støtte for SSDer så er det (meg bekjent) noe annet og myntet på at filsystemet i sin helhet ligger på disker med lav aksesstid.

Jeg jobber en del med caching, min oppfatning er at du skal ha et litt spesielt bruksmønster for å dra nytte av denne løsningen. Med en billig SSD (MLC) kan man ganske fort oppnå forventet levetid hvis man leser/skriver konstant, så man bør også ta regnestykket om det ikke er like greit å bare investere pengene i mere RAM. Det er også langt raskere enn en enkelt SSD, og du avlaster SATA kontrolleren.

Administrator
Brukerens avatar
medlem i 242 måneder
 

Re: Filsystemcache på SSD?

Innleggav oyoy » man 04.10.2010 22:01

Takk for innspill, AK!

Jeg tror også bcache er den beste muligheten så langt. Den lar deg også angi "erase blokk"-størrelse for SSD, og skriver (så langt jeg har skjønt) kun hele blokker. I kombinasjon med at den kun cacher les, burde det føre til lengere levetid på SSD? (mer et håp enn et spørsmål.. ;)) Jeg kan vel også overvåke antall skrivesykler med `smartctl` el.l.? (har ikke fått SSdisken min enda)

Det stemmer at BTRFS så langt bare har støtte for hele volum på SSD. Jeg håper derimot at den snart vil komme med støtte for "caching devices" på samme måte som ZFS har i dag.

Jeg har erfaring med datalagring til bedrifsmarkedet, og en av løsningene våre (NetApp) har mulighet for (lese-)cache på PCIe på kontroller. Vi ser at mange bruksmønstre kan ha stor nytte av dette, spesielt ved at metadata ligger i cache, slik at en les fra klienter ikke resulterer i *mange* les mot disk for å lese metadata før man kan lese de data klienten etterspør. I mitt miljø (hjemme-desktop) håper jeg at noen ti-talls GB også vil kunne cache en stor del av de data som trengs til daglig (f.eks. boot). Jeg har allerede fyllt opp alle minneslot på maskinen, så jeg må kjøpe større og dyrere minnebrikker for å utvide videre. (jeg kjøper ganske mye SSD for det jeg må gi for 3x4GiB-moduler...)

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav ak » man 04.10.2010 23:50

Men hva slags data er det du jobber med, og hvilke SSDer bruker du?

Hvis jeg skal male med veldig bred pensel så er min erfaring fra det siste året at SSDer er bra for at ting skal komme opp raskt etter en reboot, da spesielt på laptoper. Men så snart en server har blitt varm så er det sjelden at jeg skal ha tak i masse små filer, eller at databaseindeksene ikke allerede ligger i minne. Hvis databasen må gjøre en tablescan så er det selvfølgelig en del I/O, men det er da sekvensielt og SSDene er ikke spesielt mye bedre på det.

Administrator
Brukerens avatar
medlem i 242 måneder
 

Re: Filsystemcache på SSD?

Innleggav oyoy » ons 06.10.2010 17:33

ehe....
Nå er det vel mer snakk om en nysjerrighet som må kløes, enn et problem som må løses...
Dette er en ren desktop/hjemmemaskin, og jeg bedriver ingen vidløftige aktiviteter som egentlig *trenger* rå ytelse. Jeg har bare lyst til å se hva jeg kan få til... :)

Jeg har nå fått inn en Intel X25-M, og satt opp bcache. De første testene er egentlig litt skuffende. Statistikken fra bcache tilsier (så langt jeg kan tolke) at det funker som ei kule (cache_hit_ratio = 97%) men jeg merker ikke mye forskjell...

Det jeg prøver å oppnå er vel egentlig å lage en litt stor utgave av en Seagate Momentus XT (de snurrediskene som kommer med 4GB flash på disken).

Ellers syns jeg du maler et fint bilde :)
Jeg er helt enig i det du sier, i den grad vi snakker om en DB, som helt klart kan gjøre bedre antagelser for hvilke data som bør caches enn det mekanismer på filsystem- eller (for bcache) blokk-nivå kan. For en typisk desktop håper jeg fortsatt det kan utgjøre en forskjell. Eller så har jeg bare slukt reklamen for MomentusXT... ;)

-en annen ting som kan bite argumentasjonen din: Ligger virkelig DB-filene dine sekvensiellt *på*disk*? Hvis du har oppdatert records, og ikke bare importert data, så gjør de vel ikke det? Det forutsettes likevel at du har nok rask disk til å holde hele datasettet før du ser de store forskjellene...

-Nyttig å diskutere dette med noen som har en litt annen innfallsvinkel enn meg! :)

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav ak » ons 06.10.2010 18:01

Alt jeg har lest om hybriddisker stemmer godt med hva du opplever, tror jeg. Det er ikke fryktelig stor forskjell på hybrid og vanlig disk, selv når hybriden har 4Gb flash
e.g. http://www.anandtech.com/show/3734/seag ... brid-hdd/1

Denne siden kjører faktisk på en burk med RAID5 av 4 stk X25-M ;) Men jeg tror i neste omgang så får Fusio-io eller lignende en ny sjanse, det var ikke rare forskjellen mellom SSDene og 15k SAS diskene jeg ellers har brukt, så jeg mistenker at kontrolleren også er en flaskehals.

De største datasettene mine er som regel read-only og kompakte, men hvis det er snakk om tablescan så skal du jo uansett lese alle records, så de fleste motorene leser dem da i den rekkefølgen de ligger på disk.

Hvis jeg var deg ville jeg bare samlet det viktigste på SSDen og ferdig med det, alternativt boote fra en nettverksserver med mye RAM. Latency på gigabit ethernet er ganske bra hvis man har korte kabler.

Administrator
Brukerens avatar
medlem i 242 måneder
 

Re: Filsystemcache på SSD?

Innleggav nc » ons 06.10.2010 21:12

ZFS, raidz direkte mot diskene (ikke hw-raid), og read og write cache på hver sin ssd.. :-P

Erfaren
Brukerens avatar
medlem i 237 måneder
 

Re: Filsystemcache på SSD?

Innleggav oyoy » tor 07.10.2010 20:24

AK: Jeg syns den testen så ganske bra ut for MomentusXT, jeg?
Jeg satte inn en sånn i jobbe-laptopen, men jeg gikk fra XP til en ren installasjon av Win7 samtidig, så jeg har ingen direkte sammenligning. Syns det går bra unna etterpå, ihvertfall :)
-MomentusXT har 4GB (ikke Gb, regner med det var en trykkfeil) cache. Jeg prøver å få til en "hybrid" med 80GB cache her, og siden jeg har mindre data enn det på root-fs burde det virke ganske bra...:P Jeg har ikke gjort noe mer vitenskapelige tester enn å se hvor lang tid det tar før X-server fyrer så langt..

Jeg bruker mye (i den grad jeg tester dette "mye") `dd`, både fra hver enkel disk, og fra RAID'et (/dev/mdX) og til /dev/null. Det burde vise om din ytelse skalerer med flere disker (hvis du lurer på om kontroller er flaskehals) Dette bør gi sammenlignbare resultater med `hdparm -t` (hdparm -tT er også kul, -T viser (ca) hvilken hastighet du får fra minnet) Jeg får ~10600MB/s fra minne og ~265MB/s fra min X25-M -ca 60 og 120MB/s fra to HDDer av litt forskjellig alder.. Dette er på en core-i7 med 6x2GB minne i triple-channel oppsett..

Jeg lurer litt på hva du mener med "korte nettverkskabler", AK? Snakker vi om lysfarten her? :P

NC: YESS! ZFS (ev. BTRFS, om/når det kommer) er det jeg virkelig har lyst på! Jeg mener dette bør være integrert i filsystem. Siden jeg er på Linux, har du erfaringer med ZFS-fuse, eller har du andre løsninger?

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav ak » tor 07.10.2010 21:24

Kommer jo an på øyet som ser, fra side 2 og utover synes jeg at den jevnt over får juling av SSDen, og da snakker vi om -V , ikke -M.

dd er jo helt sekvensielt, jeg husker ikke hva vi fikk der , men det er uansett mange hundre megabyte per sekund (enten det er SSD eller 15k SAS). Når jeg sammenlignet så kjørte jeg iozone + opptak av alle SQL spørringer som våres nettsider genererer i løpet av en vanlig time.

Prøv bcache, jeg er ihvertfall interessert i å høre hvordan det føles. ZFS og OpenSolaris kan man vanskelig anbefale, jeg har ikke oversikt over hvor langt FreeBSD har kommet.

"korte kabler" var litt metaforisk, jeg mener bare at det bør være kortest mulig vei. Eksempelvis en gigabit router i mellom, ikke flere.

Administrator
Brukerens avatar
medlem i 242 måneder
 

Re: Filsystemcache på SSD?

Innleggav oyoy » tor 07.10.2010 22:08

Ahh, men da er vi enige, AK!
Jeg tenker på MomentusXT som "like stor som en vanlig snurredisk, men kjappere", og ikke "like bra som SSD" :)
Slik jeg leste den testen så er XT jevnt over (tildels mye) bedre enn tilsvarende uten flash, og i noen tester kan den måle seg med VelociRaptor også.

`dd` er sekvensielt, og egentlig helt uvesentlig, med det er lett å måle på, og du kan til en viss grad luke ut kontroller- eller andre flaskehalser. Skalerer den med antall spindler? (eller hva det heter for SSD... ;))

Jeg kjører primært Debian, og jeg prøvde så vidt å sette opp Debian GNU/kFreeBSD-porten. "It is still an immature port..." virket ganske beskrivende ved første test, så jeg lot det bli med det.. Den skal ha støtte for ZFS, så det er mulig jeg følger det sporet lengere senere.

Fusion-IO virket veldig spennende! Jeg har stor tro på slike løsninger, men det er vel prismessig litt over det jeg hadde tenkt å svi av på HW hjemme... :(

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav oyoy » fre 05.11.2010 2:29

Liten oppdatering her...
Virker som jeg er litt tidlig ute. Det eneste "hybrid" filsystemet jeg har funnet er fortsatt ZFS. -og det har visse utfordringer under Linux, ihvertfall som rootfs...
Bcache, som jeg hadde litt troen på, virker ikke helt stabilt. Bl.a. tryner det (kernel OOPS) så fort jeg monterer et BTRFS-filsystem... =-O
BTRFS (som fortsatt er det jeg har best magefølelse på på litt sikt) har fått noen patcher som legger grunnlaget for å "vekte" "varme" blokker. Målet er å gjøre det mulig å cache de mest brukte data på raskere (les SSD) lager, men vi ser ikke ut til å komme dit veldig fort..

Derimot har jeg lekt litt med SolidStateDisker så lenge :-P
Jeg har fått tak i en Intel X25-M, og en OCZ RevoDrive.

Det kule med Revodrive er at den er implementert som to SSD'er med integrert RAID-kontroller (standard konfig er RAID0) på et PCIe-kort. Man unngår dermed SATA-grensesnitt som "flaskehals" (SATA-II/3Gbps er teoretisk ca 300MiB/s)
-OCZ reklamerer for 75000 IOPS og 4-500MB/s
Det u-kule med RevoDrive er at det er bare bambus (tull, svada)... (ihvertfall for Linux)
Den såkalte RAID-kontrolleren er en "soft-kontroller". Den skal være bootbar, men det er bare Windowsdrivere som gjør at den dukker opp som et RAID.. Under Linux dukker den opp som to separate disker!

jeje, softwareRAID/MultiDisk funker bra under Linux!

Her er noen (ganske banale, men likevel) ytelsestester:
Jeg har en RevoDrive "RAID"-kontroller, en Intel X25M, og to "tradisjonelle" snurredisker av litt forskjellig alder i maskinen. Revodrive dukker opp som sda og sdb, Intel-disken er sdd, og snurrediskene er sdc og sde.

`hdparm -t /dev/sd?`
/dev/sda: (RevoDrive1)
Timing buffered disk reads: 592 MB in 3.00 seconds = 197.01 MB/sec
/dev/sdb: (RevoDrive2)
Timing buffered disk reads: 594 MB in 3.01 seconds = 197.42 MB/sec
/dev/sdc: (halvgammel 250GB "snurredisk")
Timing buffered disk reads: 180 MB in 3.03 seconds = 59.50 MB/sec
/dev/sdd: (Intel X25M 80GB)
Timing buffered disk reads: 796 MB in 3.00 seconds = 264.94 MB/sec
/dev/sde: (litt nyere snurredisk, 1,5TB)
Timing buffered disk reads: 372 MB in 3.00 seconds = 124.00 MB/sec

Litt mer interessant er vel resultatet for /dev/md2, som er et RAID0 over RevoDisk'ene:
/dev/md2:
Timing buffered disk reads: 1344 MB in 3.00 seconds = 447.58 MB/sec
-ikke spør meg hvorfor RAID0-stripa er mer enn dobbelt så kjapp som de to diskene hver for seg (nevnte jeg "banal"? ;) )..

Det aller mest relevante her er selvfølgelig hvordan dette påvirker maskinen min!
...og det har jeg ingen målinger på... Men det VIRKER sykt mye kjappere enn før! (Jeg har nå rootfs på et RAID0 over RevoDrive-diskene. tildigere hadde jeg rootfs på et speil over de to snurre-diskene) :bitchin:

Jeg kunne godt skrevet litt mer om hvordan jeg har satt opp sw-raid og filsystem (for det er pokker ikke bare-bare om man skal ta hensyn til blokk-størrelser på SDD), men den "lille" oppdateringen min er lang nok for lenge siden..
-spør om dere lurer på noe! :)

-ØYØY-

Brukerens avatar
medlem i 212 måneder
 

Re: Filsystemcache på SSD?

Innleggav ak » fre 05.11.2010 9:19

Kult, mange takk for nyttig informasjon, da venter ihvertfall jeg litt med å teste bcache.

Jeg har begynt å sikle etter ioDrive Duo... kommer ikke til å skje, men det er godt man har noe å strekke seg etter ;)

Administrator
Brukerens avatar
medlem i 242 måneder
 


Returner til Tips og triks / Favoritter



Hvem er i Forumene

Registrerte brukere: Google [Bot]