Общая память занимает гигабайт

У меня проблемы с огромным потреблением RAM неизвестным объектом. Он не указан в 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.

Память никогда не поменялась, я не могу найти способ найти вызывать или просто удалять его один раз в день или принудительно менять его или что-то в этом роде, я не хочу перезапускать компьютер несколько раз в неделю. Любые идеи, что может быть проблемой?

EDIT: Я видел, как он сосал около 120 мегабайт памяти по неизвестной причине. В то время у меня был Vivaldi (который широко использует разделяемую память), потому что я подозревал, что это вызвало проблему. Единственное, что я сделал в то время, это открытие Firefox впервые после последнего перезапуска (только Firefox не может быть причиной, потому что я не запускал его до того, как эти гигабайты были заполнены).

EDIT # 2: Перезапуск X-сервера удаляет материал из разделяемой памяти, но это не решение, потому что X-сервер - это именно то, что я не хочу перезапускать (gnome-shell -replace не помогает). Если я правильно помню уроки об общей памяти, это означает, что память захватывается чем-то, связанным с X-сервером или Gnome-оболочкой, который правильно освобождает его при выходе, но никогда не стирает его во время работы (какая-то сломанная сборка мусора? ).

Редактировать # 3: Интересно, связано ли это так: https://github.com/mpv-player/mpv/issues/3931

2
задан 16 February 2018 в 11:48

2 ответа

Возможно, smemstat покажет память hogger (s). Использование:

sudo apt-get install smemstat sudo smemstat
2
ответ дан 18 July 2018 в 00:07

Возможно, smemstat покажет память hogger (s). Использование:

sudo apt-get install smemstat sudo smemstat
2
ответ дан 24 July 2018 в 17:09
  • 1
    После перезапуска еще недостаточно пропущенной разделяемой памяти, поэтому я не могу сказать окончательно, если smemstat помог и что это такое. Общее количество, которое он показывает, по некоторым причинам намного превосходит количество используемой разделяемой памяти, объявленной в free, я думаю, что либо какая-то память указана несколько раз, либо нераспределенная разделяемая память не отображается. Я отвечу через некоторое время, чтобы сказать, было ли это причиной. – Dugi 2 January 2018 в 23:15
  • 2
    Хорошо, поэтому я заметил, что это происходит. У меня не было проблем в течение долгого времени, но потом это случилось снова. 1456 MiB в общей памяти, smemstat перечисляет только незаметные вещи, которые составляют менее 2 гигабайт в целом, что сильно отличается от того, что показывает free. Вы уверены, что smemstat делает трюк? Вот что я получил: pastebin.com/MhZAWtWU – Dugi 16 February 2018 в 11:38

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

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