答案1
平均负载显示 1.5 和 15 分钟间隔内(5 秒帧内)运行和等待的进程数
CPU 利用率为您提供特定进程的处理器使用情况。这对您来说更有意义。您可以将所有ffmpeg
进程的该值相加。
如果你想获取特定时刻整个系统的 CPU 利用率,你可以使用以下命令:
vmstat 1 2
(获取第二行,因为第一行是从系统启动时开始的平均值)
答案2
您应该使用平均负载来评估 CPU 需求。
要解释 CPU 使用率和平均负载数字,您应该考虑
- 系统中物理核心的总数(所有 CPU)
- 是否启用超线程
- 在 Linux 中,平均负载还包括处于不间断睡眠状态、等待 I/O 的进程
- CPU 使用率和平均负载数字的解释取决于逻辑核心的数量
- 您应该检查每个核心的 CPU 统计数据,以确保更加准确。按
top
“1”查看每个核心的统计数据,按“t”查看图表条。
i7-7700T有4 个物理核心并启用 HT8 个逻辑核心 https://ark.intel.com/content/www/us/en/ark/products/97122/intel-core-i77700t-processor-8m-cache-up-to-3-80-ghz.html
CPU使用率, %
显示利用率——CPU 不空闲并执行 OS 调度程序安排的任务的时间百分比。
每个核心的使用率可达 100%,因此 8 个核心的最大使用容量为 800%。
因此两个 ffmpeg 进程占用全部 8 个核心的利用率分别为 460.7% + 331.7% = 792.4%。
此行中包含整个 CPU 统计数据
%Cpu(s): 19.9 us, 0.7 sy, 78.1 ni, 1.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
这里 19.9% 的用户空间时间 + 78.1% 的良好时间 = 用户空间程序 98% 的 CPU 使用率。
因此,CPU 核心被所有用户空间进程占用了 98%,其中 79.2% 正在执行两个 ffmpeg 进程。
由于转码是一项 CPU 密集型任务,因此任何 CPU 的利用率几乎总是接近 100%。
平均负载
是某一时间段内已执行的线程数 + 等待执行的线程数的平均值。
一个核心在一个时间片内执行一个线程。8
个核心可以在一个时间片内执行8个线程。
如果平均负载 > 逻辑核心数,则系统过载。
这意味着 OS 调度程序由于核心繁忙而无法将下一个时间片分配给某些线程,并将它们放入运行队列中等待执行。
在具有 8 个核心的系统上,平均负载中的第二个数字 = 25.65 意味着:
- 过去 5 分钟内平均执行 8 个线程
- 过去 5 分钟内,平均有 17.65 个线程在运行队列中等待
因此系统超载率为 17.65/8*100=220.6%。