Firefox:“isolate+”进程 CPU 使用率 100%

Firefox:“isolate+”进程 CPU 使用率 100%

我安装了全新的 Ubuntu 和 Firefox。当我浏览常用网站时,由于“isolate+”进程,我的 CPU 使用率超过 100%。Google 完全没用。我尝试过禁用 Firefox 中的硬件加速,卸载了 snap 版本并安装了 .deb 版本。我唯一的扩展是 ublock。

Ubuntu 22.04。Thinkpad T16、16GB RAM、i7 1260P、NVidia MX550(驱动程序=nouveau)

当我使用同一设备启动 Windows 时不存在此问题。(双重启动)

编辑:重现此行为的最简单方法是尝试 edclub.com 上的“typing jungle (UK)”第 45 节。(我正在尝试学习一种新的键盘布局……)。

应用@Raffa建议的更改后的状态

答案1

关于isolate+

top假设您在终端的命令交互屏幕输出中看到这一点,+则符号表示字符串被缩短以适合当前终端窗口...扩展/最大化终端窗口应该显示该进程的命令名称字符串的其余部分,但Isolated Web Co实际上应该是,Isolated Web Content但由于命令字段的限制,超过 15 个字符会被处理掉/proc/{PID}/stat

这与新的Firefox 的站点隔离功能又名裂变计划这似乎是 Firefox 最新版本中默认启用的...它涉及使用/利用GFX Web渲染器基于 GPU 的 2D 渲染引擎)依赖于系统驱动程序/对 GPU 的支持...如果您遇到此类问题,则很可能是 GPU 驱动程序/设置问题,您需要更新/更改驱动程序,使其更稳定/经过测试/更好(如果可供使用的话)或者更改 GPU 驱动程序设置(如果可以的话),例如 NVIDIA optimus/hybrid 卡选择单个活动 GPU。

出于纯粹的安全故障原因,不建议禁用此安全功能。

不过,可以在 Firefox 的配置选项卡中禁用此功能(about:configfission.autostart),方法是将和选项都设置gfx.webrender.allfalse,然后重新启动 Firefox。

关于现实

除此之外,您可能会发现 Mozilla 支持提供的以下资源很有用:

Firefox 占用过多内存或 CPU 资源 - 如何修复

但是,如果您假设 Web 浏览器(Firefox、Chrome……等等。)是这种互动中唯一/默认的罪魁祸首,那么请稍安勿躁……网页实际上是一组程序指令/代码,即它们是编写/编码以与系统资源(例如 CPU、GPU、内存、磁盘空间……等)交互并使用系统资源的计算机程序……事实上,它们通过代理来实现这一点(Web 浏览器) 在某种受控/隔离的环境中不会改变它们的实际情况...因此,像任何其他程序一样,它们可能是有用的/有害的、编写/编码良好的或其他的、系统资源高效的或占用大量资源的网络之子。

我已经测试了您问题中提到的示例网站:

https://www.edclub.com/sportal/program-3/2945.play

在 Firefox 和 Google-Chrome 网络浏览器上都发现 CPU/GPU 使用率意外地高,类似于您在问题中提到的数字(尽管 Google-Chrome 的 CPU 使用率略低(约 50%),因为它的 GPU 利用引擎似乎更高效)...然后我手动检查了该网页的源代码,发现他们使用了很多(比我通常预期的网页内容更多)代码渲染的场景/视图,即它们使用计算机资源几乎完全从头开始绘制您看到的图片(请不要认为我在批评他们的代码,而是在描述它)...然后我运行了一个标准化的网络分析工具(灯塔) 得到以下结果:

因此,您看到的高负载是正常的……这是浏览器的 Web 元素绘制/渲染过程相当密集的结果……这会在初始场景绘制时短暂提高 CPU/GPU 负载/利用率,然后稳定下来,然后在绘制新的场景部分时再次飙升,例如移动视图时……这反映在系统在 1、5 和 15 分钟时的平均负载分别为 2.36、1.20 和 0.80,这属于现代系统的正常预期平均负载范围内(四核 CPU 或更多) 台式电脑。

关于差异

Web 浏览器有两个主要组件:UI 和引擎...虽然 UI 具有高度可移植性并且不会造成差异,但引擎却不可移植,并且可能会导致不同操作系统之间甚至不同硬件之间的差异。

引擎的性能各不相同,取决​​于操作系统或硬件...有些引擎对某些操作系统/硬件的支持/利用率比其他引擎更好...因此,相同的网络浏览器/网络浏览器引擎可能会在不同的操作系统之间,甚至在同一操作系统上的不同硬件之间显示出一些差异。

关于替代方案

  • 您可以根据需要调整引擎配置:

    例如,可以更改 Firefox 中 Gecko 引擎的渲染行为,例如启用WebGPU通过about:cofig设置(添加任何不存在的选项) gfx.webrender.all, dom.webgpu.enabled, layers.gpu-process.enabled, layers.mlgpu.enabled,media.gpu-process-decoder以及media.ffmpeg.vaapi.enabledtrue...然后,重新启动 Firefox。

    另外,看看这个关于为 WebRender 启用硬件加速支持的 Ubuntu 讨论主题

  • 你随时可以安装具有不同引擎的另一个浏览器:

    正如我上面提到的,在测试了您的示例网页后,Google Chrome 显示的 CPU 使用率低于 Firefox...在我看来,原因是Google-Chrome 使用的引擎(据称是 Chromium 浏览器系列)似乎(在我的系统上,可能也会在你的系统上)为 GPU 提供更好的支持/利用率,从而减轻了 CPU 渲染过程的负担,同时壁虎Firefox 使用的引擎似乎没有为相同的 GPU 提供这样的支持/利用,而是将所有/大部分渲染过程放在 CPU 上。

关于GPU

当 CPU 负载过高时,为什么要责怪 GPU 支持...是 CPU 不能完美地完成其工作...难道 CPU 支持是罪魁祸首?

不,如果您的 CPU 不受支持,那么很可能您没有时间/方式注意到 Web 内容渲染过程导致的 CPU 负载增加...相信我,您将没有机会安装 Web 浏览器,更不用说启动和使用它了。

CPU 支持首先是二进制0机会1...介于两者之间的任何东西都无法有效地工作。

也就是说,CPU(很久以前,当地球还是平的时候,它曾被称为“微处理器”)实际上是一种硅基(到目前为止) 微处理器芯片...同样,GPU、RAID、网络、加密...等都有自己专门的专用微处理器芯片,旨在比强大的 CPU 本身更有效地完成某项工作。

CPU 能独自完成所有事情吗?……当然,就像过去它被称为““微处理器……因此计算机的生命还在继续……硬件图形加速、网络流管理、RAID管理、加密...等。)用单独的专用微处理器芯片完成的具有等效软件图形加速、网络流管理、RAID管理、加密...等。) 由 CPU 完成。

无论哪种情况,CPU 负载都会相同吗?......至少会相当于那些硬件芯片的总负荷吧?,它会高得多,因为这些专用芯片擅长做它们被设计用来做的事情……以 GPU 为例。它被设计用来处理许多(远远超过 CPU 所能) 并行处理小进程(例如同时渲染图片/场景/视图的数千个小部分)。另一方面,CPU 喜欢并行处理少量线程/部分,处理速度比 GPU 更快的进程,但在渲染非常复杂的 Web 组件的画布/场景/视图时会卡住。

Web 引擎在渲染 Web 内容时应该优先使用 GPU,但在与 GPU 的交易失败时将使用 CPU...此外,开发人员很难在多个平台/操作系统上添加对所有 GPU 的支持...因此,在大多数情况下,多平台浏览器继续在 CPU 上进行绘画/渲染,作为一种简单的便携/兼容替代方案,因为 CPU 在不同的操作系统上几乎具有普遍支持,而 GPU 则没有...即,计算机用户要求在某个操作系统上为某个 GPU 提供驱动程序/支持是很常见和正常的,但他们多久要求为他们的 CPU 提供驱动程序一次?

CPU 受到普遍支持的原因(除了显而易见的原因,即没有适当的支持,任何操作系统都无法在其上运行) 是它们的架构种类有限,其工作机制(即地址、桥接器、缓冲区……等)是标准化的,并且本质上向后兼容……然而其他芯片大多不是这样。

相关内容