我应该运行多少个进程才能尽可能高效?

我应该运行多少个进程才能尽可能高效?

情况如下:

我正在处理图像,将它们从 tif 转换为 ecw 并重新投影它们。

我使用的软件只使用一个进程,而且似乎只有一个核心。当我运行批处理操作时,我看到的 CPU 使用率为 13%。

我的规格如下:

i7 3770K 16 GB 内存 2TB SATA 7200 HD

该程序逐个文件进行处理,我有大约一百万个文件需要转换。

为了提高效率,我把所有文件分成 8 个文件夹,然后分别运行批处理操作。这样,我的 CPU 利用率就能达到 100%。

由于每个进程也会读取文件并写入新文件,我担心 I/O 可能是一个问题,但从我在任务管理器中的理解来看,这不是问题?(不确定)

我的问题是,这是最好的方法吗?运行 8 个批次实际上会减慢我的速度,还是我应该运行更多批次?

谢谢。

附件任务管理器: 1 2 3 4

答案1

如果你使用的程序本身不支持多线程,并且只有一个线程完成所有工作(在本例中为图像的转换),那么你会看到大约在最佳情况下,处理器的使用率为 1/8(或 12.5%)。

事实上,如果是这样的话,你可以通过并行生成几个这样的进程来实现更高的吞吐量,假设它们不会执行太多的磁盘 I/O(这会受到同时访问多个文件的影响) - 但在你提供的屏幕截图中,似乎任务是 CPU 受限而不是磁盘受限;没有一个进程的读/写速率超过 0.5 MB/s。

请注意,在您的特定情况下,这还会导致程序的平均 RAM 使用量增加八倍,因此如果内存使用量成为限制因素,您可能需要减少运行量。如果您发现系统体验变得太慢,您还可以将进程设置为以较低的优先级运行。

答案2

看看这些图表,我同意 Aaron Miller 的观点,现在看起来更像是 CPU 瓶颈而不是 IO 瓶颈。我会建议删除批处理,这样 CPU 的利用率最多为 90%,这样就没问题了。驱动器上的吞吐量看起来不错,尽管响应时间很糟糕,但真正有帮助的唯一方法是运行更少的批处理,或者将工作分散到多个驱动器上(你似乎没有这样做)。

相关内容