看来只能暂时关闭 Firefox 中的硬件加速了

最近经常发现 Firefox 浏览器在使用过程中会有卡顿。卡顿时 CPU 持续(十几到几十秒)在 25% 的占用率(对于四线程来说就是单个线程的 100%)。这种情况甚至都会影响到其它应用的运行,比如远程桌面(xfreerdp)里面无法复制粘贴等。(2017-06-28 更新问题。)

这个问题暂时只是在自己的笔记本里面遇到的。笔记本系统是 openSUSE Tumbleweed 20170521 快照,桌面是 KDE。Firefox 使用的是 openSUSE 上定制的 Firefox 52.1.1 (64-bit)。

在网上搜索类似问题也发现大家的确是抱怨 Firefox 占用 CPU 资源较多,但是似乎跟我遇到的这个情况并不一样。按照 mozilla support 上的这个支持帖子来检查也没有发现问题。

后来偶尔发现一个与硬件加速(Hardware Acceleration)相关的字体和崩溃问题,觉得应该试试看关闭 Firefox 里的硬件加速。打开 Firefox「设置(Preferences)」中的「高级(Advanced)」条目,在「常规(General)」选项卡中的靠下位置,取消勾选「自动启用硬件加速(Use hardware acceleration when available)」,然后关闭并重启 Firefox 即可。

这么修改之后似乎真是有效果。今天上午修改之后到现在 Firefox 进程占用 CPU 在 0~50% 之间波动,且经常比较高,但是几乎没有再出现 CPU 占用卡在 25% 并同时影响到其它操作的情况了。之所以不敢确定是因为我没有长时间测试和观察。而 CPU 单线程占用达到近 50% 可能是因为 Intel CPU 的睿频,又或是其它。

UPDATE

经过一个星期的观察发现,禁用「硬件加速」只能减少出现 CPU 卡在 25% 的次数。

UPDATE 2017-06-28

一个偶然的机会让我意识到上面描述的问题似乎只出现在某个特定情况下。这个特定情况包含下面几个要素,

  1. 使用外接显示器(因为如果只有一个显示器的话我不知道怎么从 Firefox 的窗口中直接切换到全屏显示的 xfreerdp 远程桌面窗口中同时还能查看本机的任务管理器);
  2. 从命令行使用 /f 参数(全屏)运行 xfreerdp;
  3. 在 Firefox 中浏览时鼠标直接滑移到 xfreerdp 窗口中进行操作。

这样就很容易观察到上面描述的问题。

进一步测试发现,如果使用 xfreerdp 的时候不使用 /f 参数,而是指定外接显示器大小(使用 /size 参数),连接完成后再从窗口标题栏上通过右键单击打开「更多选项 More options」然后选择「全屏 Fullscreen」来实现全屏的话,就不会出现 Firefox 卡在 25% CPU 的问题。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/disable-hardware-acceleration-in-firefox/>。转载请保留此信息及相应链接。

6 条关于 “看来只能暂时关闭 Firefox 中的硬件加速了” 的评论

  1. 感觉现在火狐越来越不好用了,而移动端更是差的要死(加载网页慢的无法忍受)。从去年火狐和chrome一起用,感觉还不错。

    • 相比而言现在 Firefox 的确是有些慢了。不过我文章中的这个问题似乎不能完全怪 Firefox,等会儿更新一下文章内容。

          • 博主,你在英国,也介绍一些当地的风土人情,社会医疗经济政治等等情况啊,当然配图是必须的。可以否?
            好像要求的优点多了,^_^.

            • 这要求很正常,一点也不多,其实早就该写一些感受了,好歹证明我认真地在这里生活了。可是我写作能力太差,拍照更是没法看,就很少写,然后慢慢就淡忘了。(:-D 干脆就是太懒了)
              反正还要再呆一年,下次有想法一定写下来。其实你从我的博客上也能看出来,我这人没那么细腻的心思和深刻的思想,扑捉不到可以呈现给大家的美,这才是什么也写不出来的根源 :-)

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>