不明なエンティティによるRAMの大量消費に問題があります。 top
にはリストされていませんが、使用可能なメモリ量は時間とともに減少し、すべてのプログラムをオフにしても何も起こりません。現在、3.6 GiBですが、徐々に悪化しています。おそらくその結果、システムは多くのメモリをスワップアウトすることができず、約1.5 GiBのメモリをスワップアウトした後、スラッシングに進みます。
この結果を得るために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 MB)があると表示されます。これは、占有しているものよりはるかに少ないです。
17.04にアップグレードしたUbuntu 16.04を使用しています。問題は、アップグレード前にすでに存在していました。私がほとんど常に使用しているプログラムは、QtCreator、Vivaldi、evince、gcc、およびgnome Shell、nautilus、geditなどの通常のプログラムです。
メモリがスワップアウトされることはありません。原因を特定したり、1日に1回だけ削除したり、強制的にスワップしたりする方法をGoogleで検索することはできません。何が問題になる可能性がありますか?
編集:私はそれが知られていない理由で約120メガバイトのメモリを消費するのを見ました。問題を引き起こしているのではないかと疑っていたため、その時点でVivaldi(共有メモリを大量に使用する)をシャットダウンしました。そのとき私がしたことは、最後の再起動後に初めてFirefoxを開いたことだけです(ギガバイトがいっぱいになる前に実行しなかったため、Firefoxだけでは原因になりません)。
編集#2:Xサーバーを再起動すると共有メモリから内容が削除されますが、Xサーバーはまさに再起動したくないものであるため、それは解決策ではありません(gnome-Shell --replaceは役に立ちません)。共有メモリに関するレッスンを正しく覚えている場合、これはメモリがXサーバーまたはGnome-Shellに関連する何かによって取得され、終了時に正しく解放されますが、実行中に決して消去されないことを意味します(何らかの破損したガベージコレクション? )。
編集#3:これはこれに関連するのだろうか: https://github.com/mpv-player/mpv/issues/3931
たぶん、smemstatがメモリホガーを表示するでしょう。つかいます:
Sudo apt-get install smemstat
Sudo smemstat