【问题标题】:How many parallel user processes can there be?可以有多少个并行用户进程?
【发布时间】:2013-12-11 15:42:02
【问题描述】:

有谁知道如何在启用了超线程的 N 核机器上估计用户进程的剩余并行线程(即有 2*N 并行作业)。操作系统占用了多少内核,例如Ubuntu?

【问题讨论】:

    标签: ubuntu parallel-processing


    【解决方案1】:

    您的操作系统实现了抢先式多任务处理。这尤其意味着没有线程独占核心。相反,CPU 时间片分布在准备继续的线程之间。这种重新分配在每秒内发生多次。

    Linux 中的uptime 命令可以告诉您在过去的 1、5 和 15 分钟间隔内平均准备好运行的线程数。

        $ uptime
        23:18pm  up  15:17,  3 users,  load average: 0.73, 0.62, 0.74
    

    这里我们大约有 0.7 个线程,平均不到 1 个线程。不是很忙的机器。

    在繁忙的机器上,这个数字可能会超过可用逻辑 CPU 的数量。因此,如果你的 2n 个用户进程确实总是准备好使用 CPU 并且不会因为它们正在等待来自 RAM 或 I/O 的数据而放弃它,那么操作系统线程的数量可以估计为

       current load average - 2n
    

    在上面的示例中,这个公式不起作用,因为用户进程正在等待用户输入或 I/O,而 CPU 大部分时间都处于空闲状态。

    【讨论】:

    • 我实际上很感兴趣在给定时间点可以并行运行的用户进程的限制是多少给定具有多核的机器。这与机器在某一时刻的物理极限有关。
    • @Eugen 实际上,这取决于进程的性质和系统的参数,而不是核心数。多核 CPU 上的并行执行通常会受到内存带宽不足的影响,而服务器操作系统上的操作系统开销通常会降低到最低限度。您可能想用更笼统的术语重新表述您的问题。
    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2013-12-25
    • 2018-02-24
    • 2011-04-24
    相关资源
    最近更新 更多