文件复制可以绑定 CPU 吗?

Can file copying be CPU-bound?

据我所知,CPU 通常比 I/O 设备(如 HDD、网络、RAM 等)更快,因此复制文件时的瓶颈是通常 I/O-绑定(对吗?)。

如果在某些情况下 I/O 设备比 CPU 快(比如在虚拟机中),是否可以让 CPU 忙于移动数据(比如从缓冲区到内核​​ space,从内核 space 到用户 space)?然后它会变成 CPU-bound 吗?

这取决于程序和程序所在的条件运行。 CPU 速度极不可能限制程序复制数据的速度。但是,如果计算机 运行 的其他程序密集使用 CPU 且优先级高于执行复制的程序,则可能会出现这种情况。

最常见的瓶颈是持久性存储介质的速度(例如硬盘)。 然后,可用的 RAM 量。 然后,CPU不可用。

当且仅当 I/O 设备速度超快,超过 CPU 速度。那么,可能就是这样。然而,这是一个假设的情况,因为 CPU 通常不会自己执行复制,而是命令其他硬件执行此操作。 而且,在实际系统中,I/O 设备可用的带宽远低于 CPU 和 RAM 带宽。

如果复制高效完成,将 RAM 数据复制到 HDD 应该不会造成压力 CPU。 RAM 和北桥的数据可以通过南桥复制到 HDD。 另见 here

如果复制效率低下,程序当然可以使用 CPU 读取每个字节并复制它。

此外,可以推断,答案还取决于系统的硬件和架构。

恐怕回答错误。至少不总是正确的。

如果我在 Windows Explorer 中复制一个包含大约 50.000 个文件(不同大小)的文件夹,然后 TaskManager 报告该副本大部分是 CPU 绑定的。 (即 TM 报告低磁盘使用率和非常高的 CPU 使用率)