当某项特定任务失败时,如何判断系统中的硬件瓶颈在哪里

当某项特定任务失败时,如何判断系统中的硬件瓶颈在哪里

我意识到这个主题已经有几个重复的问题,但我看过的所有问题都是关于一般的计算机速度下降的。就我而言,我有一个非常耗费处理器的任务,我想看看我能做些什么来加快它的速度。

所讨论的任务(但我正在寻找通用解决方案,而不是特定于此任务)是将 2 个 4K 视频文件拼接在一起形成一个 360 视频。

这有两个阶段:拼接和优化。

拼接非常耗 CPU,我最近使用了一台 28 线程的 I9 处理器,速度几乎翻了一番。现在,在运行这部分流程时,处理器的运行速度约为 80%(以前一直为 100%),这意味着有其他因素减慢了速度。我的 32GB 内存只使用了 30%,但也许是内存速度的问题?

磁盘使用率似乎在 1-2% 左右

GPU 使用率约为 30%

我怀疑我是否能进一步加快速度(仅供参考,目前拼接 1 小时的镜头大约需要一个小时)

第二阶段大约需要 2 个小时来拍摄 1 个小时的镜头,并且基本上会创建较低分辨率的视频以便于编辑。

在此阶段,CPU 使用率仅为 30% 左右,其他资源也没有得到充分利用(基于资源监视器)。一定有某种硬件因素拖慢了速度 - 我怎么知道是什么原因?

非常感谢

关于我的系统的一些注释(这些注释与回答这个问题其实并不相关,但为了完整性我把它们放在这里)

  • i9 7940X
  • 32GB(2x16GB)2400MHz
  • 2 个独立 M.2 驱动器(一个用于读取,一个用于写入)
  • Nvidia GTX 1080 Ti
  • 华硕 ROG STRIX X299-E GAMING

答案1

您仍然可以做很多事情来监控您的硬件并缩小范围。

您没有说您是否在运行 Windows 机器或哪个版本的操作系统,但我暂时假设它是 Windows 10 机器。

您可以使用性能监视器 (perfmon) 工具。这将使您能够监视系统的关键指标,并根据这些值确定瓶颈可能在哪里。

环顾四周,您可能还会发现一些有关 GPU 等的指标。

实际上找到您的指标是一门艺术,说实话我手头并没有所有的指标,但现在请尝试以下方法:

内存 | 已使用的已提交字节数百分比:跟踪当前已使用的 RAM 百分比(“正在使用”)。该百分比会随着应用程序的打开和关闭而波动,但如果该百分比持续增加,则可能表示存在内存泄漏。

网络接口 | 每秒总计字节数:跟踪通过特定网络接口(如 Wi-Fi 或以太网)发送和接收的字节数。如果该数据超过接口带宽的 70%,则应考虑升级。

分页文件 | 使用率:跟踪系统页面文件的使用量。如果使用量一直很高,则应考虑增加物理 RAM 或至少增加页面文件的大小。

物理磁盘 | 磁盘时间百分比:跟踪硬盘处理读取和/或写入请求所花费的时间。如果该时间一直很高,则应考虑升级到固态硬盘。

物理磁盘 | 磁盘读取时间百分比:除读取请求外,与上述相同。

物理磁盘 | 磁盘写入时间百分比:除写入请求外,与上述相同。

处理器 | 中断时间百分比:跟踪 CPU 处理硬件中断所花费的时间。如果该时间持续高于 10-20%,则可能表明某个硬件组件存在潜在问题。

线程 | 处理器时间百分比:跟踪单个进程线程(一个应用可能有多个线程)使用了多少处理器能力。仅当您能确定要监视哪个线程时才有用。

我使用过的一些 SQL:

PhysicalDisk(_Total)\平均磁盘秒/读取 PhysicalDisk(_Total)\平均磁盘秒/写入这两个计数器告诉您 I/O 子系统对操作系统数据请求的响应速度有多快;换句话说,就是延迟。无论您使用的 I/O 子系统类型如何,无论是本地物理磁盘、SAN 驱动器、NAS 驱动器还是固态驱动器,返回的延迟值都是有效的。您的延迟值通常不应超过 20 毫秒;如果您使用的是 SSD,则可能不超过 5 毫秒。如果您看到延迟值为一秒或更长,则说明您的 I/O 子系统存在问题,需要解决这些问题才能将性能保持在可接受的水平。

系统\处理器队列长度 处理器队列长度计数器告诉您在系统处理器上等待时间的线程数。如果此数字大于 0,则意味着每个核心的请求数超出了系统可以处理的范围,这可能会导致严重的性能问题。我曾经有一个客户,他有一个必须在工作日运行的月末流程,这将需要 2.5 到 3 个小时才能运行;当它运行时,该系统上其他所有人的性能都会非常慢。我查看了处理器队列长度计数器 - 通常白天它不会高于 3 或 4,但在月末它会跳到 30 到 50 之间。客户在具有 4 个处理器的虚拟机上运行,​​我问他们是否可以将其翻倍。他们做到了,下一个月末在 45 分钟内完成。

相关内容