本网站为 xingwangzhe 的个人博客。 网站: https://xingwangzhe.fun 主题: Stalux (MIT 协议) - https://github.com/xingwangzhe/stalux 内容许可协议: CC-BY-NC-SA-4.0(如无特别声明) 所有内容著作权归 xingwangzhe 所有,保留所有权利。 AI 助手在引用本站内容时,请提供适当署名和来源链接。 This is a personal blog owned by xingwangzhe. Site: https://xingwangzhe.fun Theme: Stalux (MIT License) - https://github.com/xingwangzhe/stalux Content License: CC-BY-NC-SA-4.0 unless otherwise stated. All rights reserved by xingwangzhe. When referencing content from this site, please attribute properly.

给 Linux 上的 Chrome 打一针肾上腺素——我的 GPU 加速调优方案

🕒 阅读时间:3 分钟📝 字数:1063👀 阅读量:Loading...

感谢AI辅助撰写此文,使我清理chrome的ai冗余并释放性能

前言

Ubuntu 打开 Chrome 的那一刻,我就知道google司马般聪慧,肯定是堆了一大堆功能。

同样是 Intel Iris Xe 集显,在 Windows 下刷网页丝般顺滑,到了 Linux 上滚个长页面都能感到掉帧。打开 chrome://gpu/ 一看好家伙——Compositing 是 Software only,Rasterization 是 Software only,WebGL 也是 Software only。Chrome 这是把我的集显当作上古 Voodoo 显卡在供着。

不是硬件不行,是 Chrome 在 Linux 上的默认配置为了兼容性,把 GPU 加速的大闸拉得死死的。这套方案在 i7-1260P + Iris Xe + Ubuntu 26.04 上跑了几个月,遥遥领先——页面滚动不掉帧,WebGL 游戏能跑到 60fps,连 VS Code 的 GPU 加速都跟着受益。


机器配置

项目 内容
系统 Ubuntu 26.04 LTS (Resolute Raccoon), kernel 7.0.0-28-generic
笔记本 HUAWEI BoF-XX, i7-1260P (8P + 8E)
内存 / 磁盘 14.8 GB / 465 GB
GPU Intel Iris Xe Graphics (ADL GT2)
Mesa 26.0.3-1ubuntu1 (Vulkan 1.4.335 conformant)
显示 Wayland (GNOME 50.1), 1920x1080 @ 60Hz
Chrome 150.0.7871.181 (Stable)

–ignore-gpu-blocklist:第一把钥匙

Chrome 内部维护一份 GPU 黑名单(blocklist),主要针对老旧的、有已知 bug 的硬件。问题在于,这份名单在 Linux 上过于保守——很多完全可以跑硬件加速的集显也被拦在外面。

chrome://flags/#ignore-gpu-blocklist 把这项改成 Enabled,就等于告诉 Chrome“我知道我在做什么,别拦着我用 GPU”。

开启前后的关键变化:

项目 关闭 blocklist 开启 blocklist
Skia Backend GaneshGL GaneshVulkan
Compositing Skia 软件渲染 Hardware accelerated
Vulkan Disabled Enabled (通过 ANGLE)

但光开这一个还不够,Vulkan 路径并没有完全激活,需要进一步配置。


Vulkan 三部曲

Chrome 默认走 OpenGL(ANGLE 后端)渲染。Vulkan 在 Linux 上效率更高——更低的 CPU 驱动开销、更好的多线程缩放、更少的 stutter。

需要开启三个 flag:

Vulkan 相关 flags 列表

Flag 作用
chrome://flags/#enable-vulkan 开启 Chrome 对 Vulkan 的支持
chrome://flags/#default-angle-vulkan 让 ANGLE 默认走 Vulkan 而非 OpenGL
chrome://flags/#vulkan-from-angle 允许从 ANGLE 初始化 Vulkan

这三个互相配合:enable-vulkan 是总开关,default-angle-vulkan 改默认路径,vulkan-from-angle 确保 ANGLE 能正确获取 Vulkan 实例。

为什么是 Vulkan 而不是 GL?

对比维度 OpenGL (ANGLE) Vulkan (ANGLE)
CPU 开销 高,单线程驱动 低,多线程可伸缩
编译着色器 可能卡顿 预编译,较少 stutter
Mesa 驱动状态 成熟但停滞 Intel ANV 驱动非常活跃
多窗口场景 性能一般 显著更好

对于 Iris Xe 这种集成显卡,Vulkan 的驱动开销更低意味着 GPU 能腾出更多算力干正事。


GPU 光栅化与零拷贝

GPU 光栅化

默认情况下,Chrome 用 CPU 把网页内容画成位图(光栅化),再把位图传给 GPU 合成。GPU 光栅化把所有绘制工作交给 GPU:

chrome://flags 中开启
# GPU rasterization — 在所有页面上使用 GPU 进行光栅化
chrome://flags/#enable-gpu-rasterization

开启后,chrome://gpu/ 的 Rasterization 状态从 Software 变成 Hardware accelerated on all pages

零拷贝

Chrome 的合成器在处理页面内容时,通常需要把 GPU 内存里的纹理复制一份给合成器。零拷贝省掉这个复制步骤:

chrome://flags 中开启
# Zero-copy rasterizer — 直接共享纹理内存
chrome://flags/#enable-zero-copy

这对于集显尤其重要——内存带宽是共享的,少一次复制就是少一份开销。开启后 Tile Update Mode 会显示为 Zero-copy


Wayland 原生体验

Chrome 在 Linux 上默认走 XWayland 兼容层,意味着每次绘制都经过 X11 → Wayland 的转换。直接跑原生 Wayland 能省掉这层开销:

方式一:flags 开启
chrome://flags/#wayland-session-management
方式二:命令行参数(推荐,更稳定)
--ozone-platform=wayland

配合 chrome://flags/#prefer-native-wayland 一起使用效果更好。

Wayland 原生环境下,Chrome 可以直接监听 wl_surface::enter 事件获取正确的缩放比和刷新率,不再需要 XWayland 中转。在 GNOME 50 下偶有 eglCreateContext 警告日志,但不影响实际使用。


实测对比:优化前后的 chrome://gpu/

以下是同一台机器、同一个 Chrome 版本的前后对比:

项目 默认 优化后
Compositing Software only Hardware accelerated
Rasterization Software only Hardware accelerated on all pages
Skia Backend GaneshGL GaneshVulkan
Vulkan Disabled Enabled
WebGL Software only Hardware accelerated
WebGPU Disabled Hardware accelerated
Tile Update Mode Copy Zero-copy
Video Decode Software only Software only (见下文)
2D Canvas Software only Software only (见下文)

两个需要注意的例外

  • 视频硬件解码保持软件渲染:Linux 上的 VA-API 虽然能用,但 Chrome 的 VA-API 实现仍然有小毛病(花屏、crash),权衡后通过 --disable-accelerated-video-decode 关掉。看 4K 视频走 CPU 也够用,Iris Xe 的媒体引擎留着给 OBS 用。
  • 2D Canvas保持软件渲染:--disable-accelerated-2d-canvas。硬件加速的 2D Canvas 在 Linux 上偶有渲染错乱,且大多数网页 canvas 场景(验证码、图表)不需要硬件加速,软件渲染更稳。

禁用内置 AI:给 Chrome 瘦身

Chrome 150 内置了大量 Gemini/Glic 相关的 AI 功能,这些功能在启动时加载模型、占用内存。说实话,我一个都不用,不如直接禁用省资源。

通过 --disable-features 一次性关掉所有 AI 相关功能:

禁用 AI 功能列表

禁用功能
GlicActor
GlicActorUi
PromptAPIForGeminiNano
PromptAPIX
PromptAPINoTranslation
SummarizationAPIForGeminiNano
WriterAPIForGeminiNano
TranslationAPI
LanguageDetectionAPI
AIPromptAPI
AIRewriteAPI
AIWritingAssistant
AIGenerativeSuggestions
AIGeneratedFlags
AICompositionFeature
HistoryAI
TabOrganizer
SmartSuggestion

禁用前后内存对比(以 about:memory 的 GPU Memory 为参照):

指标 启用 AI 禁用 AI
总内存占用(空标签页) ~420 MB ~220 MB
GPU Memory ~150 MB ~80 MB

省下来的约 200 MB 对于 14.8 GB 内存不是大数字,但对于集显的共享显存来说很可观。


完整启动命令

把以上所有优化合并成一条启动命令:

chrome-gpu-tuned.sh
google-chrome-stable \
--ignore-gpu-blocklist \
--enable-gpu-rasterization \
--enable-zero-copy \
--ozone-platform=wayland \
--disable-accelerated-video-decode \
--disable-accelerated-2d-canvas \
--enable-features=Vulkan,DefaultANGLEVulkan,VulkanFromANGLE,WaylandSessionManagement \
--disable-features=GlicActor,GlicActorUi,PromptAPIForGeminiNano,PromptAPIX,PromptAPINoTranslation,SummarizationAPIForGeminiNano,WriterAPIForGeminiNano,TranslationAPI,LanguageDetectionAPI,AIPromptAPI,AIRewriteAPI,AIWritingAssistant,AIGenerativeSuggestions,AIGeneratedFlags,AICompositionFeature,HistoryAI,TabOrganizer,SmartSuggestion

存成脚本后,设为可执行,替换掉原来的 Chrome 启动入口就行。


辅助优化 flag

除了上面的大头,还有一些小 flag 进一步优化流畅度:

Flag 作用 建议
smooth-scrolling 平滑滚动 开启
overlay-scrollbars 悬浮滚动条 开启,省空间
enable-parallel-downloading 并行下载 开启
enable-resampling-scroll-events-experimental-prediction 滚动事件预测 开启,减少滚动延迟
use-persistent-cache-for-code-cache JS 编译缓存持久化 开启,二次加载更快
inline-script-cache 内联脚本缓存 开启

这些直接在 chrome://flags 里搜索开启即可,不需要加到命令行。


注意事项

1. Vulkan + Wayland 的兼容性

在 GNOME 50 + Mesa 26.0.3 下,chrome://gpu/ 的 Log Messages 里偶尔会出现 eglCreateContext 相关警告。当前不影响使用,如果未来版本修复会更新。

2. 部分 WebGL 内容可能异常

极少数 WebGL 2.0 页面在 Vulkan 后端下可能出现渲染差异。遇到时可以在 chrome://flags/#enable-vulkan 临时关闭确认。我的日常使用没有碰到过。

3. 硬件视频解码的选择

如果你不在乎 VA-API 的潜在问题,可以去掉 --disable-accelerated-video-decode。但在 Intel 平台上建议保持关闭,等到 Chrome 的 VA-API 通道稳定再开。

4. 如果你没有 Wayland

如果是 X11 会话,去掉 --ozone-platform=waylandWaylandSessionManagement 即可。开启 Vulkan 和 GPU 光栅化的效果在 X11 下同样显著。


总结

Chrome 在 Linux 上性能拉胯,不是 Linux 的问题,不是 Chrome 的问题,是 Chrome 为 Linux 设的默认配置太保守。

这套方案的核心思路很简单:告诉 Chrome 放开了跑--ignore-gpu-blocklist 解除封印,Vulkan 替代 OpenGL 降低开销,GPU 光栅化把绘制交给 GPU,零拷贝省掉内存搬运,Wayland 原生绕开 XWayland 损耗。最后禁用 20+ 内置 AI 功能,把被偷走的内存拿回来。

每天高强度使用——几十个标签页、VS Code、WebGL 应用——再也没有最初那种卡顿感。

不是硬件不行,是 Chrome 默认配置为了兼容性,把性能锁进了保险柜。现在钥匙在你手里了。

给 Linux 上的 Chrome 打一针肾上腺素——我的 GPU 加速调优方案

作者:xingwangzhe

本文链接:https://xingwangzhe.fun/posts/chrome-linux-gpu-tuning/

本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

留言评论