Android O 绑定SurfaceFlinger到大核

Android O 绑定SurfaceFlinger到大核

目前的平台是big.LITTLE 架构,遇到一个卡顿问题,怀疑和小核上中断过于频繁有关,所以想把SF绑定到大核看看

首先top获取SurfaceFlinger的pid


707 system -2 -20 98M 24M 6.8M S 17.0 0.4 541:00.94 surfaceflinger

通过taskset 绑定
adb shell
$ taskset -p f0 707  //f0 是掩码 11110000,大核4-7都可以运行

但是会出错

pid 707's current affinity mask: f
taskset: failed to set 707's affinity: Invalid argument

也就是SF目前的affinity mask是f,只能运行在小核的意思,肯定是被限制了,确认cpuset信息

SurfaceFlinger的cpuset
首先找到该的cpuset分组
$ cat /proc/707/cpuset
/system-background   //属于system-background分组
$ cd /dev/cpuset/system-background/
查看CPU限制情况
$ cat /dev/cpuset/system-background/cpus
0-3 //限制在小核
$ /dev/cpuset/system-background/tasks 也能看到707进程
解决cgroup限制问题
因为forground 的cpus是0-7,所以可以把sf从system-background迁到forground分组
$ echo 707 > /dev/cpuset/foreground/tasks
成功绑定到大核
$ taskset -p f0 707
pid 707's current affinity mask: ff
pid 707's new affinity mask: f0

猜你喜欢

转载自blog.csdn.net/memory01/article/details/81346557
今日推荐