Android Vmstat详解及问题快速定位 - freshui

Download Report

Transcript Android Vmstat详解及问题快速定位 - freshui

1
Android Vmstat详解及问题快速定位
 简介
 信息详解
 问题现象及分析
2
简介
 Vmstat: Virtual Meomory Statistics(虚拟内存统计)
 可同时对系统的虚拟内存、进程、CPU活动情况进行监
视
 android toolbox提供的众多工具中的一个
 统计一定时间内,系统/proc文件系统下的 meminfo、
stat和vmstat信息并做归总整理、统计,以直观明了的
信息以供用户或开发人员检测系统状态。
 定性分析。具体问题需要根据现象结合其他方法发现并
解决
3
简介
 使用方法
Usage:
-n
-d
-r
vmstat [ -h ] [ -n iterations ] [ -d delay ] [ -r header_repeat ]
iterations
How many rows of data to print.
delay
How long to sleep between rows.
header_repeat How many rows to print before repeating
the header. Zero means never repeat.
-h
Displays this help screen.
4
简介
共分为procs(进程) memory(内存) system(系统)和
cpu四个部分统计
5
信息详解
 Procs
 r: (running)运行队列中的进程数
 b: (blocked)被阻塞的进程数,通常是进程等待IO动作
6
信息详解
 Memory(单位kB):
 free:系统空闲可用内存数
 mapped:
设备和文件映射的内存大小
 anon:未映射的内存大小
 slab:内核数据缓存的大小(目前系统用的是slob,这个
值监控不了,建议修改成slab)
7
信息详解
 system:
 in: interrupts,系统产生的中断数。
 cs: context switch,系统的上下文切换次数。
 flt: major page faults,系统产生的缺页错误次数。
8
信息详解
 cpu:
 us: user time 用户部分消耗的CPU时间百分比
 ni: 被提高优先级的进程在用户模式下的执行CPU时间
百分比
 sy: system time 系统内核部分消耗的CPU时间百分比
 id: idle time 系统空闲时间百分比
 wa: IO wait CPU在等待IO完成时间占比
 ir: interrupt 系统中断服务占比CPU百分比
9
运行进程队列(r)
 现象
 运行队列进程数大于1(即CPU个数)
 问题
 说明系统运行的比较慢或系统比较忙,有线程在排队等
待运行。
 问题定位及分析方法
 此时要根据运行环境/loading及系统整体状况(如频率设
置是否有问题,系统中断是否过多,是不是跑了特别耗
费资源的程序等),分析系统是否正常
10
阻塞进程队列(b)
 现象
 运行队列进程数大于0
 问题
 如果该值过大,等待IO的进程可能有很多
 问题定位及分析方法
 需要确定运行场景,是否有过多的文件操作(如浏览网
页,市场下载安装apk等),是否由于文件读写过慢或文
件缓存被频繁刷出(如某个模块请求大量内存,刷出了
文件cache)导致,文件缓存是否太小(可通过 cat
/proc/meminfo 看cached值)?
11
 空闲内存(free)
 现象
 该值忽大忽小,或比较小(如8M以下)
 问题
 可能有潜在的文件cache被换出
 问题定位及分析方法
 Android对Memory的使用,和PC上不一致,Android是尽量
将memory都利用起来,当内存不够时,然后由oom killer来
根据优先级将不太重要的后台cached进程杀掉以释放内存。
Free值不是越大越好,而是在内存最大利用率时最好。当该
值忽大忽小时,需要注意是否有文件cache被清理出来,文件
cache对系统性能和流畅性影响很大。
12
中断个数(in)
 现象
 在系统运行过程中,该值变化很大
 问题
 可能系统中断过多
 问题定位及分析方法
 正常主界面静置状态下,中断数在500左右,下载和玩
游戏时,在2000以下,如果比这个值明显高很多(如高
出一倍以上),需要检查一下哪个模块是否产生了太多
中断,查看方法是观察 /proc/interrupts 下的中断增长
情况。
13
上下文切换(cs)
 现象
 在系统运行过程中,该值变化很大
 问题
 可能是系统中断过多
 问题定位及分析方法
 先定位中断问题,若中断没有问题,需要确认调度策略
及时钟中断是否有影响。
14
用户空间CPU时间占比(us)
 现象
 该值较大
 问题
 可能用户进程太忙或死循环
 问题定位及分析方法
 结合top命令查看,到底是哪个进程或现场太忙了,如
果占比太高(如95%或以上),需要查找该进程代码中是
否陷入死循环。
15
 内核空间CPU时间占比(sy)
 现象
 该值较大
 问题
 可能系统比较忙或使用过多的忙等待
 问题定位及分析方法
 该值一般不会太大,很少有超过20%的情况,如果过高
需要检查驱动或内核模块,是否代码实现有问题(如使
用过多忙等待)。
16
 CPU空闲时间占比(id)
 现象
 该值较小或为0
 问题
 系统比较忙
 问题定位及分析方法
 需要综合其他几个CPU占比,综合考虑;该值若大,说
明系统有冗余,此时系统响应应该会比较好。
17
CPU等待IO时间占比(wa)
 现象
 该值大于0
 问题
 系统的IO开销较大,系统在等待IO
 问题定位及分析方法
 系统在等待IO的时间内CPU无事可做,只能等待IO完成
才能继续工作,该值若大,对系统流畅性体验的冲击很
大,
 如果该值达到5%,可能感觉到很明显的卡顿现象
 这个问题不是绝对的,还要看使用情况,比如在做文件
读写测试,虽然IOW很高,但可能对系统冲击就比较小
18
 中断服务CPU时间占比(ir)
 现象
 该值较大
 问题
 中断占比太高,消耗资源,影响系统响应
 问题定位及分析方法
 结合中断次数,定位是由于中断过多还是中断处理太长
导致,需要进一步的分析。在正常情况下,该值极少能
达到1%,基本上看不到超过1%的情况
19
 Thanks!
20