저는 맞춤형 임베디드 Linux 시스템에서 프로젝트를 QA/디버깅하고 있습니다. 문제는 메모리가 매우 부족하다는 것입니다. 심지어 몇 메가바이트의 메모리라도 소프트웨어에 문제를 일으킬 수 있습니다.
내가 (때때로) 보는 것은 우리 시스템이 충돌할 때(소프트 충돌), 우리 자신의 소프트웨어가 평소보다 더 많은 메모리를 차지하지 않는다는 것입니다. 그러나 이상하게도 Linux 커널 슬랩의 32바이트 슬랩 캐시에 있는 개체 수가 평소보다 훨씬 많습니다.
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
분명히 이것은 중요한 차이입니다.
여기에 정보가 많지 않다는 것을 알고 있지만 이것이 제가 계속해야 할 전부입니다. 석판에 무엇이 있는지 확인할 수 있는 방법이 있나요? 아니면 어디서 할당되나요? 아니면 강제로 메모리를 해제하도록 할까요?
64mB 메모리를 갖춘 ARM 기반 마더보드에서 실행되며 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