我正在自定义嵌入式 Linux 系统上对项目进行质量检查/调试。问题是我们的内存非常紧张,甚至几兆内存也会导致我们的软件出现问题。
我(有时)看到的是,当我们的系统崩溃(软崩溃)时,我们自己的软件不会比平时占用更多的内存。但奇怪的是,Linux 内核 Slab 的 32 字节 Slab 缓存中的对象数量比正常数量高得多:
size-32 103674 103734 32 113 1 : tunables 120 60 0 : slabdata 918 918 0
这是板在正常情况下的样子:
size-32 5400 6554 32 113 1 : tunables 120 60 0 : slabdata 58 58 0
显然这是一个显着的差异。
我知道这里没有太多信息,但这确实是我必须继续提供的所有信息。有什么办法可以确定板坯中含有什么吗?或者它是从哪里分配的或类似的东西?或者也许只是强迫它释放内存?
它在基于 ARM 的主板上运行,具有 64mB 内存,运行 2.6.30 内核。
顺便说一句,这是机器上运行的全部内容。
10711 8778 root R 2980 4.9 0 0.0 top
8745 2740 root S 6452 10.7 0 0.0 sshd: root@ttyp1
9411 2740 root S 6312 10.4 0 0.0 sshd: root@ttyp2
2740 1 root S 3704 6.1 0 0.0 /usr/sbin/sshd
8778 8745 root S 2984 4.9 0 0.0 -sh
10034 9411 root S 2984 4.9 0 0.0 -sh
1 0 root S 2980 4.9 0 0.0 init
9432 1 root S 2848 4.7 0 0.0 runsv ui
1115 1 root S < 1576 2.6 0 0.0 udevd --daemon
989 2 root SW< 0 0.0 0 0.0 [mmcqd]
223 2 root SW< 0 0.0 0 0.0 [kswapd0]
175 2 root SW< 0 0.0 0 0.0 [kblockd/0]
222 2 root SW 0 0.0 0 0.0 [pdflush]
221 2 root SW 0 0.0 0 0.0 [pdflush]
6 2 root SW< 0 0.0 0 0.0 [khelper]
5 2 root SW< 0 0.0 0 0.0 [events/0]
186 2 root SW< 0 0.0 0 0.0 [khubd]
2 0 root SW< 0 0.0 0 0.0 [kthreadd]
220 2 root SW 0 0.0 0 0.0 [khungtaskd]
3 2 root SW< 0 0.0 0 0.0 [ksoftirqd/0]
4 2 root SW< 0 0.0 0 0.0 [watchdog/0]
12 2 root SW< 0 0.0 0 0.0 [async/mgr]
189 2 root SW< 0 0.0 0 0.0 [kseriod]
194 2 root SW< 0 0.0 0 0.0 [kmmcd]
224 2 root SW< 0 0.0 0 0.0 [aio/0]
225 2 root SW< 0 0.0 0 0.0 [unionfs_siod/0]
226 2 root SW< 0 0.0 0 0.0 [nfsiod]
227 2 root SW< 0 0.0 0 0.0 [crypto/0]
895 2 root SW< 0 0.0 0 0.0 [zd1211rw]
899 2 root SW< 0 0.0 0 0.0 [mtdblockd]
972 2 root SW< 0 0.0 0 0.0 [usbhid_resumer]
992 2 root SW< 0 0.0 0 0.0 [rpciod/0]
而且还在增长
size-32 181312 181365 32 113 1 : tunables 120 60 0 : slabdata 1605 1605 0
更新:
这是当前状态:
Mem: 38416K used, 21764K free, 0K shrd, 1836K buff, 11548K cached
CPU: 0.0% usr 0.0% sys 0.0% nic 100% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 0.01 0.02 0.05 1/28 11050
PID PPID USER STAT VSZ %MEM CPU %CPU COMMAND
8745 1 root S 6452 10.7 0 0.0 sshd: root@ttyp1
11045 1 root S 3704 6.1 0 0.0 /usr/sbin/sshd
8778 8745 root S 2984 4.9 0 0.0 -sh
1 0 root S 2980 4.9 0 0.0 init
11050 8778 root R 2980 4.9 0 0.0 top
989 2 root SW< 0 0.0 0 0.0 [mmcqd]
223 2 root SW< 0 0.0 0 0.0 [kswapd0]
175 2 root SW< 0 0.0 0 0.0 [kblockd/0]
222 2 root SW 0 0.0 0 0.0 [pdflush]
221 2 root SW 0 0.0 0 0.0 [pdflush]
6 2 root SW< 0 0.0 0 0.0 [khelper]
5 2 root SW< 0 0.0 0 0.0 [events/0]
186 2 root SW< 0 0.0 0 0.0 [khubd]
2 0 root SW< 0 0.0 0 0.0 [kthreadd]
220 2 root SW 0 0.0 0 0.0 [khungtaskd]
3 2 root SW< 0 0.0 0 0.0 [ksoftirqd/0]
4 2 root SW< 0 0.0 0 0.0 [watchdog/0]
12 2 root SW< 0 0.0 0 0.0 [async/mgr]
189 2 root SW< 0 0.0 0 0.0 [kseriod]
194 2 root SW< 0 0.0 0 0.0 [kmmcd]
224 2 root SW< 0 0.0 0 0.0 [aio/0]
225 2 root SW< 0 0.0 0 0.0 [unionfs_siod/0]
226 2 root SW< 0 0.0 0 0.0 [nfsiod]
227 2 root SW< 0 0.0 0 0.0 [crypto/0]
895 2 root SW< 0 0.0 0 0.0 [zd1211rw]
899 2 root SW< 0 0.0 0 0.0 [mtdblockd]
972 2 root SW< 0 0.0 0 0.0 [usbhid_resumer]
992 2 root SW< 0 0.0 0 0.0 [rpciod/0]
size-32 191069 191083 32 113 1 : tunables 120 60 0 : slabdata 1691 1691 0