我有一个带有 256MB RAM 的小型 Linux 系统。我有点困惑,RAM 可能会丢失在哪里?它运行旧的 linux 内核 2.6.38,我无法升级它(某些特定的 ARM 板)。
SHM 和所有 tmpfs 挂载的文件系统几乎为空 shmem:448kB
一切都被 active_anon 页面消耗,但正在运行的进程与此不对应。 Total_vm 的总和仅为 90MB,并且存在重复、共享内存、未分配内存...但 active_anon 报告为 235MB。为什么?我该如何解决这个问题?内核中是否存在内存泄漏?
这是相关的dmesg
Mem-info:
Normal per-cpu:
CPU 0: hi: 90, btch: 15 usd: 14
active_anon:60256 inactive_anon:67 isolated_anon:0
active_file:0 inactive_file:185 isolated_file:0
unevictable:0 dirty:0 writeback:0 unstable:0
free:507 slab_reclaimable:120 slab_unreclaimable:463
mapped:108 shmem:112 pagetables:217 bounce:0
Normal free:2028kB min:2036kB low:2544kB high:3052kB active_anon:241024kB inactive_anon:268kB active_file:0kB inactive_file:740kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:260096kB mlocked:0k
lowmem_reserve[]: 0 0
Normal: 37*4kB 139*8kB 42*16kB 1*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2028kB
305 total pagecache pages
65536 pages of RAM
622 free pages
1976 reserved pages
404 slab pages
393 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss cpu oom_adj oom_score_adj name
[ 713] 0 713 666 40 0 0 0 busybox
[ 719] 0 719 634 18 0 0 0 busybox
[ 725] 0 725 634 15 0 0 0 busybox
[ 740] 0 740 654 19 0 0 0 inetd
[ 752] 0 752 634 17 0 0 0 ifplugd
[ 761] 0 761 634 21 0 0 0 busybox
[ 790] 0 790 4297 110 0 0 0 app
[ 792] 0 792 635 15 0 0 0 getty
[ 812] 0 812 634 16 0 0 0 exe
[ 849] 101 849 630 57 0 0 0 lighttpd
[ 850] 101 850 3005 218 0 0 0 php-cgi
[ 851] 101 851 3005 218 0 0 0 php-cgi
[ 3172] 0 3172 72156 59739 0 0 0 app
[ 3193] 0 3193 675 23 0 0 0 ntpd
[ 4003] 0 4003 634 15 0 0 0 ntpd_prog
[ 4004] 0 4004 634 15 0 0 0 hwclock
[ 4005] 0 4005 634 20 0 0 0 hwclock
Out of memory: Kill process 3172 (app) score 912 or sacrifice child
Killed process 3172 (app) total-vm:288624kB, anon-rss:238684kB, file-rss:272kB
这是已安装文件系统的列表。根文件系统是 MTD 闪存上的读/写 YAFFS2。
rootfs on / type rootfs (rw)
/dev/root on / type yaffs2 (rw,relatime)
none on /proc type proc (rw,relatime)
none on /sys type sysfs (rw,relatime)
mdev on /dev type tmpfs (rw,nosuid,relatime,size=10240k,mode=755)
none on /proc/bus/usb type usbfs (rw,relatime)
none on /dev/pts type devpts (rw,relatime,mode=622)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)
none on /tmp type tmpfs (rw,relatime,size=102400k,mode=777)
none on /run type tmpfs (rw,relatime,size=10240k,mode=755)
答案1
Total_vm 被我计算得很糟糕,OOM 报告是正确的。app
已分配 59739 个页面,即 233MB。所以,这就是OOM的正确原因。