首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在多处理器中,所有CPU的利用率并不均匀?

为什么在多处理器中,所有CPU的利用率并不均匀?
EN

Stack Overflow用户
提问于 2014-04-09 19:41:14
回答 1查看 178关注 0票数 4

我刚刚开始研究多核架构,并有一个问题。我有一个测试应用程序,它将线程数作为参数,创建这些线程,设置亲和性(在sched_setaffinity的帮助下),然后在每个线程任务中执行一个繁忙循环(while (1))。我使用的是Fedora 19 VM (3.11.9-200.fc19.x86_64)和4个处理器。现在,当我创建4个线程,将它们的亲和性设置为4个不同的处理器时,CPU利用率并不均匀。就像,

PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+命令

2113根20 000 00 R 92.90 0.000 18:22.91多核重测

2114根20 000 00 R 92.23 0.000 18:07.29多核重测

2112根20 000 00 R 49.28 0.000 9:41.48多核重测

2111root 20 000 00 R 48.61 0.000 9:42.17多核重测

2110root 20 0 0 0 Z 0.000 0.000 0:00.00多核重测

谁能给我一个解释,为什么第三个和第四个内核没有前两个那么忙,虽然它们有相同的线程功能?

这真的会有很大帮助。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-04-09 20:43:41

对于这种行为,我至少能想到几个可能的原因:

  • 你的程序并不是唯一正在执行的程序。任何其他程序以及操作系统本身都使用处理器,这可能不允许您的程序充分利用可用的CPU能力。即使设置了CPU亲和性,进程调度程序仍然会影响线程可用的CPU时间。
  • CPU核心是虚拟的,因此不是完全独立的。例如,英特尔处理器中的hyper-threaded cores共享大部分物理逻辑网络。由于您的任务都非常简单且完全相同,因此在同一物理核心上执行的线程将竞争其资源。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22961396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档