这里介绍进程抢占方面的问题
2.进程抢占分析 (1)Android4.4 renice 命令 USAGE: renice [[-r] [-t TYPE] priority pids …] [-g pid] r 实时进程优先等级; t 切换调度器”RR”:SCHED_RR; “FIFO”:SCHED_FIFO; “NORMAL”:SCHED_OTHER; “OTHER”:SCHED_OTHER; g 打印当前进程的调度器类型 renice -r [prio] [pids] 动态更改实时进程优先级 renice -r -t [type] [prio] [pids] 动态更改普通进程提为实时进程,并设置进程优先级 renice -g pids 查看进程的调度器 renice [prio] [pids] 动态降低普通进程的优先级 busybox-smp renice [nice] -p [pids] 动态提升普通进程的优先级 调整进程优先级时,PR{Priority},NI{nice}。PR范围-20~19越小,进程优先权就越高,换算公式为:PR(new) = PR(old) + NI范例:
a.动态更改实时进程优先级
b.动态更改普通进程提为实时进程,并设置进程优先级
c. 查看进程的调度器
d. 动态降低普通进程的优先级
e. 动态提升普通进程优先级
(2)Android7.0 renice 命令usage: renice [-gpu] -n increment ID ..
renice -n [nice] -p [pids] 动态调整进程nice值 renice -n [nice] -g [pids] 动态调整进程空间所有线程的nice值范例: a.调整进程的nice值 renice -n -8 -p 1729
b.调整进程中所有线程的nice值 renice -n -8 -g 1729
c.通过ps -p命令或者top命令观察是否生效
(3)Android7.0 taskset命令 usage: taskset [-ap] [mask] [PID | cmd [args…]] -p Set/get the affinity of given PID instead of a new command. -a Set/get the affinity of all threads of the PID. mask 十六进制,需要绑定的cpu对应 bitmap mask,cpu0 mask 为1,cpu1 mask 为2,cpu2 mask 为4,cpu0-1 mask为1+2=3…..范例: a.确保需要绑定的cpu处于online状态 echo 0 > /sys/kernel/autohotplug/enable (如果平台使用了cpu-hotplug开关核策略,首先需要关闭) echo 1 >/sys/devices/system/cpu/cpuX/online (如果平台4个cpu,X为0,1,2,3)
b.对进程组所有的线程设置cpu亲和性 taskset -ap 1 1729 (绑定1729组所有线程到cpu0) taskset -ap 3 1729 (绑定1729组所有线程到cpu0-1) taskset -ap 6 1729 (绑定1729组所有线程到cpu1-2) taskset -ap c 1729 (绑定1729组所有线程到cpu2-3) taskset -ap e 1729 (绑定1729组所有线程到cpu1-3)
c.对单个线程设置cpu亲和性 taskset -p 1 1729 (绑定进程1729到cpu0) taskset -p 3 1729 (绑定进程1729到cpu0-1) taskset -p 6 1729 (绑定进程1729到cpu1-2) taskset -p c 1729 (绑定进程1729到cpu2-3) taskset -p e 1729 (绑定进程1729到cpu1-3)
d. 观察cpu亲和性状态 Busybox-smp top -d 1 | grep 1729 (观察进程1729的迁移变化)
(4)Android top命令 Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ] -m num Maximum number of processes to display. -n num Updates to show before exiting. -d num Seconds to wait between updates. -s col Column to sort by (cpu,vss,rss,thr). -H Show threads instead of processes.范例:
通过top观察进程和线程负载变化
top -d 1 -m 12 -t -H
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Android 系统调试技巧(3)进程抢占分析 https://www.yhzz.com.cn/a/12786.html