如何在支持 NVIDIA GPU 的 Xvfb 中运行 chrome?

问题描述 投票:0回答:1

我使用 GPU ( g4dn.xlarge ) 启动了一个 AWS 实例。我按照本文安装了 NVIDIA 驱动程序 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-nvidia-driver.html

nvidia-smi
命令输出:https://i.sstatic.net/uVWBy.jpg

现在,我正在尝试启动使用 Nvidia GPU 的 Xvfb。

Xvfb :0 -screen 0 1024x768x24 +extension GLX +render -noreset

通过这个命令再次检查一下

DISPLAY=:0 glxinfo | head -n 50

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile, 
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_libglvnd, GLX_EXT_no_config_context, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_MESA_copy_sub_buffer, GLX_OML_swap_method, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, 
    GLX_SGI_make_current_read
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, 
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, 
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_fbconfig_float, 
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile, 
    GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB, 
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, 
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: VMware, Inc. (0xffffffff)
    Device: llvmpipe (LLVM 7.0, 256 bits) (0xffffffff)
    Version: 18.3.4
    Accelerated: no
    Video memory: 15749MB
    Unified memory: no

显示GPU是LLVM。而且它仍然使用CPU,而不是GPU。

nvidia-smi
仍然显示没有进程正在使用 GPU。 我该如何解决这个问题?

提前致谢。

linux google-chrome gpu nvidia xvfb
1个回答
0
投票

显示GPU是LLVM

如果您需要硬件加速,这个问题的答案就是正确的方法 - 即使用VirtualGL

安装后(

apt
yum
软件包可用),您可以通过
vglrun
运行您的进程以强制硬件加速。例如在我的机器上:-

$ Xvfb :1 -screen 0 1440x900x24 &
[1] 141478 #pid

$ DISPLAY=:1 glxinfo -B|grep 'OpenGL renderer string'
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 256 bits) # software acceleration

DISPLAY=:1 vglrun glxinfo -B|grep 'OpenGL renderer string'
OpenGL renderer string: Mesa Intel(R) HD Graphics 6000 (BDW GT3) # vglrun uses h/w driver

如您所见,Xvfb 使用

llvmpipe
(软件加速)。通过
vglrun
运行相同的进程会强制硬件加速 - 当然假设您安装了正确的驱动程序。在我的例子中,使用了适用于我的 Intel GPU 的 Mesa 驱动程序。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.