首页 > 技术知识 > 正文

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.动态更改实时进程优先级 Android 系统调试技巧(3)进程抢占分析

b.动态更改普通进程提为实时进程,并设置进程优先级 Android 系统调试技巧(3)进程抢占分析1

c. 查看进程的调度器 Android 系统调试技巧(3)进程抢占分析2

d. 动态降低普通进程的优先级 Android 系统调试技巧(3)进程抢占分析3

e. 动态提升普通进程优先级 Android 系统调试技巧(3)进程抢占分析4

(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命令观察是否生效 Android 系统调试技巧(3)进程抢占分析5

(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)进程抢占分析6

猜你喜欢