Рейтинг:11

Кэшированная память Занимает всю память

флаг id

Я перешел на Ubuntu всего пару месяцев назад. Несколько дней назад я обнаружил, что система хранит кеш в памяти, который занимает много места, и хотя я получаю преимущество от кешированной памяти, теперь это создает мне проблемы.

кэшированная память убунту

Как вы можете видеть на этой картинке, Ubuntu занимает более 50% моей оперативной памяти. Кроме того, я использую 23,3% от 11,6 ГБ, что в основном означает, что моя система занимает более 75-80% моей памяти...

Теперь я много раз искал, как я могу очистить свой кеш, и я обнаружил, что синхронизировать; эхо 1 > /proc/sys/vm/drop_caches команда с привилегиями sudo может очистить его, но эта команда работала только в начале, например, когда я использовал эту команду и увидел, что мой кэш был сильно уменьшен. Но теперь, когда я вижу свою кешированную память после запуска, она остается прежней.

Может ли кто-нибудь помочь мне с этой бедой?

P.S. Я думаю, что если я попытаюсь обновить свою оперативную память, это не решит эту проблему...

флаг in
Это не беда. Это по дизайну. Зачем нужна оперативная память, если вы ее не используете? Когда системе требуется память для других целей, таких как приложения и тому подобное, кеш будет перетасовываться для подкачки или удаляться из памяти, чтобы удовлетворить немедленные потребности. В противном случае система будет делать то, что ей нужно, чтобы быть быстрой и отзывчивой. Это одно из основных преимуществ Linux по сравнению с другими ОС, такими как Windows.
Labham Jain avatar
флаг id
Ну, у меня нет проблем с хранением кэшированной памяти, я просто хочу, чтобы она была ограничена... Потому что, если система занимает все место в кэше, я не смогу использовать оперативную память... сейчас из-за проблемы с кэшированной памятью мой хром показывает мне ошибку SIGSEV. а AVD всегда отстой.
guiverc avatar
флаг cn
Если ваши программы выполняют вызовы `malloc()` (выделение памяти) и нет свободной оперативной памяти, тогда выделяется кешированная оперативная память, эта часть кеша просто теряется... Я не вижу, как ограничения помогут вашей проблеме, вы, вероятно, сосредоточились на неправильной проблеме .. (*мнение*, я не знаю кода, и я давно читал * книги по работе с ядром Linux *)
Artur Meinild avatar
флаг vn
Это не проблема, вы ошиблись. Система НЕ использует память для кеша, которая в противном случае использовалась бы для приложений. Вы ДУМАЕТЕ, что это проблема, хотя на самом деле это не так.
флаг us
Не связано с вопросом: поскольку у вас много оперативной памяти, рассмотрите возможность перехода на ZRam вместо замены жесткого диска.
флаг ru
Это нормально. Например, кэш-память моей ежедневной системы драйверов с 32 ГБ ОЗУ составляет 7,6 ГБ из ~ 31 ГБ, которые можно использовать. 7 ГБ оперативной памяти активно используются системой. С кешем можно подумать, что я использую 14,6 ГБ ОЗУ, хотя на самом деле я использую только 7 ГБ ОЗУ. 7,6 ГБ ОЗУ высвобождаются, если это необходимо, в противном случае они сохраняются только для «ускорения» работы на дисках, в кешах и т. д. Кэшированная ОЗУ удерживается до тех пор, пока она не понадобится, и немедленно освобождается при необходимости — на самом деле это не влияет на вашу память. *использование* в любом случае.
флаг cn
@LabhamJain Слушай себя. Система *использует* память. Вы хотите, чтобы он *не использовал* память. И ваша причина в том, что если система использует память, она «не сможет использовать оперативную память». Это бессмысленно. Вы хотите, чтобы система могла использовать ОЗУ, она *использует* ОЗУ, доказывая, что она *может* использовать ее.
флаг gf
SIGSEV является результатом ошибки программиста. Это не имеет никакого отношения к тому, сколько оперативной памяти доступно или нет. AVD всегда отстой, когда он эмулирует инструкции руки на процессоре x86.
флаг cn
@matigo: Windows также использует «неиспользуемую» память для кэширования вещей, но _большинство_ ее пользовательских интерфейсов скрывают это от пользователя, чтобы он не запутался и не паниковал.
Labham Jain avatar
флаг id
@OrangeDog На самом деле это проблема, которая возникает, когда хром теряет доступ к памяти ... так что я имел в виду под кэшированной памятью то, что моя система занимает большую часть оперативной памяти в кэше, поэтому технически я смогу использовать только свободную память, например. Всего 11 ГБ - 6 ГБ в кеше, поэтому я могу использовать максимум 5 ГБ ...
флаг gf
@LabhamJain, как неоднократно объяснялось, это неправильно
флаг fk
https://www.linuxatemyram.com/ Неиспользуемая оперативная память - это потраченная впустую оперативная память. Если что-то нуждается в этой памяти, Linux откажется от того, что когда-либо использовало ее на данный момент. Так что это не реальная проблема
Ruslan avatar
флаг bv
Теперь, когда вы упомянули SIGSEGV, это выглядит как [проблема XY] (https://xyproblem.info).
nulldev avatar
флаг cn
Обратите внимание, что кэшированная память не всегда означает память, которую можно выбросить, когда потребуется больше оперативной памяти. Например, данные в `tmpfs` будут отображаться как "кэшированная память". Однако системный монитор покажет этот тип памяти как кэшированный, так и используемый (поэтому он будет в цветной части круговой диаграммы). [Это укусило меня раньше.] (https://askubuntu.com/questions/762717/high-shmem-memory-usage)
eckes avatar
флаг cn
В Windows тоже есть кеш, просто он немного менее агрессивен в этом отношении. @матиго
флаг fr
https://www.linuxatemyram.com - это классика ;)
eckes avatar
флаг cn
@OrangeDog да, но поскольку сбойный malloc возвращает null, программа очень часто аварийно завершает работу с SEGV, если у нее заканчивается виртуальная память и не выполняется надлежащая проверка возврата, поэтому здесь существует сильная корреляция, например, почтовый индекс в у среды выполнения Java была эта проблема в течение многих лет.
marcelm avatar
флаг cn
@eckes `malloc()` в Linux по существу [никогда не возвращает NULL] (https://stackoverflow.com/questions/16674370), так что это спорный вопрос.
Рейтинг:26
флаг bo

если система занимает все место в кэше, я не смогу использовать оперативную память

Это неправда. Кэшированная оперативная память не определяет используемую оперативную память. Ты будет иметь возможность использовать оперативную память, поэтому она называется кэшируемой — ее можно использовать и выбрасывать по мере необходимости. На самом деле, это прямо противоположно вашему предположению. Если вы удалите кешированную оперативную память, вы не сможете использовать то, что кешируется.

Теперь я много раз искал, как я могу очистить свой кеш, я нашел эту синхронизацию; echo 1> Команда /proc/sys/vm/drop_caches с привилегиями sudo может очистить его, но эта команда работала только в начале, например, когда я использовал эту команду и увидел, что мой кеш был сильно уменьшен. Но теперь, когда я вижу свою кешированную память после запуска, она остается прежней.

Вам нужно только вручную очистить кеш, если у вас отключена подкачка. Отключение подкачки не рекомендуется повышать производительность так как это фактически снижает производительность системы.

В отличие от Windows, Ubuntu не дает сбоев при большой нагрузке на оперативную память из-за различий в управлении памятью. Отключение этих функций значительно снизит производительность.

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

mchid avatar
флаг bo
Если вы хотите повысить производительность системы, лучше всего переключиться на твердотельный накопитель вместо жесткого диска.
mchid avatar
флаг bo
Лично я переключился на SSD и увеличил swappiness до 70, чтобы получить лучшую производительность на 5 ГБ ОЗУ. Поскольку у вас есть 11 ГБ, подкачка мало повлияет на производительность системы, если только система не зависнет. В этом случае swappiness должен повышать производительность, а не снижать ее.
флаг in
@MooingDuck: Как вы думаете, почему в Linux своп отключен по умолчанию? Я думаю, что Ubuntu создает раздел подкачки во время установки по умолчанию — конечно, вы можете настаивать на том, чтобы не было подкачки, если хотите.Кроме того, «сбой» — это когда система перестает отвечать на запросы или перезагружается — это сильно отличается от того, что делает Linux в ситуации нехватки памяти (детерминированная остановка процессов для освобождения оперативной памяти).
Ruslan avatar
флаг bv
Не совсем справедливо говорить, что Ubuntu не падает из-за перегрузки оперативной памяти. OOM-убийство вашего X-сервера так же плохо для рабочего стола, как блокировка или паника ядра. Правда, в настоящее время это редкость из-за того, что современные дистрибутивы корректируют оценку OOM для важных процессов, но я часто сталкивался с этим около 5 лет назад.
terdon avatar
флаг cn
Конечно, Linux (включая Ubuntu) может вылететь из-за перегрузки оперативной памяти. Просто добраться до этой точки сложнее из-за того, как он управляет памятью, но это не невозможно. Если вы на самом деле используете всю свою оперативную память, система начнет подкачку, а если вы заполните и ее, она перестанет отвечать на запросы и в конечном итоге выйдет из строя (предположительно, мы обычно принудительно перезагружаемся, когда это происходит).
флаг cn
@terdon Я имею в виду, что он не выйдет из строя, для таких ситуаций есть убийца OOM. Конечно, зависит от того, что вы имеете в виду под словом «крах», но с ядром все будет в порядке. Другие процессы - это зависит.
mchid avatar
флаг bo
@terdon Да, у меня часто зависала система на очень старом компьютере (всего 1,5 ГБ ОЗУ), но это было потому, что мой раздел подкачки был слишком маленьким, а жесткий диск был очень медленным. После увеличения размера раздела подкачки (и возможности подкачки с 10 до 60) система работала медленно, но не переставала отвечать.
Рейтинг:21
флаг tr

Кэшированная память на самом деле является свободной памятью.

Она может быть (и будет) предоставлена ​​как свободная любому процессу, который запрашивает память, как только другая свободная память будет израсходована.

Тем временем ядро ​​отслеживает, какая информация кэшируется в этой свободной памяти.

Не предполагается, что эта информация будет записываться куда-либо посредством ввода-вывода, занимающего много времени. Он либо уже написан, либо прочитан и никогда не менялся. Эту информацию можно безопасно (и быстро) удалить из памяти.

Рейтинг:15
флаг bd

Кэширование вам никоим образом не помешает!

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

Если ваше программное обеспечение запрашивает блок памяти, система делает «ну вот» и выдает блок. Если там оказался кеш, кешированные элементы удаляются (т. е. они больше не находятся в кеше, и при необходимости их нужно будет снова извлечь с диска).

Более умные системы будут делать разумный выбор в отношении того, какие элементы следует удалить из кеша, чтобы дать вам память.

Labham Jain avatar
флаг id
Это не похоже на правду, я пытался запустить эмулятор Android, но когда моя оперативная память заполнилась кешем 4 ГБ, он повесил мою систему вместо того, чтобы удалить этот кеш...
terdon avatar
флаг cn
@LabhamJain звучит так, будто вы израсходовали всю свою оперативную память и подкачку. Кэш диска - не ваша проблема.
Harper - Reinstate Monica avatar
флаг bd
Проблемы с кешем @LabhamJain не зависают в вашей системе, поэтому я думаю, что «кеш» - это отвлекающий маневр, и у вас совершенно другая проблема ... это происходит здесь все время, это называется «проблемой XY» ...
mchid avatar
флаг bo
@LabhamJain Раньше я сталкивался с перегрузкой диска на старом компьютере, и оказалось, что мне нужно было увеличить размер моего раздела подкачки — система пыталась перейти в несуществующее пространство подкачки. Также у меня были временные зависания из-за медленного жесткого диска. Решением было перейти на SSD.
Рейтинг:10
флаг cn
raj

Откройте терминал (Ctrl+Alt+T) и введите команду: бесплатно -ч. Вы получите такой вывод:

              общее количество использованных бесплатных общих баффов/доступных кешей
Память: 15Gi 2.0Gi 10Gi 33Mi 2.7Gi 13Gi
Своп: 31Gi 0B 31Gi

Здесь у вас есть 15 ГБ общей оперативной памяти, 2 ГБ используется, 2,7 ГБ — это кеш, а 10 ГБ отображается как «свободный». Но посмотрите на последний столбец: он показывает 13G как «доступный». Это означает, что вы можешь использовать 13 ГБ ОЗУ (то есть сумма свободного места + кеш), несмотря на то, что только 10 ГБ отображаются как «свободные». Как указывали другие ответы, кэш-память временный: при необходимости назначается приложениям, ровно как "свободная" память; в этом нет никакой разницы между этими двумя.

Посмотрите на это так: система использует часть бесплатно памяти на вашем компьютере, чтобы временно кешировать данные, считываемые с диска, для ускорения операций с диском. Но независимо от того, используется ли она в качестве кеша, эта память по-прежнему свободна для использования приложениями, то есть она будет назначена приложению (аннулированию кеша), если оно понадобится приложению.

Рейтинг:3
флаг cn

Пустая оперативная память, используемая в качестве кеша для вашего ssd, предназначена для ускорения вашего компьютера. Если вы хотите очищать кеш каждые x минут, вы можете установить запись crontab для очистки кеша.

Labham Jain avatar
флаг id
Это не я хочу, я просто хочу ограничить кеширование памяти...
Boann avatar
флаг cn
@LabhamJain Нет, нет.
Рейтинг:3
флаг eg

Добро пожаловать в GNU/Linux, друг!

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

То, что вы описываете, это нормально.

В идеале в системе GNU/Linux будет использоваться 100% оперативной памяти. То, что не нужно приложениям оперативной памяти, будет использоваться дисковым кэшированием. Разве вы не предпочли бы, чтобы дисковые операции выполнялись со скоростью оперативной памяти, а не со скоростью ваших жестких дисков? Ну, вы получите это сейчас, бесплатно. Наслаждайтесь и не переживайте, когда видите, что память используется кэшированием.

Рейтинг:0
флаг br

Пожалуйста, проверьте эту ссылку https://www.linuxatemyram.com/, автор объясняет, что то, что вы видите, не то, что, по вашему мнению, происходит.

Рейтинг:0
флаг id

Ну вот я и разобрался со своей проблемой синхронизировать; эхо 1 > /proc/sys/vm/drop_caches Команда, я где-то написал эту команду с ошибкой, и теперь, если я использую эту команду правильно, она очищает мою кэшированную память, поэтому моя проблема, кажется, решена, хотя будут оценены дополнительные ответы для будущих ссылок и для сообщества.

Ответить или комментировать

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