有谁知道如何在启用了超线程的 N 核机器上估计用户进程的剩余并行线程(即有 2*N 并行作业)。操作系统占用了多少内核,例如Ubuntu?
最佳答案
您的操作系统实现了抢先式多任务处理。这尤其意味着没有线程独占核心。相反,CPU 时间片分布在准备继续的线程之间。这种重新分配在每秒内发生多次。uptime
Linux 中的命令可以告诉您在最后 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 大部分时间都是空闲的。
关于ubuntu - 可以有多少个并行用户进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523459/