@
yoyoyoyolol Apple 在 Snow Leopard 的时候引入了一个系统级别的任务队列管理系统,Grand Central Dispatch ,现在想来这东西怕不是也是为了 iPhone 设计的。它的一个功能就是可以创建有优先级的任务队列。你可以选择如 background (清理垃圾?)、userInitiated (导出?)、userInteractive ( UI 任务)这样的优先级。
这个优先级在 macOS 上之前的作用主要是在多个线程同时执行的情况下,低优先级的线程会抢不到计算资源。这还导致了 macOS 用了几十年的 spin lock 被弃用了,因为 spin lock+有优先级的调度会导致死锁😂。
到 Apple Silicon 出来,大家发现,如果你选 background 优先级,那么不只是抢计算资源,低优先级的线程会直接跑在小核上,任何其它系统设置都改不了。其实这个挺好的,因为 MacBook 之前的一大问题就是很多这种后台任务可以触发 Intel 的睿频,导致风扇狂转续航爆炸。但是具体到这里就会导致 Finder 变慢了。
对于你说的 cp 文件大小不一致,其实我觉得可能是会存在的。APFS 是支持文件 COW 的,如果你原地复制一个大文件,APFS 不会真的拷贝任何数据,而是链接回原文件。如果你对两者之一做了修改,才会真正进行文件复制。那如果你原文件 A 、B 其实是一个文件,然后按顺序复制到别的宗卷,就会出现这个情况:复制 A 的时候,发现在第二个宗卷,没法 COW 优化,复制一份;复制 B 的时候,已经忘了自己复制过 A 了,那再复制一份吧。最后导致总文件增大。
注意,如果是同宗卷复制,那不会出现这个情况,因为复制出来的 C 、D 和原来的 A 、B 指向同一个物理意义上的文件。