浏览器窗口需要高级 GPU 控制

Zap*_*Zap 5 gpu chromium electron

我想设置使用多少 GPU RAM 以防止应用程序在 Windows 上溢出。有人有任何专家建议吗?

\n\n

我正在使用 Electron为 windows构建一个 \xc2\xa0自动播放器。该播放器根据时间表播放混合视频(h264编码\xc2\xa0 mp4)、\xc2\xa0 html \xc2\xa0 和\xc2\xa0 jpeg \xc2\xa0 (有点像演示文稿)。
\n我在多个 Windows 设备上测试了该应用程序,结果差异很大!

\n\n

所有设备都是 \xc2\xa0 Asus的微型计算机。总的来说,我注意到\xc2\xa0 2个明显的差异

\n\n

在没有硬件加速的设备\xc2\xa0上\xc2\xa0,chromium\xc2\xa0 gpu进程\xc2\xa0消耗了大约\xc2\xa0 30MB \xc2\xa0共享RAM,无论播放的内容如何,​​这个数字都不会改变。然而,CPU 承担了这里的所有负载,这意味着它正在使用软件而不是硬件来解码 mp4 (h264)。

\n\n

在具有硬件加速的设备\xc2\xa0上,\xc2\xa0的CPU负载当然较小,\xc2\xa0 ,但chromium gpu进程使用的RAM内存差异很大。显示 jpeg 或 html 时,\xc2\xa0 RAM \xc2\xa0 约为 \xc2\xa0 0.5GB,当 \xc2\xa0 mp4\的 RAM 内存很容易上升到 \xc2\xa0 2GB \xc2\xa0 并且更多的。

\n\n

在没有硬件加速的更强大的设备上,这不是一个大问题,它们有 8GB 或更多的共享内存,并且不会崩溃。然而,其他一些设备只有 4GB 共享内存,\xc2\xa0很容易就会耗尽内存

\n\n

内存不足的结果是 \xc2\xa0应用程序完全崩溃\xc2\xa0(显示内存溢出消息)或 \xc2\xa0 应用程序挂起\xc2\xa0(继续运行但不\xc2\xa0)不再做任何事情,通常只是显示白屏)。

\n\n

我知道我可以使用 \xc2\xa0 app.commandLine.appendSwitch将某些标志传递给 browserwindow将某些标志传递给 browserwindow 。

\n\n

这些是我尝试过的一些标志及其效果,我在这里找到了它们的列表\xc2\xa0 :

\n\n
    \n
  • --force-gpu-mem-available-mb=600 ==> \xc2\xa0没有任何效果,进程的行为与以前一样,并且仍然超过 2GB RAM。
  • \n
  • --disable-gpu ==> \xc2\xa0 这个显然有效,但不受欢迎,因为它完全禁用了硬件加速
  • \n
  • --disable-gpu-memory-buffer-compositor-resources ==> \xc2\xa0没有变化
  • \n
  • --disable-gpu-memory-buffer-video-frames ==> \xc2\xa0无变化
  • \n
  • --disable-gpu-rasterization ==> \xc2\xa0无变化
  • \n
  • --disable-gpu-sandbox ==> \xc2\xa0无变化
  • \n
\n\n

为什么其中一些命令行开关对 GPU 行为没有任何影响?\xc2\xa0所有设备都有板载 GPU 和共享 RAM。我知道在启动时使用命令行开关,因为当我检查 Windows 任务管理器中的进程时,我可以看到开关已传递到进程(使用任务管理器中的命令行选项卡)。因此开关已加载,但似乎仍然被忽略。

\n\n

我想设置使用多少 GPU RAM 以防止应用程序在 Windows 上溢出。有人有任何专家建议吗?

\n

小智 0

我正在寻找“如何释放GPU进程占用的内存?” 并路过这里。

对于你的情况,我认为你可以运行一个后台脚本来定期检查GPU内存使用情况,并在超过一定值时直接杀死它。在我的印象中,这不会影响Electron的工作。Electron会自动启动另一个GPU进程。