我在 6 个 Handbrake 实例中对视频进行编码,但 CPU 使用率从未超过 85%。这是为什么/如何诊断问题?
答案1
所有非交互式计算作业最终都会发现瓶颈,其中某些资源利用率为 100%,并阻止其他资源得到充分利用。
这里涉及的典型资源是CPU、总线带宽、内存带宽和磁盘带宽。如果您的系统更复杂,可能还有更多(例如,gpu 利用率、gpu 带宽)。此外,总线带宽和内存带宽可能相同。
此外,磁盘 I/O 和 cpu 使用可能是相互依赖的,因此在从磁盘加载数据之前 cpu 无法开始工作,并且在 cpu 完成计算新数据之前不会开始磁盘写入。在这种情况下,尝试预测未来的读取(可能在应用程序的帮助下)和预缓冲数据,或者在数据完全写入之前开始新的计算可能有助于提高性能。或者,运行不相互依赖的多个实例可能会允许一个实例使用 cpu,而另一个实例则执行磁盘 I/O。
如果 CPU 利用率仅为 85%,则可能是磁盘带宽已充分利用,或者磁盘缓冲不足且 CPU 无法工作。在Linux中,您可以使用诸如atop
检查磁盘带宽之类的工具。如果尚未达到 100%,您可以尝试添加另一个实例,并希望在单独的实例中并行使用 cpu 和磁盘能够弥补差距。但可能不会,而且这可能不会让事情变得更快。
答案2
当内核等待设备读取或写入数据时,它将暂停 CPU 使用。当当前设备操作仍在运行时,所有这些进程最终都会停止。