Linux съел мою память!!

Что происходит?

Linux заимствует неиспользуемую память под дисковый кэш. Из-за этого может показаться, будто у Вас на компьютере почти закончилась память, но это не так! Всё в порядке!

Почему так происходит?

Дисковый кэш делает работу системы гораздо быстрее! И при этом у него нет никаких минусов кроме введения новичков в заблуждение. Он никогда не отбирает память у приложений!

Что если я захочу запустить больше программ?

Если Вашим приложениям понадобится больше памяти, то они просто займут память, используемую дисковым кэшем. Память, занятая под дисковый кэш, всегда может быть незамедлительно отдана обратно приложениям! Это никак не значит, что у Вас закончилась память!

Потребуется ли увеличение файла подкачки?

Нет, дисковый кэш заимствует только оперативную память, не занятую в данный момент приложениями. Файл подкачки он использовать не будет. Если приложениям понадобится больше памяти, они просто заберут её у дискового кэша. Они не станут использовать файл подкачки.

Как мне заставить Linux не делать так?

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

Почему top и free показывают, что память занята, если это не так?

Это лишь расхождение в терминологии. И Вы и Linux оба считаете, что память, используемая приложениями, называется "занятой", тогда как память, которая ни для чего не используется считается "свободной".

Но как Вы назовёте память, которая одновременно и используется для чего-то и доступна для использования приложениями?

Вы бы назвали её "свободной", но Linux называет её "занятой".

Память, котораядля Вас она для Linux она
используется приложениями Занята Занята
доступна для приложений, но используется для чего-то ещё Свободна Занята
ни для чего не используется Свободна Свободна

Это "что-то ещё" - это то, что top и free называют "буферами" и "кэшем". И, так как Ваша терминология с терминологией Linux расходятся, Вы думаете, что память закончилась, хотя на самом деле это не так.

Как мне узнать, сколько оперативной памяти у меня свободно на самом деле?

Чтобы узнать, сколько ОЗУ доступно Вашим приложениям для использования, выполните команду free -m и взгляните на ряд, начинающийся с "-/+ buffers/cache" на колонку с названием "free". Вот ответ на Ваш вопрос, указанный в мегабайтах:
$ free -m
             total       used       free     shared    buffers     cached
Mem:          1504       1491         13          0         91        764
-/+ buffers/cache:        635        869
Swap:         2047          6       2041
$

Если бы Вы не знали, как правильно читать эти числа, Вам бы показалось, что у Вас занято 99% оперативной памяти, хотя на самом деле занято всего 42%.

Как я могу удостовериться во всём этом?

На этой странице Вы сможете ознакомиться с более детальным описанием и поэкспериментировать с дисковым кэшем.
LinuxAteMyRam.com создан силами VidarHolen.net
LinuxAteMyRam.com переведён mega_venik