Android CPU核分配关联进程

系统在应用创建或者退出时,都会进行调整分类,根据分类不同,对应可以运行的CPU核心也有所不同。在 /dev/cpuset 路径下,可以看到相关分类

:/ # cd /dev/cpuset
:/dev/cpuset # ls
audio-app              cgroup.procs          effective_cpus  mem_hardwall             memory_spread_page  release_agent             system-background
background             cgroup.sane_behavior  effective_mems  memory_migrate           memory_spread_slab  restricted                tasks
camera-daemon          cpu_exclusive         foreground      memory_pressure          mems                sched_load_balance        top-app
cgroup.clone_children  cpus                  mem_exclusive   memory_pressure_enabled  notify_on_release   sched_relax_domain_level

常见的可能就是 background  foreground  top-app ,其中top-app优先级就是最高的一类,top-app默认可以运行在所有CPU核上面。

:/dev/cpuset # cat background/cpus
0-3
:/dev/cpuset # cat system-background/cpus
0-3
:/dev/cpuset # cat foreground/cpus
0-7
:/dev/cpuset # cat top-app/cpus
0-7

默认分配如上,后台的进程只会运行在0-3(小核)上面,foreground top-app运行在0-7,由系统自行调度大小核。如果再激进点,可以只分配(echo 4-7)大核给它,无论什么情形下都执行在大核上面,对应用性能有一点提升。

write /dev/cpuset/top-app/cpus 4-7

进程归纳为什么进程可以在创建或者调整中强制更改。例如如果是系统bin文件so库服务,可以在定义中配置 writepid 如下

service media.swcodec /apex/com.android.media.swcodec/bin/mediaswcodecclass mainuser mediacodecgroup camera drmrpc mediadrmioprio rt 4writepid /dev/cpuset/foreground/tasks

如果是应用类型的,系统会通过 OomAdjuster.java 动态调整应用的优先级同时会改变应用的分类。可以通过包名判断,调整为TOP APP等类型。如下

   @GuardedBy({"mService", "mProcLock"})private boolean computeOomAdjLSP(ProcessRecord app, int cachedAdj,ProcessRecord topApp, boolean doingAll, long now, boolean cycleReEval,boolean computeClients) {final ProcessStateRecord state = app.mState;if (state.getMaxAdj() <= FOREGROUND_APP_ADJ) {
... ...// 强制设置为TOP APPif ("com.xxx.xxxxxx".equals(app.processName)) {state.setCurrentSchedulingGroup(SCHED_GROUP_TOP_APP);}state.setCurRawProcState(state.getCurProcState());state.setCurAdj(state.getMaxAdj());state.setCompletedAdjSeq(state.getAdjSeq());// if curAdj is less than prevAppAdj, then this process was promotedreturn state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474592.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArkTS组件结构和状态管理

1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构&#xff0c;构成一个自定义组件 自定义组件中提供了一个build函数&#xff0c;开发者需要在函数内以链式调用的方式进行基本的UI描述&#xff0c;UI描述的方法请参考UI描述规范srtuc…

14. 乘法口诀挑战赛

文章目录 概要整体架构流程技术细节小结 1. 概要 ~ Jack Qiao对米粒说&#xff1a;“为了帮助孩子们更好地学习乘法&#xff0c;智慧镇的镇长决定举办一场特别的活动——“乘法口诀挑战赛”。比赛的规则非常简单&#xff1a;参与者需要输入一个正整数 n&#xff0c;然后系统会…

环形缓冲区 之 STM32 串口接收的实现

STM32串口数据接收环形缓冲区接收实例说明 ...... 矜辰所致前言 关于环形缓冲区&#xff0c;网上有大量的理论说明文章&#xff0c;在有些操作系统中&#xff0c;会有实现环形缓冲区的代码&#xff0c;比如 RT-Thread 的 ringbuffer.c 和 ringbuffer.h 文件&#xff0c;Li…

Matplotlib | 理解直方图中bins表示的数据含义

引出问题 hist作图中 bins 发生变换 y轴的数据也变化 想不通 不是说y轴计算的是频率吗 频率既然是定值 为什么y轴的数据就还会变化&#xff1f;那我确定了bins的数值 我想获得bins内各个柱子&#xff08;bin&#xff09;中数据点的数量如何获得 bins的变化 先看一组数据 da…

【Linux】基础02

Linux编译和调试 VI编辑文件 vi : 进入文件编辑 是命令行模式 i &#xff1a;从光标处进入插入模式 dd : 删除光标所在行 n dd 删除指定行数 Esc &#xff1a; 退出插入模式 &#xff1a; 冒号进入末行模式 :wq : 保存退出 :q &#xff1a; 未修改文件可以退出 :q! …

Linux网络——套接字编程

1. 网络通信基本脉络 基本脉络图如上&#xff0c;其中数据在不同层的叫法不一样&#xff0c;比如在传输层时称为数据段&#xff0c;而在网络层时称为数据报。我们可以在 Linux 中使用 ifconfig 查看网络的配置&#xff0c;如图 其中&#xff0c;inet 表示的是 IPv4&#xff0c;…

深度学习的实践层面

深度学习的实践层面 设计机器学习应用 在训练神经网络时&#xff0c;超参数选择是一个高度迭代的过程。我们通常从一个初步的模型框架开始&#xff0c;进行编码、运行和测试&#xff0c;通过不断调整优化模型。 数据集一般划分为三部分&#xff1a;训练集、验证集和测试集。常…

Jmeter 如何导入证书并调用https请求

Jmeter 如何导入证书并调用https请求 通过SSL管理器添加证书文件 支持添加的文件为.p12&#xff0c;.pfx&#xff0c;.jks 如何将pem文件转换为pfx文件&#xff1f; 在公司内部通常会提供3个pem文件。 ca.pem&#xff1a;可以理解为是根证书&#xff0c;用于验证颁发的证…

LabVIEW 温湿度测试与监控系统

煤炭自燃是煤矿和煤炭储存领域面临的重大安全隐患&#xff0c;尤其是在煤炭堆积和运输过程中&#xff0c;温湿度变化会直接影响煤体的氧化速率和自燃倾向。传统的监测手段通常存在实时性差、数据处理复杂等问题&#xff0c;难以准确评估煤自燃的风险。因此&#xff0c;设计了一…

IDEA 开发工具常用快捷键有哪些?

‌在IDEA中&#xff0c;输出System.out.println()的快捷键是sout&#xff0c;输入后按回车&#xff08;或Tab键&#xff09;即可自动补全为System.out.println()‌‌。 此外&#xff0c;IDEA中还有一些其他常用的快捷键&#xff1a; 创建main方法的快捷键是psvm&#xff0c;代…

KF UKF

我需要Kalman 现在&#xff0c;主要是用来处理检测问题情况里的漏检&#xff0c;因为模拟了一段2D&#xff0c; &#xff08;x&#xff0c;y&#xff09;的数据&#xff0c;为了看效果&#xff0c;画的线尽量简单一点&#xff1a; import numpy as np import matplotlib.pyplo…

多品牌摄像机视频平台EasyCVR视频融合平台+应急布控球:打造城市安全监控新体系

在当今快速发展的智慧城市和数字化转型浪潮中&#xff0c;视频监控技术已成为提升公共安全、优化城市管理、增强应急响应能力的重要工具。EasyCVR视频监控平台以其强大的多协议接入能力和多样化的视频流格式分发功能&#xff0c;为用户提供了一个全面、灵活、高效的视频监控解决…

第8章硬件维护-8.2 可维护性和可靠性验收

8.2 可维护性和可靠性验收 可维护性和可靠性验收非常重要&#xff0c;硬件维护工程师在后端发现问题后&#xff0c;总结成可维护性和可靠性需求&#xff0c;在产品立项的时候与新特性一起进行需求分析&#xff0c;然后经过设计、开发和测试环节&#xff0c;在产品中落地。这些需…

医学图像语义分割:前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室

医学图像语义分割&#xff1a;前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室 语义分割网络FCN&#xff1a;通过将全连接层替换为卷积层并使用反卷积上采样&#xff0c;实现了第一个端到端的像素级分割网络U-Net&#xff1a;采用对称的U形编解码器结构&#xff…

如何解决多系统数据重复与冲突问题?

多系统并行运作已成为现代企业的常态。企业通常同时使用ERP、CRM、HR等多个业务系统来管理不同的功能模块。然而&#xff0c;这种多系统环境也带来了一个常见且棘手的问题&#xff1a;数据重复与矛盾。由于各系统独立运行且缺乏有效的集成机制&#xff0c;不同系统间的数据容易…

麒麟时间同步搭建chrony服务器

搭建chrony服务器 在本例中&#xff0c;kyserver01&#xff08;172.16.200.10&#xff09;作为客户端&#xff0c;同步服务端时间&#xff1b;kyserver02&#xff08;172.16.200.11&#xff09;作为服务端&#xff0c;提供时间同步服务。 配置服务端&#xff0c;修改以下内容…

【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Ai-Ming主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; defcomplete_sexagenary&#xff08;年&a…

Chainlit快速实现AI对话应用将聊天记录的持久化到MySql关系数据库中

概述 默认情况下&#xff0c;Chainlit 应用不会保留其生成的聊天和元素。即网页一刷新&#xff0c;所有的聊天记录&#xff0c;页面上的所有聊天记录都会消失。但是&#xff0c;存储和利用这些数据的能力可能是您的项目或组织的重要组成部分。 之前写过一篇文章《Chainlit快速…

【动手学深度学习Pytorch】6. LeNet实现代码

LeNet&#xff08;LeNet-5&#xff09;由两个部分组成&#xff1a;卷积编码器和全连接层密集块 x.view(): 对tensor进行reshape import torch from torch import nn from d2l import torch as d2lclass Reshape(torch.nn.Module):def forward(self, x):return x.view(-1, 1, 28…

AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!

文章推荐 AI工具百宝箱&#xff5c;使用Deep Live Cam&#xff0c;上传一张照片就可以实现实时视频换脸...简直太逆天&#xff01; Anychat 这是一款可以与任何模型聊天 &#xff08;chatgpt、gemini、perplexity、claude、metal llama、grok 等&#xff09;的应用。 在页面…