有没有人知道如何估计具有启用超线程的N核的计算机上的用户进程的剩余并行线程(即有2 * N个并行作业)。操作系统占用了多少个核心,例如Ubuntu的?
答案 0 :(得分: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大部分处于空闲状态。