Android 系统调试技巧(3)进程抢占分析
1. 前言
这里介绍进程抢占方面的问题
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
- 分享
- 举报
-
浏览量:5062次2021-03-29 14:17:09
-
浏览量:4638次2021-03-30 14:17:51
-
浏览量:6308次2021-03-29 11:34:27
-
浏览量:5729次2021-03-30 14:44:45
-
浏览量:5296次2020-10-15 15:43:43
-
浏览量:4852次2021-04-12 15:49:26
-
浏览量:6680次2020-12-19 15:34:44
-
浏览量:5125次2020-12-19 16:14:06
-
浏览量:5084次2022-07-24 15:47:30
-
浏览量:2645次2022-09-30 16:48:25
-
浏览量:3850次2021-04-02 15:53:41
-
浏览量:822次2023-08-30 10:00:35
-
浏览量:8407次2020-11-26 14:22:19
-
浏览量:5734次2021-03-31 15:36:17
-
浏览量:2887次2020-11-10 14:23:32
-
浏览量:6552次2021-04-15 14:30:22
-
浏览量:4607次2021-04-15 14:56:16
-
浏览量:4814次2021-03-26 16:03:04
-
浏览量:4876次2021-03-26 15:39:50
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明