Очень высокая загрузка памяти при отсутствии запущенных процессов.

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

Я использую Arch Linux с GNOME 3.38 X11, и у меня есть проблема: когда я нахожусь в ожидании (после того, как поработал с компьютером и закрыл всё), используется около 8-9 ГБ ОЗУ.

Я знаю о linuxatemyram, и не думаю, что это проблема, так как free -m выводит следующее:

               total        used        free      shared  buff/cache   available
Mem:           62282        9059       29502         162       23720       52368
Swap:           8191           0        8191

Это указывает на то, что на самом деле я использую много ОЗУ, даже когда ничего не запущено. Когда у меня было 16 ГБ, я тоже часто сталкивался с нехваткой памяти из-за этой проблемы, так что не думаю, что это какая-то форма кэша, так как он должен освобождаться, когда использование памяти увеличивается.

Любопытно, что top использованные объемы памяти также не складываются в сумму, которую он предполагает зарезервировать. Вот ссылка на результаты, которые я получил. Я какое-то время думал, что что-то должно протекать, но не могу разобраться, что именно.

ПРАВКА: Дополнительные выводы. Эти измерения были сделаны вскоре после перезагрузки, поэтому не являются представительными. Я повторю и опубликую после возникновения такой же ситуации.

$ mount | grep tmpfs
dev on /dev type devtmpfs (rw,nosuid,relatime,size=31848276k,nr_inodes=7962069,mode=755,inode64)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755,inode64)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755,inode64)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=31888716k,nr_inodes=409600,inode64)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=6377740k,nr_inodes=1594435,mode=700,uid=1000,gid=985,inode64)
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
dev              31G     0   31G   0% /dev
run              31G  1.7M   31G   1% /run
/dev/nvme0n1p3  450G  208G  219G  49% /
tmpfs            31G  737M   30G   3% /dev/shm
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs            31G   19M   31G   1% /tmp
tmpfs           6.1G  136K  6.1G   1% /run/user/1000

Исходя из предоставленной вами информации, у вас действительно смонтированы файловые системы tmpfs в /tmp и /dev/shm, которые не отображаются в top или других подобных утилитах.

Пожалуйста, следите за использованием этих точек монтирования с помощью df и очищайте данные или останавливайте приложения, записывающие данные в них. Некоторые приложения создают файлы и сразу их удаляют, и такие файлы все равно занимают место. Их не видно напрямую через, например, ls или df, но вы можете обнаружить их таким образом:

sudo lsof -n | egrep "/tmp|/dev/shm" | grep deleted

Так как это уже 20-й раз, когда я вижу этот вопрос, я решил подать баг-репорты против top, free и htop:

https://gitlab.com/procps-ng/procps/-/issues/196

https://github.com/htop-dev/htop/issues/556

Если проблема заключается в 9 ГБ используемой памяти, то запустите top и отсортируйте процессы по %MEM.

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

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

Высокое использование оперативной памяти в Arch Linux с GNOME 3.38 X11

Проблема: Вы сообщаете, что при простое операционная система использует 8-9 ГБ оперативной памяти, несмотря на то, что никаких приложений не работает. При этом вывод команды free -m подтверждает наличие высоких показателей использования оперативной памяти.

Потенциальные причины

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

  2. Текущие процессы: Высокое потребление памяти также может быть связано с процессами, которые работают в фоновом режиме. Имейте в виду, что некоторые процессы могут занимать значительное количество памяти, даже если они не видны в основном списке.

  3. Память tmpfs: Ваш вывод mount | grep tmpfs показывает, что у вас есть смонтированные файловые системы tmpfs на /tmp и /dev/shm, которые также могут использовать значительное количество оперативной памяти. Эти пространства используются для временных файлов и могут заполняться в процессе работы нескольких приложений. Хотя вы ничего явно не запускали, некоторые приложения могут автоматически создавать временные файлы.

Рекомендации по диагностике

  1. Мониторинг использования памяти: Используйте команду top или htop, чтобы отсортировать процессы по использованию памяти (%MEM). Это поможет выявить, какие процессы потребляют наибольшее количество памяти.

  2. Проверка заделов в tmpfs: Используйте следующую команду, чтобы проверить наличие удалённых, но все ещё занимающих место файла:

    sudo lsof -n | egrep "/tmp|/dev/shm" | grep deleted

    Эта команда перечислит файлы, которые удалены, но память всё ещё занята.

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

  4. Анализ взаимосвязей процессов: Иногда приложения могут оставлять "медленные утечки" памяти, что также ведёт к росту общего потребления. Мониторинг использования памяти в долгосрочной перспективе может дать подсказки, если проблема повторяется.

  5. Система и окружение рабочей среды: Убедитесь, что у вас установлены последние обновления для вашей среды рабочего стола и пакетов в целом. Иногда высокое использование памяти связано с известными проблемами, которые могут быть исправлены актуальными обновлениями программного обеспечения.

Заключение

Высокое использование памяти в вашей системе может быть вызвано несколькими факторами, включая кеширование, фоновую деятельность процессов, χρήση tmpfs и возможные утечки памяти. Важно провести тщательный анализ активных процессов и временных файлов, чтобы устранить потенциальные причины проблемы. Регулярное наблюдение за состоянием системы и её оптимизация могут значительно улучшить производительность и избежать нехватки памяти в будущем.

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

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