浏览器窗口所需的高级GPU控制

时间:2016-11-03 13:09:27

标签: gpu electron chromium

我想设置多少GPU RAM用于防止应用程序在Windows上溢出。有没有人有任何专家意见?

我正在使用电子来构建自动播放器for windows 。此播放器根据时间表播放混合视频( h264 编码 mp4 ), html jpeg 像演示文稿) 我在几个Windows设备上测试了应用程序,结果差别很大!

所有设备都是华硕的小型计算机。一般来说,我注意到 2个明显差异

没有硬件加速的设备 gpu进程耗尽了大约 30MB 的共享内存网络时,这个数字永远不会改变,无论播放的内容。然而,CPU在这里有所有负载,这意味着它用软件而不是硬件解码mp4(h264)。

在具有硬件加速的 设备上,cpu负载当然少了,但是chrome gpu-process使用的RAM内存差异很大。在显示jpeg或html时, RAM 大约是 0.5GB ,当 mp4的在RAM内存中轻松上升到 2GB 等等。

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

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

我知道我可以使用 app.commandLine.appendSwitch 将某些标记传递给浏览器窗口。

这些是我试过的一些旗帜及其效果,我找到了它们的列表here

  • - force-gpu-mem-available-mb = 600 ==> 没有任何影响,进程与以前一样,仍然超过2GB的RAM。
  • - disable-gpu ==> 这个显然有用,但不合适因为它完全禁用了硬件加速
  • - disable-gpu-memory-buffer-compositor-resources ==> 无变化
  • - 禁用-gpu-memory-buffer-video-frames ==> 无变化
  • - 禁用-gpu-rasterization ==> 无变化
  • - disable-gpu-sandbox ==> 无变化

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

我想设置多少GPU RAM用于防止应用程序在Windows上溢出。有没有人有任何专家意见?

0 个答案:

没有答案