Общая память занимает гигабайты
У меня проблемы с огромным потреблением оперативной памяти неизвестным лицом. Это не указано в top
, но объем доступной памяти со временем уменьшается, и отключение всех программ ничего не делает. В настоящее время это 3,6 ГиБ, но постепенно становится все хуже. Вероятно, в результате система не способна выгрузить много памяти, после выгрузки примерно 1,5 ГиБ памяти она переходит к перерасходу.
Я использовал free -m
Команда, чтобы получить этот результат:
total used free shared buff/cache available
Mem: 7875 3517 388 3595 3969 481
Swap: 9536 500 9036
Кажется, что общая память занимает 3,5 гигабайта.
Это то, что я получаю, когда бегу df -h
:
udev 3,9G 0 3,9G 0% /dev
tmpfs 788M 80M 709M 11% /run
/dev/sdb6 23G 18G 4,1G 81% /
tmpfs 3,9G 168M 3,7G 5% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/sdb1 356M 76M 281M 22% /boot/efi
/dev/sdb8 37G 33G 2,0G 95% /home
/dev/sda2 746G 269G 477G 37% /data
/dev/sda3 184G 132G 43G 76% /lindata
tmpfs 788M 84K 788M 1% /run/user/1000
/home/dugi/.Private 37G 33G 2,0G 95% /home/dugi
/proc/meminfo/
содержит это, кажется, что это действительно что-то в общей памяти:
MemTotal: 8064776 kB
MemFree: 318880 kB
MemAvailable: 493992 kB
Buffers: 36784 kB
Cached: 3960388 kB
SwapCached: 32776 kB
Active: 3732236 kB
Inactive: 3539036 kB
Active(anon): 3562316 kB
Inactive(anon): 3381848 kB
Active(file): 169920 kB
Inactive(file): 157188 kB
Unevictable: 732 kB
Mlocked: 732 kB
SwapTotal: 9765884 kB
SwapFree: 9253044 kB
Dirty: 516 kB
Writeback: 0 kB
AnonPages: 3269552 kB
Mapped: 493840 kB
Shmem: 3670056 kB
Slab: 264136 kB
SReclaimable: 136840 kB
SUnreclaim: 127296 kB
KernelStack: 23296 kB
PageTables: 82464 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 13798272 kB
Committed_AS: 20782644 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 831488 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 1783952 kB
DirectMap2M: 6498304 kB
DirectMap1G: 0 kB
Тем не менее, когда я перечисляю вещи в общей памяти, используя ipcs --human
Я получаю только несколько сотен мегабайт удаленной памяти:
------ Message Queues --------
key msqid owner perms size messages
------ Shared Memory Segments --------
key shmid owner perms size nattch status
0x00000000 268959744 dugi 600 386,8K 2 dest
0x00000000 265879554 dugi 600 512K 2 dest
0x00000000 557059 dugi 600 16M 2 dest
0x00000000 6258692 dugi 600 1K 2 dest
0x00000000 271974405 dugi 600 512K 2 dest
0x00000000 31784966 dugi 600 16M 2 dest
0x00000000 819207 dugi 600 16M 2 dest
0x00000000 274464776 dugi 600 512K 2 dest
0x00000000 28704777 dugi 600 512K 2 dest
0x00000000 274694154 dugi 600 512K 2 dest
0x00000000 264372236 dugi 600 512K 2 dest
0x00000000 272465933 dugi 600 4M 2 dest
0x00000000 145522702 dugi 600 16M 2 dest
0x00000000 274563088 dugi 600 7,6M 2 dest
0x00000000 113934353 dugi 600 74K 2 dest
0x00000000 215908370 dugi 600 66,2K 2 dest
0x00000000 35913747 dugi 600 512K 2 dest
0x00000000 274595860 dugi 600 7,6M 2 dest
0x00000000 149946389 dugi 600 512K 2 dest
0x00000000 273842198 dugi 600 128M 2 dest
0x00000000 115015703 dugi 600 29,3K 2 dest
0x00000000 150044696 dugi 600 64M 2 dest
0x00000000 143425561 dugi 600 32,5K 2 dest
0x00000000 150011930 dugi 600 1M 2 dest
0x00000000 149749788 dugi 600 512K 2 dest
0x00000000 149848094 dugi 600 64M 2 dest
0x00000000 149815327 dugi 600 1M 2 dest
0x00000000 166363168 dugi 700 2,2M 2 dest
0x00000000 166395937 dugi 600 384K 2 dest
0x00000000 166428706 dugi 600 512K 2 dest
0x00000000 166461475 dugi 700 53,5K 2 dest
0x00000000 166625316 dugi 700 376,6K 2 dest
0x00000000 166658088 dugi 700 13,5K 2 dest
0x00000000 166690857 dugi 700 88,7K 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
Если я использую ipcs -m | awk '{sum+=$5} END{print sum}'
Это говорит, что есть 366790104 байтов, что составляет 366 МБ. Это гораздо меньше, чем это занимает.
Я использую Ubuntu 16.04, обновлённую до 17.04. Проблема была там уже до обновления. Программы, которые я использую почти постоянно: QtCreator, Vivaldi, evince, gcc, и обычные, такие как gnome shell, nautilus или gedit.
Память никогда не выгружается, я не могу найти способ найти причину или просто удалить ее один раз в день, принудительно поменять ее или что-то в этом роде, я не хочу перезагружать компьютер несколько раз в неделю. Есть идеи, в чем может быть проблема?
РЕДАКТИРОВАТЬ: я видел, как это высосало около 120 мегабайт памяти без каких-либо известных причин. В то время у меня был Vivaldi (который широко использует разделяемую память), потому что я подозревал, что это вызывает проблему. Единственное, что я сделал в то время, - это то, что открывал Firefox в первый раз после последнего перезапуска (только Firefox не может быть причиной, потому что я не запускал его до того, как эти гигабайты были заполнены).
РЕДАКТИРОВАТЬ #2: перезапуск X-сервера удаляет содержимое из общей памяти, но это не решение, потому что X-сервер - это именно то, что я не хочу перезапускать (gnome-shell --replace не помогает). Если я правильно помню уроки об общей памяти, это означает, что память захватывается чем-то, связанным с X-сервером или Gnome-shell, который корректно освобождает ее при выходе, но никогда не стирает ее во время работы (какая-то поломанная сборка мусора?).
Изменить #3: Интересно, связано ли это с этим: https://github.com/mpv-player/mpv/issues/3931
1 ответ
Может быть, сьемстат покажет памяти хоггера (ов). Использование:
sudo apt-get install smemstat
sudo smemstat