找回密码
 立即注册
搜索
查看: 2833|回复: 0

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

[复制链接]
     
发表于 2023-6-28 16:49 | 显示全部楼层 |阅读模式
本帖最后由 塔奇克马 于 2023-6-28 20:30 编辑

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;
截图 2023-06-28 20-24-48.png
截图 2023-06-28 16-55-07.jpg




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-15 08:35 , Processed in 0.024492 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表