Память заполнена, в основном занята & ldquo; shared & rdquo ;, графический интерфейс не отвечает

Есть миллионы таких вопросов, но ни один из них не имеет ответа, который мне подходит. Возможно, моя система просто неправильно настроена.

Моя проблема в том, что после некоторого времени безотказной работы (несколько дней) ОЗУ на моем настольном компьютере (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

Какие-нибудь другие идеи?

1
задан 26 November 2017 в 13:46

2 ответа

Эта линия

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
1
ответ дан 26 November 2017 в 13:46

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

Вы можете узнать, что использует какой объем памяти с помощью 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).

0
ответ дан 26 November 2017 в 13:46

Другие вопросы по тегам:

Похожие вопросы: