【问题标题】:difference between one CPU and multiple CPU in schedule routine - Linux kernel调度例程中一个 CPU 和多个 CPU 的区别 - Linux 内核
【发布时间】:2015-05-03 13:43:45
【问题描述】:

在 Linux 内核 (2.6) 中,只有一个处理器的系统中的“schedule()”例程的性能与具有多个处理器的系统中的性能是否存在差异?

我试图在“了解 Linux 内核(第 3 版)”一书中找到答案,但没有找到答案。

【问题讨论】:

  • schedule() 在不错的 CPU 上花费大约 10 µs,这真的是个问题吗?
  • 有几个因素:调度程序组和域,任务平衡器,所以它甚至可以改变为 2 CPU / 4 核系统与单处理器 8 核系统,你的问题没有明确的答案不进行实验(您可以尝试这样做,但很难排除其他重要因素并提供有代表性的工作量)。

标签: linux-kernel operating-system kernel


【解决方案1】:

很难回答这个问题。

一个简单的答案是“是的,当然,一个 cpu 和多个 cpu 之间的性能存在差异,因为当有多个 CPU 时,内核必须锁定各种数据结构,从而可能会遇到争用,并且必须决定哪个 CPU下一个任务可以继续运行,依此类推——当只有一个 CPU 时,不需要做出(或可以轻易做出)的决定。”

另一个简单的答案是,“不,各种决策对性能的影响是最小的,并且只占总 CPU '带宽'的百分比可以忽略不计”。

完整的答案需要了解和考虑在任何给定场景中对所有可用 CPU 进行调度决策的数千个因素:是否为每个进程设置了明确的关联掩码?每个 CPU 正在服务哪些中断和软中断?进程是在每个 CPU I/O-bound 还是 CPU-bound 上调度的?是否有进程与其他进程通信,并且两者都可以在不同的处理器上同时运行?因素太多,不可能一一列举。

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 2023-02-19
    • 1970-01-01
    • 2020-04-23
    • 2014-05-27
    • 2011-03-24
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多