CPU 利用率计算

CPU utilization calculation

我在很多地方都读到,通过以下公式获得 CPU 利用率的一种简单而体面的方法是:

CPU utilization = 1 - p^n

其中:

但我找不到解释。好像跟统计有关,但我想不通。

我的出发点是:如果我有 2 个等待时间为 50% 的进程,那么该公式将产生 1 - 1/4 = 75% CPU utilization。但是我的错误逻辑引出了一个问题:如果一个进程在 I/O 上被阻塞,而另一个进程在第一个被阻塞时被换入 运行(无论爆发是什么),这意味着当一个进程等待时,第二个 运行s 和他们的等待时间重叠。那不是100% CPU utilization吗?我认为只有当程序的前半部分保证 运行 而无需 IO 时,这才是正确的。

问题是:该公式如何考虑所有其他可能性?

你需要从概率的角度来思考。如果每个内核空闲(等待 IO)的概率为 0.5,则 CPU 处于空闲状态的概率是所有内核处于空闲状态的概率同时。那是 0.5 * 0.5 = 0.25 所以 CPU 做功的概率是 1 - 0.25 = 0.75 = 75%