Ubuntu解锁N卡VGpu记录:解锁帧数限制,降压超频等

Ubuntu解锁N卡VGpu记录以及DLC
前言:
把N卡解锁VGPu好处基本就是host DockerENvCu118和KVM-Guset-windows等都可以使用Cuda而且性能基本没什么损失,大概只支持包含20系以下的显卡,30系安培代码里包含,支持不支持我不清楚.

开搞:
根据这位写的做的:https://bytehorizon.net/archives/crystalast/74/
概况就是下驱动,打补丁合并融合,建立服务,原来地址复制有水印,我直接拿过来做个记录
我的环境:
Ubuntu 22.04.2 LTS
12400FOC4.9G 2080TI-22G
没什么好说的:

  1. apt update && apt upgrade -y
  2. apt install -y git build-essential dkms unzip python3-pip mdevctl jq -y
  3. pip3 install frida --break-system-packages

复制代码


下工具和补丁:

  1. git clone https://github.com/VGPU-Community-Drivers/vGPU-Unlock-patcher.git -b 525.105 --recursive
  2. git clone https://github.com/mbilker/vgpu_unlock-rs.git

复制代码


开启IOMMU和加载VFIO模块 PASS

  1. 编辑 /etc/default/grub ,添加下面的参数,开启iommu。
  2. # Intel处理器写入下面内容
  3. GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
  4. # AMD处理器写入下面内容
  5. GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on"

复制代码


禁止N卡开源驱动为了安装解锁后的驱动 PASS
Ubuntu不加载开源驱动照样可以显示界面,无所谓,不用担心只能用命令行.

  1. echo "blacklist nouveau" >> /etc/modprobe.d/disable-nouveau.conf
  2. echo "options nouveau modeset=0" >> /etc/modprobe.d/disable-nouveau.conf
  3. update-initramfs -u
  4. reboot now

复制代码


更新Rust,反正我更新了

  1.     curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

复制代码


Grid驱动难搞要注册,烦!直接从这里下

  1. 此Github仓库有本文对应的NVIDIA GRID 15.2(525.105)驱动,下载 Linux-KVM 后缀的驱动包。
  2. https://github.com/justin-himself/NVIDIA-VGPU-Driver-Archive/releases
  3. 解压下载下来的驱动包,将解压后的 Host_Drivers 文件夹里面的 NVIDIA-Linux-x86_64-525.105.14-vgpu-kvm.run 移动到 vGPU-Unlock-patcher 下。

复制代码


下消费显卡驱动

  1. wget https://download.nvidia.com/XFree86/Linux-x86_64/525.105.17/NVIDIA-Linux-x86_64-525.105.17.run

复制代码


移动到vGPU-Unlock-patcher文件夹下
目录文件分布大概这样:

  1. doc
  2. nsigpatch.c
  3. NVIDIA-Linux-x86_64-525.105.14-vgpu-kvm.run
  4. NVIDIA-Linux-x86_64-525.105.17.run
  5. patches
  6. patch.sh
  7. README.md
  8. unlock

复制代码


vGPU-Unlock-patcher下执行命令,22.04STL更新完内核5.19所以直接执行:

  1. ./patch.sh general-merge
  2. 如果你的内核是6.1~6.3版本的,可以尝试下列选项:
  3. ./patch.sh --lk6-patches general-merge

复制代码


生成NVIDIA-Linux-x86_64-525.105.17-vgpu-kvm-merge-patched目录,进入执行:

  1. ./nvidia-installer --dkms

复制代码


一路无脑yes

  1. 安装和配置vgpu_unlock-rs
  2. 进入到 vgpu_unlock-rs 目录后,输入下面命令:
  3. cargo build --release
  4. cp './target/release/libvgpu_unlock_rs.so' /usr/local/lib

复制代码


------------

  1. 为了让NVIDIA驱动使用vgpu_unlock,这里修改NVIDIA驱动的Systemd服务文件:
  2. mkdir /etc/systemd/system/nvidia-{vgpu-mgr,vgpud}.service.d
  3. echo '[Service] \
  4. Environment=LD_PRELOAD=/usr/local/lib/libvgpu_unlock_rs.so' | tee /etc/systemd/system/nvidia-{vgpu-mgr,vgpud}.service.d/vgpu_unlock-rs.conf > /dev/null
  5. 完成上面的操作后,运行下面命令将两个服务设置为开机运行:
  6. systemctl enable nvidia-{vgpu-mgr,vgpud}.service

复制代码


以上命令生成的了两个服务文件长这样:
两个vgpu_unlock-rs.conf内容:

  1. [Service]
  2. Environment=LD_PRELOAD=/usr/local/lib/libvgpu_unlock_rs.so

复制代码


重启

  1. mdevctl types

复制代码


生成一堆内容:

  1. .............
  2. nvidia-262
  3. Available instances: 1
  4. Device API: vfio-pci
  5. Name: GRID RTX6000-12Q
  6. Description: num_heads=4, frl_config=60, framebuffer=12288M, max_resolution=7680x4320, max_instance=2
  7. ............

复制代码


如果没输出就要尝试重启服务:

  1. systemctl restart nvidia-{vgpu-mgr,vgpud}.service

复制代码


反正反正选Q系列,我选择了上面那个RTX600-12Q 代表12G显存,然后执行命令:

  1. uuidgen
  2. 67b12fbc-dd76-4dd5-9bc4-f216190801d6
  3. mdevctl start -u 67b12fbc-dd76-4dd5-9bc4-f216190801d6 -p 0000:01:00.0 --type nvidia-262
  4. mdevctl define -a -u 67b12fbc-dd76-4dd5-9bc4-f216190801d6

复制代码


这个基本上就完事了:建立KVM虚拟机时候,添加MDEV Host Device就可以了,然后解决授权问题,这里KVM虚拟机选择default nat网络默认那个就行,windows驱动在下载那个驱动包里Guset_Drivers文件夹中
授权要申请,烦,直接docker拿现成的:

  1. docker run --name dls -d -e DLS_URL=192.168.122.1 -e DLS_PORT=1234 -p 1234:443 makedie/fastapi-dls
  2. docker update --restart=always dls

复制代码


这个192.168.122.1就是default nat虚拟网络的host地址

  1. 让虚拟机的GRID驱动获取许可
  2. 在虚拟机内,使用刚才填的DLS_URL和DLS_PORT访问容器并下载Token,例如上面的例子就是:
  3. https://192.168.122.1:1234/client-token
  4. 注意!在写地址时一定要加上HTTPS后缀,否则无法访问!
  5. Windows下,把下载的token文件放进虚拟机的 C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken 文件夹内,然后重启 NvContainerLocalSystem 服务。

复制代码


DLC部分:
但是如果你要跑3d程序你会发现一个问题,被限制在60帧,用以下命令解锁,有需求就加入启动命令行进行固化:

  1. echo "frame_rate_limiter=0" > /sys/bus/mdev/devices/67b12fbc-dd76-4dd5-9bc4-f216190801d6/nvidia/vgpu_params

复制代码


uuid根据自己需求改写
Linux可以降压超频达到小飞机拉平曲线的效果,三个命令结合在一起,示例如下:

  1. nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[4]=260'
  2. nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffsetAllPerformanceLevels=2000'
  3. nvidia-smi --lock-gpu-clocks=300,1875

复制代码


加入到启动命令中就可以固化
windows免费的远程控制软件推荐:RustDesk,512M内存用一键脚本自建一个debian Rust中继服务器就行,安装时候注意清空那个下载文件,他脚本写的时候没考虑过下载失败改怎么办.
End;
 

Ubuntu解锁N卡VGpu记录:解锁帧数限制,降压超频等_第1张图片


 

Ubuntu解锁N卡VGpu记录:解锁帧数限制,降压超频等_第2张图片



 

你可能感兴趣的:(ubuntu,linux,运维)