Kā notīrīt RAM atmiņas kešatmiņu, buferi un apmainīt vietu operētājsistēmā Linux


Tāpat kā jebkura cita operētājsistēma, arī GNU/Linux ir efektīvi un pat vairāk ieviesusi atmiņas pārvaldību. Bet, ja kāds process apēd jūsu atmiņu un vēlaties to notīrīt, Linux nodrošina veidu, kā izdzēst vai notīrīt RAM kešatmiņu.

Katrai Linux sistēmai ir trīs iespējas, kā notīrīt kešatmiņu, nepārtraucot procesus vai pakalpojumus.

1. Notīriet tikai PageCache.

# sync; echo 1 > /proc/sys/vm/drop_caches

2. Notīriet zobu protēzes un inodus.

# sync; echo 2 > /proc/sys/vm/drop_caches

3. Notīriet PageCache, zobārstniecības un inodus.

# sync; echo 3 > /proc/sys/vm/drop_caches 

Iepriekš minētās komandas skaidrojums.

sinhronizējot failu sistēmas buferi. Komanda, atdalīta ar “;” , darbojas secīgi. Apvalks gaida, līdz katra komanda tiek pārtraukta, pirms izpilda nākamo komandu secībā. Kā minēts kodola dokumentācijā, rakstīšana uz drop_cache notīrīs kešatmiņu, nenogalinot nevienu lietojumprogrammu/pakalpojumu, komandu atbalss veic darbu, rakstot failā.

Ja jums ir jāizdzēš diska kešatmiņa, pirmā komanda ir visdrošākā uzņēmumā un ražošanā, jo “... echo 1>….” notīrīs tikai PageCache. Ražošanā nav ieteicams izmantot trešo opciju virs “... echo 3>” , līdz jūs zināt, ko jūs darāt, jo tas notīrīs PageCache, zobārstniecības un inodes.

Ja lietojat dažādus iestatījumus un vēlaties pārbaudīt, vai tas faktiski tiek ieviests īpaši I/O ekstensīvajā etalonā, iespējams, būs jāiztīra bufera kešatmiņa. Jūs varat nomest kešatmiņu, kā paskaidrots iepriekš, nepārstartējot sistēmu, t.i., dīkstāves nav nepieciešamas.

Linux ir veidots tā, ka pirms diska aplūkošanas tā ieskatās diska kešatmiņā. Ja resurss tiek atrasts kešatmiņā, pieprasījums nesasniedz disku. Ja mēs notīrīsim kešatmiņu, diska kešatmiņa būs mazāk noderīga, jo OS meklēs resursu diskā.

Turklāt tas dažas sekundes palēninās sistēmas darbību, kamēr kešatmiņa tiek iztīrīta un visi OS pieprasītie resursi atkal tiek ielādēti diska kešatmiņā.

Tagad mēs izveidosim čaulas skriptu, lai automātiski notīrītu RAM kešatmiņu katru dienu plkst. 2:00, izmantojot cron plānotāja uzdevumu. Izveidojiet čaulas skriptu clearcache.sh un pievienojiet šādas rindas.

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

Iestatiet izpildes atļauju failā clearcache.sh.

# chmod 755 clearcache.sh

Tagad jūs varat izsaukt skriptu ikreiz, kad nepieciešams notīrīt RAM kešatmiņu.

Tagad iestatiet kronu, lai notīrītu RAM kešatmiņu katru dienu plkst. Rediģēšanai atveriet crontab.

# crontab -e

Pievienojiet zemāk esošo rindu, saglabājiet un izejiet, lai to palaistu katru dienu plkst. 2:00.

0  2  *  *  *  /path/to/clearcache.sh

Lai iegūtu sīkāku informāciju par to, kā iecienīt darbu, lūdzu, skatiet mūsu rakstu par 11 Cron Scheduling Jobs.

Nē! tas nav. Padomājiet par situāciju, kad skripts ir ieplānots, lai notīrītu RAM kešatmiņu katru dienu plkst. Katru dienu pulksten 2:00 skripts tiek izpildīts, un tas izdzēš jūsu RAM kešatmiņu. Kādu dienu kāda iemesla dēļ jūsu vietnē var būt vairāk nekā paredzēts, lietotāji ir tiešsaistē un meklē resursus no jūsu servera.

Tajā pašā laikā plānotais skripts darbojas un notīra visu kešatmiņā. Tagad visi lietotāji iegūst datus no diska. Tas izraisīs servera avāriju un korumpētu datu bāzi. Tātad notīriet aunu kešatmiņu tikai tad, kad nepieciešams, un ziniet, kādi ir jūsu soļi, pretējā gadījumā jūs esat Cargo Cult sistēmas administrators.

Ja vēlaties notīrīt vietu Swap, ieteicams palaist zemāk esošo komandu.

# swapoff -a && swapon -a

Pēc tam, kad esat sapratis visu saistīto risku, jūs varat pievienot iepriekš minēto komandu iepriekš norādītajam cron skriptam.

Tagad mēs apvienosim abas iepriekš minētās komandas vienā komandā, lai izveidotu pareizu skriptu, lai notīrītu RAM kešatmiņu un mijmaiņas vietu.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

OR

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

Pārbaudot abas iepriekš minētās komandas, mēs izpildīsim komandu “free -h” pirms un pēc skripta palaišanas un pārbaudīsim kešatmiņu.

Pagaidām tas ir viss, ja jums patika raksts, neaizmirstiet komentāros sniegt mums savu vērtīgo atgriezenisko saiti, lai informētu mūs: kā jūs domājat, vai ir laba ideja notīrīt RAM kešatmiņu un buferi ražošanā un uzņēmumā Enterprise?