【问题标题】:Optimum number of threads for maximum output最大输出的最佳线程数
【发布时间】:2012-02-18 08:03:48
【问题描述】:

我对线程有点困惑。如果我有一个文件服务器并且它由 N 个 CPU 组成,那么用户模式线程的最大数量应该是多少,以最大限度地提高服务器性能。其他进程不会干扰线程。好吧,我的观点是每个 cpu 1 个线程就足够了,因为如果我们产生更多线程,那么我们将不得不等待 I/O 操作完成。如果我们创建更多线程,那么我们将浪费资源并被阻塞,直到其他线程完成。我不确定我们是否尝试将文件读取或归档到另一个分区或另一个驱动器中,是否可以为此生成一个新线程。你能分享你的意见吗?

【问题讨论】:

    标签: multithreading


    【解决方案1】:

    CPU 吞吐量的最佳线程数与 CPU 数完全相同,这正是您命名的原因。 (虽然这对于超线程带来的花哨的“部分”核心变得更加复杂,但基本规则或多或少仍然成立。)

    在现实世界中,如果您在进程中的任何地方都有阻塞 I/O,那么拥有额外的线程可以帮助有效地重叠 CPU 处理和 I/O 处理。

    【讨论】:

    • 我必须提到同步或异步 i/o 操作吗?您能否进一步解释一下您的意思是额外线程可以帮助重叠 cpu 处理和 i/o 处理?
    • 我的意思是,从字面上看,如果您的代码对 I/O 使用任何阻塞操作 - 到内存、磁盘、网络等等 - 拥有比 CPU 更多的线程可能会允许有用的工作继续进行,而原线程被阻塞
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2011-10-05
    相关资源
    最近更新 更多