背景介绍:
本篇介绍腾讯云环境GPU云服务器nvidia tesla驱动安装步骤。有很多腾讯云的使用者,在使用GPU服务器过程中,对驱动安装或者使用中有一些疑惑,比如系统kernel更新了,驱动失效了等问题。
驱动安装途径:
目前腾讯云环境下支持安装GPU驱动的方式如下:
- 使用预装 GPU 驱动的镜像,参考链接:https://cloud.tencent.com/document/product/560/30129
- 使用公共镜像的时候,支持后台自动安装GPU驱动。
- 自定义机器初始化,设置自定义数据来安装GPU驱动,https://cloud.tencent.com/document/product/213/17525
- 很多公司,有初始化流程或者配置流程平台,可以创建出干净环境的机器,后边自定义安装驱动。
- 目前官网控制台支持,后台自动安装GPU驱动,如下图:
安装驱动:
NVIDIA Telsa GPU 的 Linux 驱动在安装过程种需要编译 kernel module,所以要求系统安装好了 gcc 和编译 Linux Kernel Module 所依赖的包,例如 kernel-devel-$(uname -r) 等。
- 登录NVIDIA 驱动下载或打开链接 http://www.nvidia.com/Download/Find.aspx 。
- 选择操作系统和安装包。以 P4 为例,搜寻驱动,然后选择要下载的驱动版本。
注意:操作系统选择 Linux 64-bit 代表下载的是 shell 安装文件,如果选择具体的发行版下载的文件则是对应的包安装文件。
- 选择特定的版本跳转后,单击【DOWNLOAD】。
- 再次跳转后,如有填写个人信息的页面可选择直接跳过,出现下面页面时,右击【AGREE&DOWNLOAD】,右键菜单里复制链接地址。
- 登录 GPU 实例,使用 wget 命令, 粘贴上述步骤复制的链接地址下载安装包;或通过在本地系统下载 NVIDIA 安装包, 上传到 GPU 实例的服务器。
# wget http://us.download.nvidia.com/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run
- 对安装包加执行权限。 例如,对文件名为
NVIDIA-Linux-x86_64-440.33.01.run
加执行权限:
# chmod x NVIDIA-Linux-x86_64-440.33.01.run
- 安装当前系统对应的 gcc 和 kernel-devel 包
# sudo yum install -y gcc kernel-devel-xxx
xxx是内核版本号,可以通过 uname -r 查看。
- 安装dkms
# sudo yum install dkms -y
dkms的作用:nvidia-installer can optionally register the NVIDIA kernel module sources, if installed, with DKMS, then build and install a kernel module using the DKMS-registered sources. This will allow the DKMS infrastructure to automatically build a new kernel module when changing kernels. During installation, if DKMS is detected, nvidia-installer will ask the user if they wish to register the module with DKMS; the default response is 'no'. This option will bypass the detection of DKMS, and cause the installer to attempt a DKMS-based installation regardless of whether DKMS is present.
白话文翻译:即注册nvidia驱动到dkms中,通过dkms管理,当内核更新的时候,会自动build新的nvidia内核模块。
- 运行驱动安装程序后按提示进行后续操作。
# ./NVIDIA-Linux-x86_64-440.33.01.run --dkms --silent
其中--silent的作用,不弹出UI界面,单台安装还好,否则批量操作,就比较尴尬了。
- 验证驱动安装是否正常
# nvidia-smi
-----------------------------------------------------------------------------
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|------------------------------- ---------------------- ----------------------
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|=============================== ====================== ======================|
| 0 Tesla P4 Off | 00000000:00:06.0 Off | Off |
| N/A 39C P8 7W / 75W | 0MiB / 8121MiB | 0% Default |
------------------------------- ---------------------- ----------------------
-----------------------------------------------------------------------------
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
-----------------------------------------------------------------------------
- 查看系统已安装的module
# lsmod|grep nvidia
nvidia_drm 43714 0
nvidia_modeset 1110184 1 nvidia_drm
nvidia 19893642 13 nvidia_modeset
ipmi_msghandler 46608 2 ipmi_devintf,nvidia
drm_kms_helper 159169 2 cirrus,nvidia_drm
drm 370825 5 ttm,drm_kms_helper,cirrus,nvidia_drm
i2c_core 40756 4 drm,i2c_piix4,drm_kms_helper,nvidia
- 查看nvidia的路径与版本等信息
# modinfo nvidia
filename: /lib/modules/3.10.0-693.el7.x86_64/extra/nvidia.ko.xz
alias: char-major-195-*
version: 440.33.01
supported: external
license: NVIDIA
rhelversion: 7.4
srcversion: A5E9226CB2A7B16B12DA2CA
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: ipmi_msghandler,i2c-core
vermagic: 3.10.0-693.el7.x86_64 SMP mod_unload modversions
parm: NvSwitchRegDwords:NvSwitch regkey (charp)
parm: NVreg_Mobile:int
parm: NVreg_ResmanDebugLevel:int
parm: NVreg_RmLogonRC:int
parm: NVreg_ModifyDeviceFiles:int
parm: NVreg_DeviceFileUID:int
parm: NVreg_DeviceFileGID:int
parm: NVreg_DeviceFileMode:int
parm: NVreg_InitializeSystemMemoryAllocations:int
parm: NVreg_UsePageAttributeTable:int
parm: NVreg_MapRegistersEarly:int
parm: NVreg_RegisterForACPIEvents:int
parm: NVreg_EnablePCIeGen3:int
parm: NVreg_EnableMSI:int
parm: NVreg_TCEBypassMode:int
parm: NVreg_EnableStreamMemOPs:int
parm: NVreg_EnableBacklightHandler:int
parm: NVreg_RestrictProfilingToAdminUsers:int
parm: NVreg_PreserveVideoMemoryAllocations:int
parm: NVreg_DynamicPowerManagement:int
parm: NVreg_EnableUserNUMAManagement:int
parm: NVreg_MemoryPoolSize:int
parm: NVreg_KMallocHeapMaxSize:int
parm: NVreg_VMallocHeapMaxSize:int
parm: NVreg_IgnoreMMIOCheck:int
parm: NVreg_NvLinkDisable:int
parm: NVreg_RegisterPCIDriver:int
parm: NVreg_RegistryDwords:charp
parm: NVreg_RegistryDwordsPerDevice:charp
parm: NVreg_RmMsg:charp
parm: NVreg_GpuBlacklist:charp
parm: NVreg_TemporaryFilePath:charp
parm: NVreg_AssignGpus:charp
按照本文安装,可以保障系统内核更新的时候,驱动自动build,不会出现驱动不可用状态。