gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:26:47 26 4
gpt4 key购买 nike

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

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

2113 root 20 0 0 0 0 R 92.90 0.000 18:22.91 多核测试

2114 root 20 0 0 0 0 R 92.23 0.000 18:07.29 多核测试

2112 root 20 0 0 0 0 R 49.28 0.000 9:41.48 多核测试

2111 root 20 0 0 0 0 R 48.61 0.000 9:42.17 多核测试

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

谁能给我解释一下,为什么第 3 核和第 4 核虽然具有相同的线程功能,却没有前两个那么忙?

这真的会有很大帮助。

谢谢

最佳答案

我至少可以想到造成这种行为的几个可能原因:

  • 您的程序不是唯一在执行的程序。任何其他程序以及操作系统本身都使用处理器,这可能不允许您的程序充分利用可用的 CPU 能力。即使设置了 CPU 亲和性,进程调度程序仍会影响线程可用的 CPU 时间。

  • CPU 核心是虚拟的,因此不是完全独立的。例如hyper-threaded cores在 Intel 处理器中共享它们的大部分物理逻辑网络。由于您的任务既简单又完全相同,因此在同一物理内核上执行的线程将竞争其资源。

关于c - 为什么在多处理器中,所有 CPU 的利用率不均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com