linux 内存分析

内存分析:
条件:开移动侦测,车道校准,停车监控,智能算法,后拉uvc
执行cat /proc/meminfo:
MemTotal:          66204 kB
MemFree:           25356 kB   //当前剩余内存为24M
Buffers:            1788 kB   //该部分对于系统来说是占用的
Cached:             7380 kB   //该部分对于系统来说是占用的
Active:            22384 kB
Inactive:           1260 kB
Active(anon):      16072 kB
Inactive(anon):       48 kB
Active(file):       6312 kB
Inactive(file):     1212 kB
Unevictable:        1588 kB
LowTotal:          66204 kB
LowFree:           25356 kB
AnonPages:         16064 kB
Mapped:             7420 kB
Shmem:                56 kB
Slab:               4416 kB
SReclaimable:       1416 kB
SUnreclaim:         3000 kB
KernelStack:         808 kB
PageTables:          360 kB
CommitLimit:       33100 kB
Committed_AS:      25560 kB
VmallocTotal:     892928 kB
VmallocUsed:       45068 kB
VmallocChunk:     610664 kB

执行root@android:/ # ./busybox free 得到结果如下:
root@android:/ # ./busybox free -m                                            
             total         used         free       shared      buffers
Mem:            64           39           24            0            1
-/+ buffers:                 38           26
Swap:            0            0         0

从以上结果可知当前系统已使用内存为:约为39M  剩余内存为 24M

3,接下来执行统计所有进程消耗的内存:
  PID      Vss      Rss      Pss      Uss  cmdline
   59   82712K   31828K   31617K   31508K  /system/bin/mediaserver   //内存消耗大户,潜在优化对象
   58    3700K    3100K    2889K    2780K  /system/bin/newcdr
  347     408K     408K     303K     284K  procrank
   56     416K     416K     290K     264K  /system/bin/vold
   65     348K     348K     256K     240K  /system/bin/sh
   52     332K     332K     251K     208K  /init
   61     196K     196K     192K     192K  /sbin/adbd
   60     236K     236K     133K     112K  /system/bin/debuggerd
   51     188K     188K     115K      80K  /sbin/ueventd
   55     196K     196K     110K      96K  /system/bin/servicemanager
    1     180K     180K      99K      56K  /init
                          ------   ------  ------
                          36259K   35820K  TOTAL
       总共消耗:34.98M
      
那么问题来了:系统总的内存USED为39M ,进程消耗内存为:34.98M 中间有4M的差值?

我们在看cat/meminfo/这项里的Slab、PageTables这两项,首先slab是内核为了高性能每个需要重复使用的对象都会有个池,这个slab池会cache大量常用的对象,所以会消耗大量的内存
slab:4416 kB
命令查看:
echo `cat /proc/slabinfo |awk 'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print sum/1024/1024}'` MB
PageTables:是系统boot的时候就会根据内存大小算出来分配出去的,18内核是1.56%左右,32内核由于cgroup的原因会在2.3%
命令查看:
echo `grep PageTables /proc/meminfo | awk '{print $2}'` KB

总结:内存的去向主要有3个:1. 进程消耗。 2. slab消耗 3.pagetable消耗


SDV 内存分析(物理内存128M) 测试条件 xxxdroid 内存项   
启动应用未录像                1   linux系统内核保留 约6.8M 
2 ION 内存 80M 
3 mediaserver 多媒体 3.97M(4060K) 
5 logger 0.375M (384K) 
6 TCP/SOCKET 74K 
7 Buffers 12K 
8 sdv 应用 6.05 M (6188K) 
9 Cached 4.63M(4744k) 
10 init 184K 
11 ueventd 188K 
12 servicemanager 320K 
13 vold 824K 
14 debuggerd 388K 
15 adbd 176K 
16 standbyservice 1604K 
17 sh 820K  
18 Slab 5412K 
19 PageTables: 336K 
20 MemFree 约18.7M (19068K) 


测试条件: SDV 物理内存大小: 128M byte,通过
调试方法:在commandline中 memblock=debug
   
memory layout 内存范围 大小 byte 
kernel _stext代码段、data段   [0x000000400081c0-0x000000405efe57] 5.905M(0x5e7c98) 
kernel initrd 段   [0x00000041000000-0x00000041037fe0] 224K 
页表内存   [0x00000040004000-0x00000040007fff] 16K 
android RAM_CONSOLE   [ 41f20800-41f307ff] 64K 
sys_config.fex  [0x00000041f00000-0x00000041f20000] 128K 
STANDBY_MEM_SIZE  [0x00000041f20000-0x00000041f20800] 2K 
alloc_base_nid   20.1K(0x5060) 
中断向量   4K 
bootmem bitmap   56KB 
pmd表内存   8736byte 
fixmap   896 kB 
ION   80M 
    


cat proc/meminfo 

top 

cat proc/slabinfo



 echo f > /proc/sysrq-trigger 


root@camdroid:/ # [   38.407329] [VFE]vfe_close
[   38.410536] [h22_mipi Raw]CSI_SUBDEV_PWR_OFF!
[   38.415468] [VFE]mclk off
[   38.456069] [VFE]..........................vfe clk close!.......................
[   38.464462] [VFE]vfe_close end
[   44.693656] ****************Set_Rset_Cap=2***********
[   75.998831] charger->usb_valid = 0
[   76.002730] set usb vol-lim to 4000 mV, cur-lim to 0 mA


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值