在 Ubuntu 20.04 上挂起计算机后 Chrome 浏览器出现问题

chr*_*o.1 124 nvidia suspend google-chrome plasma-5 20.04

  • Kubuntu 20.04,64 位
  • 显卡:Geforce GT610
  • nvidia-driver-390
  • Chrome 版本 85.0.4183.83
  • Intel i5-4430, 核心 4, 4 线程, 3GHz
  • 内存:16GB

每次我进入暂停模式然后恢复时,Chrome 浏览器都会将当前选项卡显示为充满色彩的沙子,类似于图像处理中的抖动。

截屏

其他选项卡也显示故障。

当前的解决方案是关闭并重新打开浏览器。

我测试过,nvidia-driver-418但出现黑屏问题并重新安装nvidia-driver-390

这个问题在Chrome中比较明显,但是在vscode中有时会出现小面积的。在那里,将鼠标悬停在受影响的位置或调整窗口大小可以解决问题。在 Kubuntu 中,应用程序启动器中用户的头像也显示抖动。

截屏

我在同一台机器上用 Fedora 32 工作站(gnome)、nvidia 驱动程序测试过,Chrome 浏览器也有同样的问题。

ubuntu 驱动程序输出

会不会是GPU问题?

预先感谢您提供有关如何解决问题的任何说明或有关导致问题的原因的信息。

小智 72

对我来说同样的问题。

启用enable-vulkanchrome://flags随后重新启动浏览器固定它。如果这不起作用,您也可以尝试启用ignore-gpu-blacklist

答案基于这个旧的 askubuntu 答案

  • 这会显着减慢 chrome 与 10 多个打开的标签... (10认同)
  • 它解决了这个问题。但是在观看 youtube 时让 chrome 真的很慢。 (8认同)
  • 无需启用 ignore-gpu-blacklist。仅启用 Vulkan 即可为我解决此问题,尽管 chrome 确实会变慢,尤其是在打开多个窗口时:( (6认同)
  • 只需启用 Vulkan 即可为我修复它。 (3认同)
  • 完美运作!谢谢你!!! (2认同)

tia*_*olo 59

我或多或少有同样的问题,在:

  • Ubuntu 18.04,64 位
  • 显卡:GeForce GTX 1070
  • 司机:440.100
  • Chrome 版本:86.0.4240.75(官方版本)(64 位)

我不想停用 Chrome 的 GPU 使用,也不想每次都重新启动浏览器,从而丢失所有标签。

但是我找到了一个对我来说足够好的解决方法(至少现在是这样):

你可以只杀死浏览器的 GPU 进程

  • 打开任务管理器:

    • 点击Shift+ Esc(正如@NYCeyes 在评论中指出的那样)。
    • 或者,转到 Chrome 主菜单(右上角的 3 个点)?更多工具任务管理器
  • 按进程任务名称排序。

  • 找到名为GPU Process 的进程

  • 单击End process

Chrome 任务管理器 - GPU 进程 - 结束进程

这将“清除”所有故障图像噪声。Chrome 会立即自动创建一个新的 GPU 进程。

注意:您可以自动化该过程,检查Andrew Bruce 的回答,将这些步骤放在自动运行的脚本中。

我认为问题类似于使用内存的 GPU 进程,假设它具有睡眠周期之前的旧状态,但它只有一些来自默认状态的默认随机噪声。所以我想 Ubuntu 不会在睡眠周期中保存和恢复 GPU 内存(我认为它不应该)但 Chrome 进程没有检测到。通过终止进程,它“释放”了 GPU 内存,然后 Chrome 创建了一个新进程,重新生成任何需要的 GPU 内存状态(这是即时的)。

  • \o/ 这是一个很好的答案,并且不会影响性能。不过,我会注意到,因为 Chrome 的汉堡菜单可能会被毛刺像素化混淆,只需按 `<Shift>` + `<Escape>` 即可直接进入 Chrome(和 Chromium 的)`Task Manager`,然后你可以在那里杀死您提到的“GPU 进程”。 (16认同)
  • 这是迄今为止最好的答案。 (5认同)
  • 这也正是为什么 linux 目前并不真正适合作为日常驱动程序的原因。我每次都遇到这个问题,很烦人。尽管如此,linux/unix 在开发时还是比 windows 好 100 倍,所以我想我被这个烂摊子困住了。 (2认同)
  • 谢谢朋友,非常有用的解决方案。认为问题出在 Linux 中的 NVIDIA 驱动程序和内核上,因为在带有开源驱动程序 nouveau 的 Fedora 33 中没有任何问题,但在 Fedora 33 中从 rpmfusion 安装 NVIDIA 专有驱动程序后,问题开始出现。 (2认同)

小智 25

使用tiangolo 的回答,您可以在唤醒时自动重启 Chrome GPU 进程。作为 root,我把这个脚本放在/lib/systemd/system-sleep/revive-chrome-gpu

#!/bin/sh

set -e

if [ "$2" = "suspend" ] || [ "$2" = "hybrid-sleep" ]
then
    case "$1" in
        pre)
            true 
            ;;
        post) 
            sleep 1
            pkill -f 'chrome \-\-type=gpu-process'
            ;;
    esac
fi
Run Code Online (Sandbox Code Playgroud)

确保使用以下命令使脚本可执行:

chmod +x /lib/systemd/system-sleep/revive-chrome-gpu
Run Code Online (Sandbox Code Playgroud)

  • 这有效并且是 [tiangolo 的答案](https://askubuntu.com/a/1283817/618353) 的一个方便补充。请注意,如果您使用其他基于 Chromium 的浏览器,例如 Brave,您应该正确更改 `pkill` 命令。在 Brave 的情况下,它会变成 `pkill -f 'brave --type=gpu-process'`。 (3认同)
  • 非常感谢这个答案!也解决了基于 Electron 的应用程序的问题,例如我的文件现在有 3 个 pkill 命令,如下所示:```sh pkill -f 'chrome \\-type=gpu-process'; pkill -f 'keycombiner \-\-type=gpu-process'; pkill -f 'spotify \-\-type=gpu-process' ``` (2认同)

xx7*_*aBs 15

我在 Arch 上遇到了同样的问题,虽然启用 Vulkan 确实可以在从睡眠或休眠状态恢复时修复故障,但它也会对性能产生很大影响。基于此错误报告此答案,我尝试使用以下标志启动 Chrome:--use-cmd-decoder=validating --use-gl=desktop这似乎解决了我的问题,而没有任何性能损失。

我不确定这是否适用于所有发行版,但是在 Arch 上,您可以将这些参数放入~/.config/chrome-flags.conf,然后每次启动 Chrome 时都会使用它们(或者~/.config/chromium-flags.conf如果使用 Chromium):

~/.config/chrome-flags.conf
--use-cmd-decoder=validating --use-gl=desktop
Run Code Online (Sandbox Code Playgroud)

  • 赞成。使用 `google-chrome --use-gl=desktop` 启动 chrome 解决了这个问题。在这里也看到了:https://askubuntu.com/a/1270843/13330 (5认同)
  • 这是 Arch 特定的扩展,目前在其他 Linux 变体中不可用(我知道)。 (2认同)

chr*_*o.1 7

1解决方案(性能问题)

在我来说,我的Chrome浏览器的解决方案是disableSettingsUse hardware acceleration when available

chrome://settings/system
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

2

是的,上述解决方案存在性能问题。如果您不喜欢这样,您可以测试另一个选项,Chrome 将完美运行。

使用一些标志运行 Chrome,始终通过终端运行 Chrome。

google-chrome-stable --use-cmd-decoder=validating --use-gl=desktop &
Run Code Online (Sandbox Code Playgroud)

&避免阻塞终端。

  • 这会带来巨大的性能损失,尤其是在观看视频时。如果您使用笔记本电脑,您的电池寿命会大大缩短。 (2认同)

tet*_*ete 5

我遵循了xx77aBs 的解决方案,但是,由于我在 Ubuntu 下使用 Chromium,所以我在 中添加了这些选项/etc/chromium-browser/customizations,如此处所述。我在该目录下添加了一个名为的文件nvidia-fix,内容如下:

CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --use-cmd-decoder=validating --use-gl=desktop"
Run Code Online (Sandbox Code Playgroud)