2013-12-11 30 views
0

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

回答

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大部分处于空闲状态。

+0

我真的很感兴趣在给定的时间点,用户进程的限制是什么,可以并行运行给定一个多核心的机器。这与机器在瞬间时刻的物理限制有关。 – Eugen

+0

@Eugen实际上这取决于进程的性质和系统参数,而不是内核数量。在多核CPU上并行执行通常会遇到内存带宽不足的问题,而服务器操作系统上的操作系统开销通常会降至最低。你可能想用更一般的术语来重新描述你的问题。 –

相关问题