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

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