Проблема с фантомной оперативной памятью в Ubuntu 24.01

Вопрос или проблема

У меня проблема с ОЗУ на Ubuntu 24.01. По какой-то причине кажется, что в ОЗУ остаются остатки от закрытых процессов. В открытых процессах нет ничего, что потребляло бы столько.

htop:

htop

bashtop:

bashtop

Это не проблема. Нет смысла, чтобы “свободная” ОЗУ просто простаивала без дела, так как это было бы дорогой тратой, поэтому Linux использует ее для кэширования.

$ free -ht
               total        used        free      shared  buff/cache   available
Mem:            14Gi       4,3Gi       4,9Gi       132Mi       5,8Gi        10Gi
Swap:           19Gi          0B        19Gi
Total:          34Gi       4,3Gi        24Gi

Вот так это выглядит на моей системе прямо сейчас. Посмотрите на столбец available. Также обратите внимание, что цифры, казалось бы, не складываются, то есть used плюс free меньше, чем total, и оба потребляют более половины, но при этом есть 10GiB available. А затем посмотрите на столбец cache. 😉

Просто для иллюстрации, мы могли бы сбросить кэшированную память:

$ sudo sysctl vm.drop_caches=3

Затем посмотрите снова

$ free -ht
               total        used        free      shared  buff/cache   available
Mem:            14Gi       3,1Gi        10Gi       131Mi       1,3Gi        11Gi

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

здравствуйте, к сожалению, это не проблема кэша, он продолжает использовать у меня слишком много неоправданной памяти, он говорит, что я использую всего 861Mi в кэше

$ free -ht
               total        used        free      shared  buff/cache   available
Mem:            15Gi        13Gi       909Mi       270Mi       861Mi       1.2Gi
Swap:          4.0Gi       1.7Gi       2.3Gi
Total:          19Gi        15Gi       3.2Gi

и после команды $ sudo sysctl vm.drop_caches=3 это стало вот так

$ free -ht
               total        used        free      shared  buff/cache   available
Mem:            15Gi        11Gi       3.2Gi       222Mi       546Mi       3.2Gi
Swap:          4.0Gi       1.7Gi       2.3Gi
Total:          19Gi        13Gi       5.5Gi

Я даже пытался закрыть все, но использовалось 8.7Gi без причины

$ free -ht
                   total        used        free      shared  buff/cache   available
    Mem:            15Gi       8.7Gi       6.2Gi       131Mi       490Mi       6.3Gi
    Swap:          4.0Gi       462Mi       3.5Gi
    Total:          19Gi       9.2Gi       9.8Gi

Ответ или решение

Ваша проблема с "фантомной" оперативной памятью в Ubuntu 24.01 может быть довольно запутанной и требует многоступенчатого подхода для полного понимания. Разобраться в этой ситуации поможет структура TEA (Теория, Пример, Применение).

Теория

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

Кэшированная память: Одной из ключевых особенностей Linux является использование свободной оперативной памяти для кэширования недавно использованных данных или часто используемых системных операций. Таким образом, даже если вы закрыли программы, данные, которые использовались, могут оставаться в памяти для быстрого доступа в случае их повторного вызова.

Буферизированная память: Это другой механизм, используемый для временного хранения данных, необходимых для операций ввода-вывода. При этом может показаться, что память "занята", хотя на самом деле она доступна для новых процессов, когда это необходимо.

Пример

На вашем примере видно, что система использует кэш и буферы, но даже если вы очистите кэш с помощью команды sudo sysctl vm.drop_caches=3, часть памяти всё равно остается занята. Это может быть проявлением нескольких возможных причин:

  1. Утечка памяти: Некоторые приложения могут неверно освобождать ресурсы, что приводит к утечкам памяти. Это может быть особенно актуально для программ, которые активно взаимодействуют с системой, но неправильно управляют своими запросами памяти.

  2. Зависшие процессы: Иногда процессы не завершаются корректно или продолжают использовать системные ресурсы даже после закрытия.

  3. Проблемы с ядром или драйверами: Неправильная работа ядра системы или драйверов оборудования также может привести к некорректному использованию памяти.

Применение

  1. Мониторинг процессов: Используйте инструменты как htop, top или bashtop для отслеживания активных процессов и выявления возможных "утечек". Обратите внимание на процессы с высоким потреблением памяти.

  2. Проверка логов системы: Проверьте системные журналы (/var/log/syslog, /var/log/kern.log, /var/log/dmesg) на наличие ошибок, связанных с управлением памятью или проблемами оборудования.

  3. Анализ утилиты диагностики: Используйте утилиты, такие как memtest86+, чтобы проверить вашу оперативную память на наличие аппаратных сбоев. Иногда подобные проблемы могут происходить из-за аппаратных неисправностей.

  4. Оптимизация системы: Регулярно обновляйте вашу систему и устанавливайте последние патчи для ядра и установленных программ. Устаревшие или несовместимые версии могут вызывать подобные проблемы.

  5. Изучение конкретных случаев: Если проблема повторяется с определёнными приложениями, проверьте наличие обновлений для этих приложений и изучите форумы или ресурсы поддержки, чтобы узнать о подобных проблемах у других пользователей.

  6. Настройка свопинга: Обратите внимание на использование своп-секции. Своп помогает системе, однако избыточное обращение к нему может замедлить работу системы.

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

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

Капча загружается...