android核绑定cpuset配置与检测进程所在核cpuset方法

一、开机阶段

开机有如下阶段。抛开开机动画需要的audio、surfaceflinger等进程,大部分android程序是在/data分区加载完整以后开始加载。所以cpuset的配置可以在 post-fs-data之后。注意,init.rc的不同阶段脚本都可能覆盖前面配置的cpuset。配置好检查与预期不一致,则要配置被重置了。

  1. early-init

a) wait_for_coldboot_done

b) property_init

c) keychord_int

d) console_init

e) set_init_properties

  1. init

  2. early-fs

  3. fs

  4. post-fs

  5. post-fs-data

f) property_service_init

g) signal_init

h) check_startup

  1. early-boot

  2. boot

  3. service

二、配置cpuset

本例策略如下:

开机阶段:

write /dev/cpuset/top-app/cpus 0-5

write /dev/cpuset/foreground/cpus 0-5

write /dev/cpuset/system-background/cpus 0-5

write /dev/cpuset/background/cpus 4-5

开机完成后:

write /dev/cpuset/top-app/cpus 0-3

write /dev/cpuset/foreground/cpus 0-3

write /dev/cpuset/system-background/cpus 3-5

配置方法:

修改init.rc

复制代码
on early-boot
    write /dev/cpuset/top-app/cpus 0-5
    write /dev/cpuset/foreground/cpus 0-5
    write /dev/cpuset/foreground/boost/cpus 0-5
    write /dev/cpuset/system-background/cpus 0-5
    write /dev/cpuset/background/cpus 4-5

....

复制代码
on property:sys.boot_completed=1
    write /proc/sys/kernel/printk 4
    # init.vendor.rc can override below at on property:sys.boot_completed if needed
    write /dev/cpuset/top-app/cpus 0-3
    write /dev/cpuset/foreground/cpus 0-3
    write /dev/cpuset/system-background/cpus 3-5

三、配置特定进程的cpuset

复制代码
# We want all cores for camera
    mkdir /dev/cpuset/camera-daemon
    write /dev/cpuset/camera-daemon/cpus 0-5
    write /dev/cpuset/camera-daemon/mems 0
    chown cameraserver cameraserver /dev/cpuset/camera-daemon
    chown cameraserver cameraserver /dev/cpuset/camera-daemon/tasks
    chmod 0660 /dev/cpuset/camera-daemon/tasks

四、验证方法:

在adb shell里面:

复制代码
#cd /dev/cpuset/top-app
/dev/cpuset/top-app # ps -A -p `cat tasks`

可以看到top-app下活跃的进程

复制代码
USER           PID  PPID     VSZ    RSS WCHAN            ADDR S NAME
u0_a53        2217   378 4546160 192796 ep_poll             0 S com.fiilll.app.launcher

然后敲:

复制代码
ps -o pid,psr,comm -p `pidof com.gwm.fiill.launcher`

显示的PSR就是核

复制代码
  PID PSR COMM
 2217   1 app_process64

同样的步骤查看system-background

复制代码
/dev/cpuset/system-background # ps -A -p `cat tasks`
USER           PID  PPID     VSZ    RSS WCHAN            ADDR S NAME
logd           329     1   76160  56700 sigsuspend          0 S logd
system         330     1   11156   3728 binder_ioctl_write_read 0 S servicemanager
system         331     1 2126696   6756 binder_ioctl_write_read 0 S hwservicemanager
system         332     1   11872   3096 binder_ioctl_write_read 0 S vndservicemanager
system         474     1   56072  17740 binder_ioctl_write_read 0 S android.hardware.graphics.composer@2.2-service
root           729     1    9544   2400 ep_poll             0 S lmkd
system         731     1 2192692  34460 ep_poll             0 S surfaceflinger
system         735     1   11220   4420 poll_schedule_timeout 0 S name-server
statsd         897     1   23296   6648 ep_poll             0 S statsd
root           898     1   22688   5752 binder_ioctl_write_read 0 S storaged
root           906     1   38444  13552 poll_schedule_timeout 0 S dlt-daemon
system         954     1 2128968   7096 binder_ioctl_write_read 0 S gatekeeperd
root           955     1   18988   4752 binder_ioctl_write_read 0 S perfprofd
tombstoned     959     1    9232   2300 ep_poll             0 S tombstoned

由于statsd是开机完成前加载的,所以第一次cpuset可能在0-5之间

复制代码
  PID PSR COMM
 897   0 statsd

我们以此可以判断开机时候配置的是否正常。

现在杀掉该进程重新加载:

复制代码
kill -6 `pidof statsd`

再查看它的cpuset:

复制代码
ps -o pid,psr,comm -p `pidof statsd`

发现cpuset已经变了

复制代码
  PID PSR COMM
 9766   3 statsd
相关推荐
selt7912 小时前
Redisson之RedissonLock源码完全解析
android·java·javascript
Yao_YongChao2 小时前
Android MVI处理副作用(Side Effect)
android·mvi·mvi副作用
非凡ghost3 小时前
JRiver Media Center(媒体管理软件)
android·学习·智能手机·媒体·软件需求
席卷全城3 小时前
Android 推箱子实现(引流文章)
android
齊家治國平天下4 小时前
Android 14 系统中 Tombstone 深度分析与解决指南
android·crash·系统服务·tombstone·android 14
maycho1236 小时前
MATLAB环境下基于双向长短时记忆网络的时间序列预测探索
android
思成不止于此6 小时前
【MySQL 零基础入门】MySQL 函数精讲(二):日期函数与流程控制函数篇
android·数据库·笔记·sql·学习·mysql
brave_zhao6 小时前
达梦数据库(DM8)支持全文索引功能,但并不直接兼容 MySQL 的 FULLTEXT 索引语法
android·adb
sheji34166 小时前
【开题答辩全过程】以 基于Android的网上订餐系统为例,包含答辩的问题和答案
android
easyboot7 小时前
C#使用SqlSugar操作mysql数据库
android·sqlsugar