Есть миллионы таких вопросов, но ни один из них не имеет ответа, который мне подходит. Возможно, моя система просто неправильно настроена.
Моя проблема в том, что после некоторого времени безотказной работы (несколько дней) ОЗУ на моем настольном компьютере (Ubuntu 16.04 LTS) полностью заполняется, и графический интерфейс пользователя начинает отставать и перестает отвечать на запросы.
Вывод free
:
total used free shared buff/cache available
Mem: 16326212 5633804 395072 10026328 10297336 184458
Swap: 0 0 0
Что не помогает, так это:
sync; sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
=> практически без изменений в выше числа
swapoff -a
=> без изменений (своп все равно отключен)
Поразительная разница во всех выходах free
, публикуемых в связанных вопросах, заключается в том, что большая часть моей памяти занята по shared
.
Однако, ipcs -m | awk '{sum+=$5} END{print sum}'
дает число только около 213 МБ.
Возможно, связано: у меня есть несколько путей, привязанных к RAM-диску (из /etc/fstab
):
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0
, но там, похоже, нет никаких проблем:
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 22M 1.6G 2% /run
tmpfs 1.6G 132K 1.6G 1% /run/user/1000
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
tmpfs 7.8G 12M 7.8G 1% /var/tmp
tmpfs 7.8G 1.7M 7.8G 1% /var/log
tmpfs 7.8G 143M 7.7G 2% /dev/shm
tmpfs 7.8G 8.0K 7.8G 1% /var/log/apt
tmpfs 7.8G 878M 7.0G 12% /tmp
...
кроме, возможно,
udev 7.8G 7.8G 0 100% /dev
Какие-нибудь другие идеи?
Эта линия
udev 7.8G 7.8G 0 100% /dev
действительно была отличительной чертой проблемы. Это крепление никогда не должно быть заполнено на 100%. Прочитав Высокое использование памяти SHMem! я обнаружил, что bootchart
заполнил это полностью. После удаления bootchart
и удаления /dev/.bootchart
все возвращается к нормальной жизни, включая использование памяти shared
:
total used free shared buff/cache available
Mem: 16326212 3258332 7929904 1177272 5137976 10981178
Swap: 0 0 0
Вам необходимо выяснить, что заполняет память вашего компьютера. Первое, что приходит мне в голову, это браузер. Современные браузеры используют безумные объемы памяти.
Вы можете узнать, что использует какой объем памяти с помощью smem
. Здесь smem
упаковано для Ubuntu 17.x здесь: https://packages.ubuntu.com/artful/smem . Это зависит только от python
и python-matplotlib
, которые доступны в Ubuntu 16.x. Таким образом, вы должны иметь возможность загрузить пакет smem и установить его с помощью dpkg -i smem_1.4-2_all.deb
.
После установки вы можете просто запустить smem
и посмотреть, какой процесс использует сколько памяти.
Как только вы узнаете, что заполняет память, вы можете просто остановить этот процесс. F.ex. помогает закрытие вкладок в браузере. Также остановка и запуск браузера могут помочь освободить часть памяти.
Еще одна вещь - вы должны включить обмен. Своп расширит вашу доступную память.
Еще одна вещь - поскольку - по-видимому - вы не используете swap, то «графический интерфейс начинает отставать и перестает отвечать на запросы / становится непригодным для использования», вероятно, вызвано не переполнением памяти, а каким-либо процессом, обращающимся к диску. на мой взгляд, много работы (резервное копирование, перестройка базы данных mlocate) или чрезмерное использование процессора. Вы должны быть в состоянии диагностировать «слишком большую загрузку ЦП» с помощью top
и слишком большую загрузку ввода-вывода с помощью iotop
(apt-get install iotop
).