美文网首页
Android多核与单核的性能持平的问题

Android多核与单核的性能持平的问题

作者: Alan王伦胜 | 来源:发表于2018-08-16 18:22 被阅读0次

客户要求使用Antutu工具来测试android的性能,测试过程中发现多核CPU跑分与单核基本持平,后来使用Geekbench工具测试,结果同样,不明白为什么?

接着自己编译一个静态链接的coremark,下到android系统里面测试,发现结果是对,4核分值是单核的约4倍,因coremark并没有经android,所以结果对是自然的,所以问题应在android本身。

Coremark:

Single-core: 11275                Multi-core: 11275

进一步使用mpstat、perfmon的工具监测CPU,发现几乎所有的任务都被调度到CPU 0上,而其他CPU则近乎空闲。

mpstat -P ALL 1

使用ps -p命令,进一步确认几乎所有的任务都调度到CPU 0上

......

试图使用taskset命令把某一个进程亲合到CPU 0以为的CPU,发现不成功:

layerscape:/ # busybox taskset -p 0xf 4162  #指定此PID可以在4个CPU上跑

pid 4162's current affinity mask: 1

pid 4162's new affinity mask: 1   #返回1表示被Android限死在CPU 0上

至此,问题找到。但具体如何解决呢?CPU控制管理由CPU CGROUP来负责,而它则是通过其文件系统/dev/cpuset中的相关文件来实现,具体的几个文件分别如下,他们的当前值也如下:

/dev/cpuset/cpus 0-3

/dev/cpuset/background/cpus  0

/dev/cpuset/foreground/cpus  0

/dev/cpuset/system-background/cpus  0

/dev/cpuset/top-app/cpus  0

由此可见,虽然有4核,但所有几个权限组的都指定了只能调度到CPU 0上,使用echo修改这些之后,立马就可以发现任务可以调度到其他CPU上了。

layerscape:/ # echo 0-3 > /dev/cpuset/top-app/cpus

代码中关于CPU CGROUP管理设置初始配置在system/core/rootdir/init.rc文件,我们具体的配置则放置在device/nxp/layerscape/init.layerscape.rc,如下:

on init

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

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

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

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

它们会覆盖system/core/rootdir/init.rc中的初始配置,如此问题解决,最后Antutu测试结果为:

single-core: 8428            Multi-core: 32531

参看文献:

1. CPU Cgroup in android N and Huawei Mate 9 Implement

2. Android O 绑定SurfaceFlinger到大核

3. Android/Linux下CGroup框架分析及其使用

如果感觉到本文对您有所助益,您可以请我喝一杯咖啡。

相关文章

  • Android多核与单核的性能持平的问题

    客户要求使用Antutu工具来测试android的性能,测试过程中发现多核CPU跑分与单核基本持平,后来使用Gee...

  • 单核与多核

    如题,我认为没有一定的优劣,都是相对的。特定场景下,各得其所。对答如流和大智若愚其实都是可以的。精雕细琢和大巧若拙...

  • 单核&多核,进程&线程,串行&并行,同步&异步

    先了解一些基本概念: 单核&多核:一个处理器(CPU)有几个运算核心,来区别是单核还是多核。单核和多核的本质区别就...

  • Redis与memcached的对比

    性能对比: redis使用单核,而memcached可以使用多核,所有每个核上redis存小数据要比memcach...

  • 进程与线程,单核与多核

    1. 简介 用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线...

  • Memcached 与 Redis 的关键性能指标比较

    性能对比: Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis在存储小数...

  • Z_HPC_处理器

    1、单核向多核发展 从单核(Single-core)到多核(Multi-core),这种计算机技术的进步,是由单处...

  • 对比 Redis 和 Memcache

    没有必要过多的关注性能。由于 Redis 只使用单核,而 Memcache 可以使用多核,所以在比较上,平均每一个...

  • 73.memcached和redis的区别

    (1)性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数...

  • 关于并行和并发的小理解

    如果是单核,就是并发 如果是多核执行,是并行 但是GC线程,不管是单核还是多核,都是串行的,也就是并发的.GC的时...

网友评论

      本文标题:Android多核与单核的性能持平的问题

      本文链接:https://www.haomeiwen.com/subject/pgmobftx.html