You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

操作系统CPU利用率计算及多道程序系统性能指标求解

Hey there, let's tackle these two OS questions step by step—they're fundamental concepts that are key to understanding how systems utilize resources.

1. 如何计算操作系统的CPU利用率?

CPU利用率衡量的是CPU用于实际工作的时间占总时间的比例,常见的计算方式有以下几种:

  • 基于采样的统计方法:操作系统会定期(比如每10毫秒)对CPU状态进行快照,记录它是在运行进程、等待I/O还是处于空闲状态。利用率的计算公式为:(总采样数 - 空闲采样数) / 总采样数 × 100%。我们常用的top、vmstat等工具,背后就是用这个逻辑来展示实时CPU使用率的。
  • 基于进程累计时间的计算:每个进程都会记录两个核心时间值:utime(用户态运行时间)和stime(内核态运行时间)。把所有活跃进程的这两个时间加总,再除以系统启动到当前的总运行时间,就能得到整体CPU利用率:
    CPU利用率 = (Σ(utime + stime) / 系统总运行时间) × 100%
    
  • 短窗口实时计算:针对特定的时间窗口(比如1秒),统计CPU处于忙碌状态的毫秒数,利用率就是(忙碌毫秒数 / 窗口总毫秒数) × 100%。比如1秒内CPU忙了820毫秒,那利用率就是82%。
2. 多道程序环境下的周转时间、吞吐量与CPU利用率计算

先明确题目条件:每个作业包含N个时长为T的周期,每个周期一半时间(T/2)用于计算,一半时间(T/2)用于I/O;采用简单轮转调度,且I/O操作可与CPU计算重叠。我们假设系统处于稳态——有足够多的作业持续进入系统,能让CPU和I/O设备保持忙碌。

CPU利用率

由于每个作业的计算时间和I/O时间各占一半,只要系统中有至少2个作业,CPU就能达到100%利用率:当一个作业完成计算进入I/O阶段时,另一个作业立刻接手CPU,完全没有空闲时间。

吞吐量

吞吐量指的是每时间周期T内完成的平均作业数。每个作业总共需要N × (T/2)的计算时间,而每T时间内CPU能提供完整的T时长计算资源,因此吞吐量为:

吞吐量 = T / (N × T/2) = 2/N

举个例子:如果N=2,每T时间能完成1个作业;如果N=4,每T时间能完成0.5个作业(也就是每2T时间完成1个)。

平均周转时间

周转时间是作业从提交到完成的总时长。在稳态轮转调度下,每个作业的计算阶段需要等待其他活跃作业轮流使用CPU后才能执行。假设系统的多道程序度为M(同时运行的作业数),平均周转时间的计算公式为:

平均周转时间 = T × ((N-1)×M + 2) / 2

如果取最小的有效多道程序度M=2(刚好能让CPU和I/O都不空闲),公式可以简化为:

平均周转时间 = N×T

这个结果很直观:每个作业的计算阶段和其他作业的I/O阶段完全重叠,完成N个周期的总时间刚好是N×T。


内容的提问来源于stack exchange,提问作者Matt Belle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:59:15