据我所知,CPU 通常比 I/O 设备(如 HDD、网络、RAM 等)更快,因此在复制文件时,瓶颈通常是 I/O 限制(对?)。
如果在某些情况下 I/O 设备比 CPU 快(比如在虚拟机中),是否有可能让 CPU 忙于移动数据(比如从缓冲区到内核空间,从内核空间到用户空间)?然后它会变得受 CPU 限制吗?
最佳答案
这取决于程序和程序运行的条件。 程序复制数据的速度极不可能受到 CPU 速度的限制。但是,如果计算机运行其他程序,这些程序会大量使用 CPU,并且优先级高于执行复制的程序,则可能会出现这种情况。
最常见的瓶颈是持久性存储介质的速度(例如硬盘)。 然后,可用的 RAM 量。 然后,CPU 不可用。
当且仅当 I/O 设备的速度如此之快以至于超过 CPU 速度时。那么,可能就是这样。然而,这是一个假设的情况,因为 CPU 通常不会自己执行复制,而是命令其他硬件执行此操作。 而且,在实际系统中,可用于 I/O 设备的带宽远低于 CPU 和 RAM 带宽。
如果复制高效完成,将 RAM 数据复制到 HDD 应该不会给 CPU 带来压力。 RAM 和北桥的数据可以通过南桥复制到 HDD。 另见 here .
如果复制效率低下,程序当然可以用 CPU 读取每个字节并复制它。
此外,可以推断,答案还取决于系统的硬件和架构。
关于linux - 文件复制是否受 CPU 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648502/