Вопрос или проблема
Я использую 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
:
Если проблема заключается в 9 ГБ используемой памяти, то запустите top и отсортируйте процессы по %MEM.
Совершенно нормально. Linux, Windows и большинство других операционных систем любят кешировать всё, что могут. Память используется, но она не закреплена за этим содержимым. Она может быть освобождена и заменена чем-то другим, как только чтение с диска происходит.
Вы должны видеть много свободной памяти только тогда, когда какой-то большой процесс (или набор совокупно больших процессов) только что завершился.
Ответ или решение
Высокое использование оперативной памяти в Arch Linux с GNOME 3.38 X11
Проблема: Вы сообщаете, что при простое операционная система использует 8-9 ГБ оперативной памяти, несмотря на то, что никаких приложений не работает. При этом вывод команды free -m
подтверждает наличие высоких показателей использования оперативной памяти.
Потенциальные причины
-
Кеширование и управление памятью: Linux активно использует свободную оперативную память для кеширования данных. Это делает систему более отзывчивой, так как данные, которые могли бы быть загружены с диска, считываются из кеша. Система может освобождать эту память при необходимости, поэтому запрашивать информацию о "свободной" памяти, как вы упомянули, может быть не совсем корректно.
-
Текущие процессы: Высокое потребление памяти также может быть связано с процессами, которые работают в фоновом режиме. Имейте в виду, что некоторые процессы могут занимать значительное количество памяти, даже если они не видны в основном списке.
-
Память
tmpfs
: Ваш выводmount | grep tmpfs
показывает, что у вас есть смонтированные файловые системыtmpfs
на/tmp
и/dev/shm
, которые также могут использовать значительное количество оперативной памяти. Эти пространства используются для временных файлов и могут заполняться в процессе работы нескольких приложений. Хотя вы ничего явно не запускали, некоторые приложения могут автоматически создавать временные файлы.
Рекомендации по диагностике
-
Мониторинг использования памяти: Используйте команду
top
илиhtop
, чтобы отсортировать процессы по использованию памяти (%MEM
). Это поможет выявить, какие процессы потребляют наибольшее количество памяти. -
Проверка заделов в
tmpfs
: Используйте следующую команду, чтобы проверить наличие удалённых, но все ещё занимающих место файла:sudo lsof -n | egrep "/tmp|/dev/shm" | grep deleted
Эта команда перечислит файлы, которые удалены, но память всё ещё занята.
-
Ограничение использования памяти: Если вы наблюдаете, что конкретные приложения создают много временных файлов или занятых ресурсов, рассмотрите возможность их ограничить или настроить.
-
Анализ взаимосвязей процессов: Иногда приложения могут оставлять "медленные утечки" памяти, что также ведёт к росту общего потребления. Мониторинг использования памяти в долгосрочной перспективе может дать подсказки, если проблема повторяется.
-
Система и окружение рабочей среды: Убедитесь, что у вас установлены последние обновления для вашей среды рабочего стола и пакетов в целом. Иногда высокое использование памяти связано с известными проблемами, которые могут быть исправлены актуальными обновлениями программного обеспечения.
Заключение
Высокое использование памяти в вашей системе может быть вызвано несколькими факторами, включая кеширование, фоновую деятельность процессов, χρήση tmpfs
и возможные утечки памяти. Важно провести тщательный анализ активных процессов и временных файлов, чтобы устранить потенциальные причины проблемы. Регулярное наблюдение за состоянием системы и её оптимизация могут значительно улучшить производительность и избежать нехватки памяти в будущем.