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

1 029 посмотрели
Posted by Алексей Нещадим in IT | Tagged , , , , , , , , , , , | Leave a comment

Без паники! С памятью всё в порядке!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

linuxswap

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

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

Чтобы узнать, сколько ОЗУ доступно Вашим приложениям для использования, выполните команду free -m и взгляните на ряд, начинающийся с "-/+ buffers/cache" на колонку с названием "free". Вот ответ на Ваш вопрос, указанный в мегабайтах:

linuxswap2

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

Добавить комментарий