Как да изчистите кеша в Linux

How Clear Cache Linux



Кешът на файловата система на Linux (Page Cache) се използва за ускоряване на IO операциите. При определени обстоятелства администратор или програмист може да поиска ръчно да изчисти кеша. В тази статия ще обясним как работи кешът на файловата система на Linux. След това ще демонстрираме как да следим използването на кеша и как да изчистваме кеша. Ще направим няколко прости експеримента за производителност, за да проверим дали кешът работи според очакванията и че процедурата за изчистване и изчистване на кеша също работи според очакванията.

Как работи кешът на файловата система на Linux

Ядрото запазва определено количество системна памет за кеширане на достъпа до диска на файловата система, за да ускори цялостната производителност. Кешът в Linux се нарича Кеш на страницата . Размерът на кеша на страницата се конфигурира с щедри настройки по подразбиране, позволяващи да се кешират големи количества дискови блокове. Максималният размер на кеша и правилата кога да се изваждат данни от кеша се регулират с параметрите на ядрото. Подходът за кеш на Linux се нарича кеш за обратно писане. Това означава, че ако данните се записват на диск, те се записват в паметта в кеша и се маркират като замърсени в кеша, докато не се синхронизират с диска. Ядрото поддържа вътрешни структури от данни, за да оптимизира кои данни да изгони от кеша, когато е необходимо повече място в кеша.







По време на четене на системни обаждания на Linux ядрото ще провери дали исканите данни се съхраняват в блокове от данни в кеша, това би било успешен кеш и данните ще бъдат върнати от кеша, без да се прави никакъв IO на дисковата система. При пропускане на кеш данните ще бъдат извлечени от системата за IO и кешът ще се актуализира въз основа на правилата за кеширане, тъй като е възможно тези същите данни да бъдат поискани отново.



Когато се достигнат определени прагове на използване на паметта фоновите задачи ще започнат да записват мръсни данни на диска, за да се гарантира, че изчиства кеша на паметта. Те могат да окажат влияние върху производителността на приложения с интензивна памет и процесори и изискват настройка от администратори и или разработчици.



Използване на безплатна команда за преглед на използването на кеша

Можем да използваме безплатната команда от командния ред, за да анализираме системната памет и обема на паметта, разпределена за кеширане. Вижте командата по -долу:





#Безплатно

Това, което виждаме от Безплатно горната команда е, че в тази система има 7,5 GB RAM. От това се използват само 209 MB, а 6.5 MB са безплатни. 667 MB се използва в буферния кеш. Сега нека се опитаме да увеличим този брой, като изпълним команда за генериране на файл от 1 гигабайта и четене на файла. Командата по -долу ще генерира приблизително 100 MB произволни данни и след това ще добави 10 копия на файла заедно в едно голям_файл .



# dd if =/dev/random of =/root/data_file count = 1400000
# за i в `seq 1 10`; do echo $ i; cat_файл данни >> голям_файл; Свършен

Сега ще се уверим, че сме прочели този 1 Gig файл и след това отново проверяваме безплатната команда:

# cat голям_файл> /dev /null
# безплатно -м

Можем да видим, че използването на буферния кеш се е увеличило от 667 на 1735 Мегабайта, което представлява увеличение от около 1 гигабайта в използването на буферния кеш.

Команда Proc Sys VM Drop Caches

Ядрото на Linux предоставя интерфейс за изпускане на кеша, нека да изпробваме тези команди и да видим въздействието върху безплатната настройка.

# echo 1>/proc/sys/vm/drop_caches
# безплатно -м

Можем да видим по -горе, че по -голямата част от разпределението на буферния кеш е освободена с тази команда.

Експериментална проверка, че Drop Caches работи

Можем ли да направим валидиране на производителността, като използваме кеша за четене на файла? Нека да прочетем файла и да го запишем обратно в /dev /null, за да тестваме колко време е необходимо за четене на файла от диска. Ще го определим с време команда. Правим тази команда веднага след изчистване на кеша с командите по -горе.

Четенето на файла отне 8,4 секунди. Нека го прочетем отново, когато файлът трябва да бъде в кеша на файловата система и да видим колко време отнема сега.

Бум! Отчитането му отне само 0,2 секунди в сравнение с 8,4 секунди, когато файлът не беше кеширан. За да проверим, нека повторим това отново, като първо изчистим кеша и след това прочетем файла 2 пъти.

Работи перфектно според очакванията. 8,5 секунди за некеширано четене и 0,2 секунди за кеширано четене.

Заключение

Кешът на страницата се активира автоматично в системите на Linux и прозрачно ще направи IO по -бърз, като съхранява наскоро използвани данни в кеша. Ако искате ръчно да изчистите кеша, което може да стане лесно, като изпратите ехо команда до файловата система /proc, показваща на ядрото да изпусне кеша и да освободи паметта, използвана за кеша. Инструкциите за изпълнение на командата бяха показани по -горе в тази статия, както и експерименталното валидиране на поведението на кеша преди и след промиване.