flashcache er et Linux-kernemodul , der kører på Device Mapper-stakken og giver dig mulighed for at bruge én blokenhed til at cache adgang til andre blokenheder. Udviklet af Facebook og udgivet i foråret 2010 under betingelserne i GPL-licensen . Det var oprindeligt beregnet til at bruge SSD-drev til at cache-adgang til langsommere (men meget mere rummelige og billigere) diskdrev .
Effektiviteten af at bruge flashcache afhænger af mange faktorer, generelt hjælper teknologien i opgaver, hvis ydeevne er begrænset af I/O, med en overvægt af læseoperationer, og volumen af arbejdsdatasættet er for stort til at blive cache i RAM . Som med enhver cachingteknologi kan ydeevnen med et stort antal "kolde" (ikke-cachede) læsninger være lavere end en cache-enheds; det kan tage lang tid at "varme" cachen [1] .
I modsætning til bcache og dm-cache inkluderet i kernen , skal flashcache bygges som et separat modul. Fork of flashcache - proprietær EnhanceIO , bruger ikke Device Mapper.
Flashcache bruger Device Mapper til at oprette en blokenhed . Når det er oprettet, overføres to andre enheder til det (både ved hjælp af Device Mapper og ikke). En af dem er "langsom og stor", den anden er "lille og hurtig" (normalt SSD eller blok elektronisk disk ). Når caching-tilstanden er aktiveret, kontrolleres hver adgang til flashcache-enheden for tilstedeværelse i cachen, og hvis den er til stede i cachen, returneres den derfra og ikke læses fra en langsom disk. Hvis dataene ikke findes i cachen, læses de fra den langsomme disk og skrives til cachen.
Der er forskellige politikker for skrivning - i tilbageskrivningstilstand skrives data først til en caching-enhed og derefter overføres derfra til en langsom enhed i baggrunden (normalt i betydeligt større blokke og sekventielt, hvilket øger ydelsen af harddiske med langsom tilfældige operationer i størrelsesordener), adgang, men relativt høje sekventielle adgangshastigheder). Derudover bliver "hot data" (hyppigt brugte data) ofte overskrevet, hvilket fører til en situation, hvor dataene overskrives flere gange i cachen, men i virkeligheden kun én gang gemmes på en langsom enhed. En række doven skrivemuligheder er tilgængelige for tilpasning.
I gennemskrivningstilstand skrives dataene først til en langsom enhed og derefter til cachen i forventning om, at de vil blive læst i den nærmeste fremtid). Der er også en mellemliggende omskrivningstilstand , når data skrives til en langsom enhed og først kommer ind i cachen efter den første læsning.
Cachen understøtter FILO - og FIFO - dataekskluderingsalgoritmer, derudover er der mulighed for manuelt at nulstille cachen. Tilbageskrivningscachen er vedvarende (vedvarer mellem genstarter) og kan indlæses. Gennemskrivningstilstande og omskrivningstilstande er ikke-vedholdende, hvilket betyder, at cachen skal genskabes ved hver opstart.