当前位置: 首页 > news >正文

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
 
2) init
 
3) early-fs
 
4) fs
 
5) post-fs
 
6) post-fs-data
 
f) property_service_init
 
g) signal_init
 
h) check_startup
 
7) early-boot
 
8) boot
 
9) 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-bootwrite /dev/cpuset/top-app/cpus 0-5write /dev/cpuset/foreground/cpus 0-5write /dev/cpuset/foreground/boost/cpus 0-5write /dev/cpuset/system-background/cpus 0-5write /dev/cpuset/background/cpus 4-5

....

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

三、配置特定进程的cpuset

# We want all cores for cameramkdir /dev/cpuset/camera-daemonwrite /dev/cpuset/camera-daemon/cpus 0-5write /dev/cpuset/camera-daemon/mems 0chown cameraserver cameraserver /dev/cpuset/camera-daemonchown cameraserver cameraserver /dev/cpuset/camera-daemon/taskschmod 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 COMM2217   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 COMM897   0 statsd

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

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

kill -6 `pidof statsd`

再查看它的cpuset:

ps -o pid,psr,comm -p `pidof statsd`

发现cpuset已经变了

  PID PSR COMM9766   3 statsd

相关文章:

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

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

Lnton羚通关于如何使用nanoPC-T4 安装OpenCV?

nanoPC-T4 安装 OpenCV Note: OpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation. Please download the latest FriendlyCore/FriendlyDesktop Image file from the following URL: http://do…...

内存泄漏:前端开发者的噩梦——内存泄露的原因及排查

在前端开发中,内存泄漏是一个常见但令人头疼的问题。它会导致应用程序变得缓慢,不稳定,最终可能崩溃。本文将介绍内存泄漏的概念、常见泄漏原因以及如何排查和预防内存泄漏。 什么是内存泄漏? 内存泄漏是指应用程序中的内存被错…...

高效使用ChatGPT之ChatGPT客户端

ChatGPT客户端,支持Mac, Windows, and Linux 下载地址见文章结尾 软件截图 Windows: Mac: 说明 chatgpt桌面版,相比于网页版的chatgpt,最大的特色是支持历史聊天对话记录导出,且支持三种格式:PNG、PDF、…...

【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据

【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据 文章目录 【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据前言出现的背景一、TDSQL-C数据库是什么?二、TDSQL-C 的特点三、TDSQL-C的应用场景四、基于TD…...

leetcode 6450. k-avoiding 数组的最小总和

给你两个整数 n 和 k 。 对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。 返回长度为 n 的 k-avoiding 数组的可能的最小总和。 示例 1: 输入:n 5, k 4 输出&#…...

变压器绝缘油耐压试验

试验目的 绝缘油是电气设备常用的绝缘、 灭弧和冷却介质。 为保证它在运行过程中具有良好的性能, 必须定期对其进行各项试验, 尤其是耐压试验。 绝缘油的耐压试验是在专用的击穿电压试验器中进行的, 试验器包括一个瓷质或玻璃油杯、 两个直径…...

Windows控制台API官方文档

2023年8月21日,周下午 中文文档:控制台函数 - Windows Console | Microsoft Learn 英文文档:Console Functions - Windows Console | Microsoft Learn...

PyTorch DataLoader 报错 “DataLoader worker exited unexpectedly“ 的解决方案

注意:博主没有重写d2l的源代码文件,而是创建了一个新的python文件,并重写了该方法。 一、代码运行日志 C:\Users\Administrator\anaconda3\envs\limu\python.exe G:/PyCharmProjects/limu-d2l/ch03/softmax_regression.py Traceback (most r…...

【AI绘画--七夕篇】:七夕特别教程,使用SDXL绘制你的心上人(Stable Diffusion)(封神榜—妲己)

目录 前言0、介绍0-0、结果展示0-1、Stable Diffusion0-2、sdxl介绍 一、云端部署Stable Diffusion1-1、云端平台的优势 二、平台介绍三、注册账号并且开始炼制3-1、购买算力并创建工作空间3-2、启动工作空间3-3、应用市场一键安装3-4、使用Stable-Diffusion作图 四、有女朋友的…...

hadoop2的集群数据将副本存储在hadoop3

在 Hadoop 集群中,HDFS 副本是分布式存储的,会存储在不同的节点上。因此,如果您的 HDFS 所在路径是在 Hadoop2 集群中,您可以在 Hadoop3 集群上添加新的节点,并向 Hadoop3 集群中添加这些新节点上的数据副本。 以下是…...

c# ??=

空合并运算符 ??,用于定义引用类型和可空类型的默认值。如果此运算符的左操作符不为Null,则此操作符返回左操作数,否则返回右操作数。 例如: //当a不为空时返回a,为null时返回b var c a ?? b;空合并赋值运算符??…...

存储系统性能优化中IOMMU的作用是什么?

一、IOMMU原理 IOMMU(Input/Output Memory Management Unit)是一种用于管理计算机内存的技术,它允许将物理内存映射到虚拟地址空间。IOMMU通过使用专用的硬件来管理和优化内存访问,从而提高系统性能和稳定性。本文将详细介绍IOMMU的原理,并介绍一些应用案例和典型的问题解…...

localhost:8080 is already in use

报错原因:本机的8080端口号已经被占用。因为机器的空闲端口号是随机分配的,而idea默认启动的端口号是8080,所以是存在这种情况。 对于这个问题,我们只需要重启idea或者修改项目的启动端口号即可。 更推荐第二种。对于修改项目启动端口号&…...

机器学习深度学习——NLP实战(自然语言推断——数据集)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——NLP实战(情感分析模型——textCNN实现) 📚订阅专栏:机器…...

攻防世界-simple_php

原题 解题思路 flag被分成了两个部分:flag2,flag2。获得flag1需要满足变量a0且变量a≠0,这看起来不能实现,但实际上当变量a的值是字符时,与数字比较会发生强制类型转换,所以a为字符型数据即可,变…...

2023MyBatis 八股文——面试题

MyBatis简介 1. MyBatis是什么? MyBatis 是一款优秀的持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及 获取结果集。MyBa…...

解决出海痛点:亚马逊云科技助力智能涂鸦,实现设备互联互通

今年6月,《财富》(中文版)发布“2023年值得关注的中国出海主力”盘点,在七个赛道中聚焦不断开拓新领域、影响力与日俱增的出海企业。涂鸦智能顺利入选,作为一家全球化公司,相比于产品直接到海外销售的传统出…...

国际刑警组织逮捕 14 名涉嫌盗窃 4000 万美元的网络罪犯

Bleeping Computer 网站披露,4 月份,国际刑警组织发动了一起为期四个月,横跨 25 个非洲国家的执法行动 “Africa Cyber Surge II”,共逮捕 14 名网络犯罪嫌疑人,摧毁 20000 多个从事勒索、网络钓鱼、BEC 和在线诈骗的犯…...

MySQL卸载-Linux版

MySQL卸载-Linux版 停止MySQL服务 systemctl stop mysqld 查询MySQL的安装文件 rpm -qa | grep -i mysql 卸载上述查询出来的所有的MySQL安装包 rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodeps ​ rpm -e mysql-community-server-8.0.26-1.el7.x86_64 -…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性&#xf…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...