答案1
(这篇小文章是我通常引用的真理“好、快、便宜,任选其二”的变体)
反过来问这个问题。在一个没有负载的系统上,你希望发生什么?如果现在没有其他进程需要内存或 CPU 等资源,系统是否应该让这些进程或资源匮乏?
操作系统必须以正确的方式平衡速度和空间,并且必须为任何可能想要访问相同资源的进程做到这一点。它必须尊重进程可能请求的“锁”之类的概念,以便它可以原子地执行操作,并且复制文件可能需要多个原子操作。但它会尽力在操作系统正常运行时间内优先协调这些请求。
使用 etc.检查进程并top
不能告诉你进程内部的很多信息。它只会让你大致了解几分钟前的整体状态,并有助于识别一些一般问题。但它不应该被用作进程的基准,尤其是那些严重依赖内核操作的进程。
一般来说,调度程序会在某些参数范围内运行,以平衡资源请求并减少争用(如果可能),同时优化执行。复制文件(尤其是跨文件系统复制)的特殊之处在于,需要跨设备和内核空间进行大量协调,以确保一切安全。复制文件旨在相对防爆,因此在大多数情况下,都有锁定、检查和重试来处理可能出错的所有小事。复制处于关键部分时将有等待,并且 UI 也必须更新。因此,从 UI/控制台到内核再到设备的整个系统都参与其中。
我看到您在评论中提到了笔记本电脑的电池寿命(应该在问题中)。在这种情况下,复制操作根本不关心电池寿命。复制文件不关心您的电池。如果目的是永远不让 CPU 转速过高而需要步入更高的功率水平,则由调度程序/操作系统/内核来限制可用资源。
也许 Linux 内核不擅长此道,或者 Ubuntu 免费或非免费专有电池控制设备和小工具不适合您。但这是一个不同的问题,并且可能出现在需要与文件复制或移动相同资源的任何过程中。
我们需要的是某种电力统计工具这使我们能够深入研究最耗电的进程,例如手机。
事实上,系统可能已经对 CPU 进行了节流,使 CPU 处于较低的功率状态,因此复制需要更长的时间。“90%”是估计可用“CPU”总量的百分比。它不是一个固定的甚至定义明确的值。
(我也想起了数据中心运行的电力成本,任何类型的磁盘寻道,即使缓存在内存中,也是电力成本和废热来源的很大一部分!)