Kuidas Linuxi failisüsteemi vahemälu töötab
Kernel reserveerib failisüsteemi kettale juurdepääsu vahemällu salvestamiseks teatud koguse süsteemimälu, et üldist jõudlust kiirendada. Linuxi vahemälu nimetatakse Lehe vahemälu. Lehe vahemälu suurus on konfigureeritav, kuna rikkalikud vaikesätted võimaldavad vahemällu salvestada suures koguses kettablokke. Vahemälu maksimaalset suurust ja vahemälust andmete väljaajamise põhimõtteid saab reguleerida kerneli parameetritega. Linuxi vahemälu lähenemist nimetatakse tagasikirjutamise vahemäluks. See tähendab, et kui andmed kirjutatakse kettale, siis kirjutatakse need vahemällu mällu ja märgitakse vahemälus määrdunuks, kuni need kettaga sünkroonitakse. Tuum säilitab sisemisi andmestruktuure, et optimeerida vahemälust eraldatavad andmed, kui vahemälus on vaja rohkem ruumi.
Linuxi süsteemilugemiskutsete ajal kontrollib kernel, kas taotletud andmed on vahemälus olevate andmeplokkidena salvestatud, see oleks edukas vahemälu tabamine ja andmed tagastatakse vahemälust IO-d kettasüsteemi tegemata. Vahemälu puudumisel tõmmatakse andmed IO-süsteemist ja vahemälu värskendatakse vahemälupoliitikate põhjal, kuna neid samu andmeid küsitakse tõenäoliselt uuesti.
Kui teatud mälukasutuse künnised on saavutatud, hakkavad taustülesanded kirjutama räpaseid andmeid kettale, et tagada mälu vahemälu tühjendamine. Need võivad mõjutada mälu ja protsessorimahukate rakenduste jõudlust ning vajavad administraatorite ja / või arendajate häälestamist.
Vaba käsu kasutamine vahemälu kasutamise kuvamiseks
Võime kasutada käsurea tasuta käsku, et analüüsida süsteemimälu ja vahemällu eraldatud mälumahtu. Vaadake allolevat käsku:
# tasuta -m
Mida me näeme tasuta ülaltoodud käsk on, et on 7.Selles süsteemis on 5 GB RAM-i. Sellest kasutatakse ainult 209 MB ja 6.5 MB on tasuta. 667 MB kasutatakse puhvri vahemälus. Proovime nüüd seda arvu suurendada, käivitades käsu 1 gigabaidise faili loomiseks ja lugedes faili. Allpool olev käsk genereerib umbes 100 MB juhuslikke andmeid ja lisab seejärel 10 faili koopiat üheks suur_fail.
# dd kui = / dev / juhuslik = / root / data_failide arv = 1400000# i jaoks 'järjestuses 1 10'; tee kaja $ i; kassi andmefail >> suur_fail; tehtud
Nüüd loeme kindlasti see 1 Gig-fail läbi ja kontrollige seejärel tasuta käsku uuesti:
# kass suur_fail> / dev / null# tasuta -m
Näeme, et puhvri vahemälu kasutamine on tõusnud 667-lt 1735-ni - umbes 1 gigabaidine puhvermälu kasutamine.
Proc Sys VM Drop Cache'i käsk
Linuxi tuum pakub vahemälu tühjendamiseks liidest. Proovime neid käske proovida ja vaadata, kuidas see mõju vabale seadele avaldab.
# kaja 1> / proc / sys / vm / drop_cache# tasuta -m
Eespool näeme, et enamus puhvri vahemälu jaotusest vabastati selle käsuga.
Eksperimentaalne kontroll, kas tilk vahemälud toimivad
Kas saame faili lugemiseks vahemälu kasutamise tulemuslikkuse valideerida?? Loeme faili ja kirjutame selle tagasi / dev / null, et testida, kui palju aega kulub faili kettalt lugemiseks. Ajastame selle aeg käsk. Teeme selle käsu kohe pärast vahemälu tühjendamist ülaltoodud käskudega.
Selleks kulus 8.4 sekundit faili lugemiseks. Loeme seda nüüd uuesti, kui fail peaks olema failisüsteemi vahemälus, ja näeme, kui kaua see nüüd aega võtab.
Boom! See võttis ainult .2 sekundit võrreldes 8-ga.4 sekundit selle lugemiseks, kui faili ei salvestatud vahemällu. Kontrollimiseks korrake seda uuesti, tühjendades kõigepealt vahemälu ja lugedes faili 2 korda.
See toimis ideaalselt ootuspäraselt. 8.5 sekundit vahemällu salvestamata lugemiseks ja .2 sekundit vahemällu salvestatud lugemise jaoks.
Järeldus
Lehe vahemälu on Linuxi süsteemides automaatselt lubatud ja see muudab IO kiiremini, salvestades hiljuti kasutatud andmed vahemällu. Kui soovite vahemälu käsitsi tühjendada, saab seda hõlpsalt teha, saates / proc-failisüsteemi kaja käsu, mis näitab kernelile vahemälu viskamist ja vahemälu jaoks kasutatava mälu vabastamist. Käsu käivitamise juhised olid ülaltoodud selles artiklis ning kuvati ka vahemälu käitumise eksperimentaalne valideerimine enne ja pärast loputamist.