Performance

Vahemälu tühjendamine Linuxis

Vahemälu tühjendamine Linuxis
Linuxi failisüsteemi vahemälu (Page Cache) kasutatakse IO toimingute kiiremaks muutmiseks.  Teatud tingimustel võib administraator või arendaja soovida vahemälu käsitsi kustutada.  Selles artiklis selgitame, kuidas Linuxi failisüsteemi vahemälu töötab.  Seejärel demonstreerime, kuidas vahemälu kasutamist jälgida ja kuidas vahemälu tühjendada.  Teeme mõned lihtsad toimivuskatsed, et kontrollida, kas vahemälu töötab ootuspäraselt ning kas vahemälu loputus- ja tühjendusprotseduur töötab ka ootuspäraselt.

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.

OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...
Lahing Wesnothi õpetuse eest
Battle for Wesnoth on üks populaarsemaid avatud lähtekoodiga strateegiamänge, mida saate praegu mängida. See mäng pole mitte ainult olnud väga pikka a...