5 年了,利用火狐扫瞄器招致CPU特别高负载的首恶
5 年了,使用火狐浏览器导致CPU异常高负载的罪魁祸首终于找到了!
自 2018 年 11 月以来,一些用户发现,Windos Defender 中的一个未知错误会使得用户在打开 Firefox 火狐浏览器时,CPU 占用率会异常提高进而影响浏览器性能。多年来,此问题该一直在影响用户,并且不仅限于 Windos 10。
今年 3 月,Mozilla 工程师 Yannis Juglaret 在 Bugzilla 发帖表示(Bugzilla是由开发网络浏览器Firefox的Mozilla基金会运营的错误管理系统),他们已经确认了导致此问题的具体原因,并且将其细节反馈给了微软 Windos 团队,等待其修复。
该工程师表示,当前版本的 MsMpEng.exe 中存在严重的性能问题。这个性能问题使得在 Windos 系统中,当 Windos Defender 的实时保护功能激活时(不合理高占用计算在 MsMpEng.exe 进程中执行),对 VirtualProtect(以及其他事物)的调用变得不合理。而在标准的 Firefox 配置中,对 VirtualProtect 的调用数量目前非常高,这就解释了 打开 Firefox 后出现的 CPU 高使用率问题。
由于对 VirtualProtect 的调用大多数是 JIT 引擎引起的,随后,Yannis Juglaret 尝试在 Firefox 中禁用 JIT 引擎以解决不合理的 CPU 占用问题,禁用 JIT 引擎之后,他还进行了性能测试。
Yannis Juglaret 的测试结果显示,在“正常”情况下,打开火狐浏览器,系统的 CPU 就会出现严重且不合理的资源占用(如下表。图中红色区域代表有大量的CPU高负载情况),这极大影响了应用本身的运行效率。
而在禁用 JIT 引擎之后,CPU 高占用的红色区域大幅减少。由此可见这个解决思路是正确的, MsMpEng.exe 的问题很大。
(总 CPU 时间从 16 秒减少到 6 秒;CPU 时间减少了 63%))
该工程师和微软沟通后,目前,微软表示已经发布了一个补丁,将在即将到来的 3 月发布(mpengine.dll 引擎版本1.1.20200.2/3)中尝试缓解这个问题,这意味着用户将在接下来的4周内逐渐获得修复。微软表示,修复之后,MsMpEng.exe 的 CPU 使用率将减少多达 75%。
5年了,这个困扰火狐浏览器用户多年的老问题,如今终于有了解决办法。
微软 Windos 团队,你可长点心吧。