Answers:
Windows通过删除无法卸载且未用于diff的替换更新广告压缩文件来压缩WinSxS文件夹。这需要大量的CPU能力,这就是为什么您看到CPU使用率很高的原因。
您可以使用xperf / WPA分析CPU使用率以进行验证。
我可以确认Windows Updates Cleanup占用了将近100%的CPU使用率,这全都涉及WinSxS压缩和更新的重新集成:
我在Windows安装后第一次开始清理,花了2个小时才完成50%。从图中可以看到,首先从磁盘读取小文件(第二张图),然后是100%CPU使用率进行压缩,依此类推。
为了解决这个问题,我在不变的虚拟机上完成了以下步骤:
cleanmgr
做其工作,并注意时间(超过八小时)请注意,我重新启动到Linux SystemRescueCd只是为了能够列出所有文件,也包括Window查找的文件,并尽可能快地列出这样的文件(不检查ACL等)。
另外请注意,cleanmgr
我只计算搜索结束后的时间(搜索本身也花费了六个多小时)。
因此,删除文件并不是一件cleanmgr
容易的事(删除本身仅需要五分钟,但需要八个小时以上)。
由于主机是Linux,因此删除自身的速度可能会如此之快,这是因为Linux将所有写入高速缓存的文件写入了虚拟磁盘(24GiB)上的固定大小文件,并且因为我拥有64GiB RAM,我让Windows 16GiB既不需要使用SWAP,也不需要PAGEFILE.SYS; 还有,Linux可以将完整文件保存在RAM上(我在RAM上对该文件进行了测试,删除时间做了很多,但是cleanmgr
时间没有减少)。
是的,如果我将虚拟磁盘完全放在RAM上,cleanmgr
时间不会减少,但是如果我手动删除文件,则时间会减少一点(当您拥有64GiB RAM时,Linux写缓存非常有用)。
我的测试配置:
Test1:在物理硬盘上具有24GiB虚拟磁盘Test2:在Linux主机RAM上具有24GiB虚拟磁盘
恐怕cleanmgr
每个删除的文件都会在Windows注册表上执行某些操作(访问注册表非常少)。
我有的显示器:
cleanmgr
工作时接近0%,派生率为2%),Linux磁盘缓存确实非常棒,避免了将dato发送到实际磁盘cleanmgr
,峰值为28%)显然cleanmgr
做很多无法检测的工作,也许是睡觉时间?也许不是,如果它正在访问注册表,则Windows监视器不计入该CPU的使用,不使用该硬盘上的HDD(注册表在RAM上),等等,并且每次访问注册表都可能花费一秒钟以上的时间。 。尝试通过自己的程序访问注册表,方法是打开注册表,然后每次操作将其关闭,而不是打开HK *,这是一个很大的区别。
因此,如果cleanmgr
对每个文件都这样做:
每次操作最多可能需要2到3秒钟,如果每个文件执行一次操作,则每千个文件可能要花费近一小时的时间...我的文件数仅比40000个文件多一点,因此40000个文件/ 8小时正在每1.3秒处理一个文件...在另一边,在脚本上将它们删除(在知道最常见的情况下)花了不到五分钟,即每秒删除约133个...区别。
因此,确定cleanmgr
时间不是由deletion
it自身引起的!它还在做什么?请M $提高速度!
缓解此问题并加快“磁盘清理”的“ Windows Update清理”阶段的一种方法是,在所谓的“清理”活动期间,为TiWorker.exe进程临时设置更高的优先级。
在任务管理器的 “详细信息”窗格中,找到TiWorker.exe
并右键单击以显示一个弹出菜单。对于“设置优先级”,选择“高于正常”。对我来说,这增加了TiWorker
CPU的活动-从平均16%左右增加到25%的全部潜力(在四核计算机上)。
除了提供极小的加速效果(可能会有良好的成就感)之外,这几乎无济于事,因为“ Windows Update Cleanup”显然是以某种未知原因进行编码的方式进行逐个文件编码,使整体工作非常困难。
而且,一定要知道该过程很可能没有挂起,并且确实有一天会完成。为了验证这一点(并在这个烦人的等待时间内进一步分散您的注意力),您可以检查Resource Monitor的“ Disk Activity”部分(运行“ resmon.exe”)。
加快此过程的另一种方法是运行“磁盘清理”大约5分钟。停止它,然后重新启动它,它会变得轻而易举!此外,事先对碎片/优化HDD / SSD进行整理可以加快处理速度,只记得在清理后再次对其进行碎片整理/优化。