进程、线程绑定cpu核的问题,在这里将所学记录一下。高通骁龙采用1+3+4的超独特设计,Prime超大核、3个Kryo Gold核心和4个Kryo Silver核心。
其中0-3是Silver核芯,4-6是Gold核心,7是Prime超大核。

绑定核心的方法

通过bash指令绑定

这里以绑定Silver核0~3核为例:

cd /dev/cpuset/top-app/
echo 0-3 > cpus

通过sched_setaffinity函数来实现

与进程的情况相似,线程亲和性的设置和获取主要通过下面函数来实现:

#include <unistd.h>
int sched_setaffinity(pthread_tthread, size_tcpusetsize, const cpu_set_t *cpuset);
//初始化,设为空
void CPU_ZERO (cpu_set_t *set);
//将某个cpu加入cpu集中
void CPU_SET (int cpu, cpu_set_t *set);
//将某个cpu从cpu集中移出
void CPU_CLR (int cpu, cpu_set_t *set);
//判断某个cpu是否已在cpu集中设置了
int CPU_ISSET (int cpu, const cpu_set_t *set);

以下为核心代码:

cpu_set_t mask;  //CPU核的集合
cpu_set_t get;   //获取在集合中的CPU
int num = num = sysconf(_SC_NPROCESSORS_CONF);  //获取核数CPU_ZERO(&mask);    //置空
if (bindConfig == "prime")
{CPU_SET(7,&mask);   //设置亲和力值if (sched_setaffinity(0, sizeof(mask), &mask) == -1)//设置线程CPU亲和力{LOGD("warning: could not set CPU affinity, continuing...");}
}
else if (bindConfig == "gold")
{CPU_SET(4,&mask);   //设置亲和力值CPU_SET(5,&mask);   //设置亲和力值CPU_SET(6,&mask);   //设置亲和力值if (sched_setaffinity(0, sizeof(mask), &mask) == -1)//设置线程CPU亲和力{LOGD("warning: could not set CPU affinity, continuing...");}
}
else if (bindConfig == "silver")
{CPU_SET(0,&mask);   //设置亲和力值CPU_SET(1,&mask);   //设置亲和力值CPU_SET(2,&mask);   //设置亲和力值CPU_SET(3,&mask);   //设置亲和力值if (sched_setaffinity(0, sizeof(mask), &mask) == -1)//设置线程CPU亲和力{LOGD("warning: could not set CPU affinity, continuing...");}
}
else
{CPU_SET(0,&mask);   //设置亲和力值CPU_SET(1,&mask);   //设置亲和力值CPU_SET(2,&mask);   //设置亲和力值CPU_SET(3,&mask);   //设置亲和力值if (sched_setaffinity(0, sizeof(mask), &mask) == -1)//设置线程CPU亲和力{LOGD("warning: could not set CPU affinity, continuing...");}
}

cpu集可以认为是一个掩码,每个设置的位都对应一个可以合法调度的 cpu,而未设置的位则对应一个不可调度的 CPU。换而言之,线程都被绑定了,只能在那些对应位被设置了的处理器上运行。通常,掩码中的所有位都被置位了,也就是可以在所有的cpu中调度。

查看绑定那个核心

adb shell top | grep ${程序名}

会输出对应程序号,同时通过这个可以查看程序的CPU占用率

taskset -p pid ${程序号}

便可以看到核心的掩码
例如:掩码为cpu mask=0x70即3个Gold大核
cpu mask=0xf即四个Silver小核

Android 高通骁龙CPU线程与CPU核的绑定相关推荐

  1. 高通骁龙865 plus有哪些手机 高通骁龙865 plus有什么手机

    小米10Pro+ 小米手机目前最高支持90赫兹的刷新频率,即将发布的小米10pro+最高可能可支持120赫兹的刷新频率,成为小米手机中第一个使用120赫兹刷新频率的手机.小米10pro+可能将配置潜望 ...

  2. adreno630gpu参数_高通骁龙AdrenoGPU天梯以及直观分析,推荐。

    GPU性能天梯图高通晓龙系列(标准移动soc搭载的GPU的OpenGL2.0 ES峰值图像性能,基准高通骁龙805Adreno420@600Hz,霸王龙离屏) 4系:(为了直观更为便于理解,所以无论那 ...

  3. cpuz测试分数天梯图_联想Z5跑分实测 附高通骁龙636天梯图性能排名

    ­ 6月5日下午2点半,联想在北京导演电影中心召开新品发布会,正式发布了联想Z5新品手机,该机发布之前一直被官方宣传为国民新旗舰,但其实并非搭载旗舰级处理器,而是搭载了高通骁龙636中端处理器.我们知 ...

  4. 鸿蒙os骁龙845,小米MIX 2S跑分多少?高通骁龙845安兔兔跑分实测 (全文)

    3月27日下午,小米在上海召开新品发布会,正式发布了小米MIX 2S全新MIX系列旗舰手机,它是小米MIX系列的第三款全面屏手机,也是首款搭载高通骁龙845的国产升级.我们知道在处理器方面,小米非常喜 ...

  5. 高通骁龙210系列-MSM8909核心板

    核心板特性 A7架构 4核(4*1.1GHz(A7)) 产品尺寸小,便于客户集成,减少产品体积: 支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G: 支持2+32存储器,Micro ...

  6. 覆盖中高低端高通骁龙CPU的发展历程至2016

    覆盖中高低端的高通骁龙CPU的发展历程至2016 骁龙(即Snapdragon)是Qualcomm Technologies旗下移动处理器和LTE调制解调器的品牌名,它是Qualcomm公司推出的高度 ...

  7. 高通骁龙cpu排行_高通骁龙865深度解读:CPU、GPU、内存全新升级

    12月3日的2019年骁龙技术峰会上,高通正式发布了骁龙865移动平台,这是高通第二代5G平台了,相比骁龙855平台有着全方位的升级,工艺.架构.能效及5G等方面再上一层楼. 业界权威网站Anande ...

  8. 高通骁龙cpu排行_骁龙系列处理器性能分析,你的手机是什么处理器?

    首先来看下目前使用比较多的骁龙处理器排行 毫无疑问8系列最新出的骁龙855 Plus性能最强,刚刚发布的vivo NEX 3 5G版搭载的就是这款处理器.那么到底855和855 Plus有什么区别呢? ...

  9. 高通骁龙cpu排行_最新手机性能排行榜出炉:高通骁龙865霸榜,前十不见华为!...

    经过3月份手机厂商的一波新机轮番轰炸之后,市场上呈现了一片浓浓的"新老交替"的格局.4月1日,国内知名测试软件安兔兔发布了最新的智能手机性能排行榜,分为高端旗舰和中端产品榜,结果表 ...

最新文章

  1. 新风控如何避免错失“白户”?
  2. LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)
  3. c语言char转cstring,CString、TCHAR*、char*转换 | 时刻需
  4. Rational Rose及RequisitePro安装注意事项
  5. pdf pmp书籍第六版_PMP项目管理 第六版 (带目录完整高清版).pdf
  6. 如何解决取ADO的Recordset对象的RecordCount属性总是-1问题
  7. 手机RAM、ROM和储存卡的那些事
  8. MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4
  9. vue-element-admin整合spring-boot实现权限控制之用户管理篇
  10. unity游戏开发毕设_《毕业设计(论文)-基于Unity游戏引擎的游戏设计》.doc
  11. 从零搭建游戏服务器,拢共分几步?
  12. Nomad 多job/group/task调度测试
  13. 自己如何快速制作蓝色背景证件照
  14. 基于产生式规则的动物识别系统
  15. Excel 中自定义函数的限制
  16. 标准的产品设计工作流程
  17. Redis哨兵 详解 原理解析
  18. 鸿蒙os版王者荣耀,王者荣耀鸿蒙版
  19. 关于在python的tkinter界面中镶嵌mayplotlib动态图
  20. android采用Https的解决方案,Android使用https

热门文章

  1. 软件可以流氓到什么程度?从卸载步骤就可以看出来!
  2. surface无法连接airpords的解决方法
  3. 数据结构之线性结构和非线性结构
  4. 基于Linux-ARM的智能家具项目(3)--语音模块与TCP网络
  5. c语言函数中调用的参数太多
  6. 2023年最全前端面试题考点HTML5+CSS3+JS
  7. 浏览器渲染和服务器渲染区别
  8. Leo支招:高层跳槽,三宜三忌
  9. 常见的反爬虫技术有哪些?如何防止别人爬自己的网站?
  10. 125KHZ|134.2KHZ低频RFID玻璃管标签读写器编码器支持各类标签类型说明