Какво става?

Linux заема неизползвана памет за кеширане на дискове. Това изглежда, че имате малко памет, но не сте! Всичко е наред!

linux

Защо прави това?

Дисковото кеширане прави системата много по-бърза и по-отзивчива! Няма недостатъци, с изключение на объркващите начинаещи. Това не отнема паметта от приложенията по никакъв начин, никога!

Ами ако искам да стартирам повече приложения?

Ако вашите приложения искат повече памет, те просто вземат обратно част, която дисковият кеш е взел назаем. Дисковият кеш винаги може да бъде върнат незабавно на приложенията! Не сте малко на овен!

Имам ли нужда от повече суап?

Не, кеширането на дискове заема само овен, който приложенията в момента не искат. Той няма да използва суап. Ако приложенията искат повече памет, те просто я връщат обратно от кеша на диска. Те няма да започнат да се разменят.

Как да спра Linux да прави това?

Не можете да деактивирате кеширането на диска. Единствената причина, поради която някой някога иска да деактивира кеширането на диска, е, че смята, че отнема паметта от приложенията им, а това не! Дисковият кеш кара приложенията да се зареждат по-бързо и да работят по-плавно, но НИКОГА НИКОГА не им отнема паметта! Следователно няма абсолютно никаква причина да го деактивирате!

Ако обаче ви се наложи да изчистите малко RAM бързо, за да заобиколите друг проблем, като неправилно поведение на виртуална машина, можете да принудите Linux да неразрушава пускането на кешове, използвайки echo 3 | sudo tee/proc/sys/vm/drop_caches .

Защо отгоре и безплатно се казва, че целият ми овен се използва, ако не е?

Това е просто разлика в терминологията. И вие, и Linux се съгласявате, че паметта, взета от приложенията, се „използва“, докато паметта, която не се използва за нищо, е „безплатна“.

Но как да броите паметта, която в момента се използва за нещо, но все още може да бъде предоставена на приложенията?

Може да смятате тази памет като „безплатна“ и/или „налична“. Вместо това Linux го смята за "използван", но също така и "достъпен":

Памет, която е. Ще го наречете Linux го нарича
използвани от приложения Използва се Използва се
използвани, но могат да бъдат предоставени Безплатно (или налично) Използвани (и налични)
не се използва за нищо Безплатно Безплатно

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

Как да разбера колко безплатен овен наистина имам?

За да видите колко ram могат да използват вашите приложения, без да се разменят, пуснете free -m и погледнете колоната „налични“:

(При инсталации от преди 2016 г. вместо това погледнете колоната „безплатно“ в реда „-/+ буфери/кеш“.)

Това е вашият отговор в MiB. Ако просто наивно погледнете „използвано“ и „безплатно“, ще си помислите, че вашият овен е пълен на 99%, когато всъщност е само 47%!

За по-подробно и техническо описание на това, което Linux се счита за „налично“, вижте фиксацията, която е добавила полето.

Кога трябва да започна да се тревожа?

A здрава Linux система с повече от достатъчно памет, след като работи за известно време, ще покаже следното очаквано и безобидно поведение:

  • свободната памет е близо до 0
  • използваната памет е близка до общата
  • наличната памет (или „безплатно + буфери/кеш“) има достатъчно място (да речем, 20% + от общото)
  • използваният суап не се променя

Предупредителни знаци на истинска ситуация с ниска памет, която може да искате да разгледате:

  • наличната памет (или „безплатни + буфери/кеш“) е близо до нула
  • суап използваните се увеличава или варира
  • dmesg | grep oom-killer показва OutOfMemory-killer на работа

Как мога да проверя тези неща?

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