{"id":131,"date":"2025-02-25T00:00:54","date_gmt":"2025-02-24T16:00:54","guid":{"rendered":"https:\/\/void-tech.cn\/?p=131"},"modified":"2025-02-25T07:32:10","modified_gmt":"2025-02-24T23:32:10","slug":"kvm-vgpu","status":"publish","type":"post","link":"https:\/\/void-tech.cn\/index.php\/2025\/02\/25\/kvm-vgpu\/","title":{"rendered":"\u5728Linux KVM\u4e2d\u914d\u7f6evGPU"},"content":{"rendered":"<p><!--more--><\/p>\n<p>\u4ee5\u4e0b\u793a\u4f8b\u7cfb\u7edf\u4e3aUbuntu20.04<\/p>\n<p><strong>\u5f00\u542fIOMMU<\/strong><br \/>\n\u7f16\u8f91 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">\/etc\/default\/grub<\/span>\u00a0\u6587\u4ef6\u4e2d <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">GRUB_CMDLINE_LINUX<\/span> \u5b57\u6bb5\u7684\u5185\u5bb9\u4e3a:<\/p>\n<pre class=\"code\">GRUB_CMDLINE_LINUX=\"intel_iommu=on iommu=pt\"<\/pre>\n<p>\u82e5\u7cfb\u7edf\u4ee5Legacy\u6a21\u5f0f\u542f\u52a8, \u8f93\u5165\u547d\u4ee4: <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">grub-mkconfig -o \/boot\/grub\/grub.cfg<\/span><\/p>\n<p>\u82e5\u7cfb\u7edf\u4ee5UEFI\u6a21\u5f0f\u542f\u52a8, \u8f93\u5165\u547d\u4ee4: <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">grub-mkconfig -o \/boot\/efi\/EFI\/ubuntu\/grub.cfg<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/0.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/0.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<p><strong>\u5b89\u88c5KVM\u548c\u76f8\u5173\u7ec4\u4ef6<\/strong><\/p>\n<pre class=\"code\">apt install -y --no-install-recommends qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager mdevctl<\/pre>\n<p>\u5c06\u7528\u6237\u6dfb\u52a0\u5230\u5bf9\u5e94\u7528\u6237\u7ec4:<\/p>\n<pre class=\"code\">usermod -aG libvirt $USER &amp;&amp; usermod -aG kvm $USER<\/pre>\n<p><strong>\u5b89\u88c5vGPU\u4e3b\u673a\u9a71\u52a8<\/strong><br \/>\n\u793a\u4f8b:<\/p>\n<pre class=\"code\">chmod 777 NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run &amp;&amp; .\/NVIDIA-Linux-x86_64-510.73.06-vgaming-vgpu-kvm.run<\/pre>\n<p><strong>\u521b\u5efavGPU\u8bbe\u5907<\/strong><br \/>\n1.\u4f7f\u7528 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">lspci | grep NVIDIA<\/span>\u00a0\u547d\u4ee4\u67e5\u770b\u53ef\u7528GPU\u7684\u603b\u7ebf\u4f4d\u7f6e<br \/>\n2.\u4f7f\u7528 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">nvidia-smi vgpu -s<\/span>\u00a0\u547d\u4ee4\u67e5\u770b\u53d7\u652f\u6301\u7684vGPU\u7c7b\u578b<br \/>\n3.\u4f7f\u7528 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">nvidia-smi vgpu -c<\/span>\u00a0\u547d\u4ee4\u67e5\u770b\u53ef\u521b\u5efa\u7684vGPU\u7c7b\u578b<br \/>\n4.\u67e5\u770b\u5bf9\u5e94vGPU\u8bbe\u5907\u7684\u8def\u5f84<\/p>\n<pre class=\"code\">grep -l \"vgpu-type\" \/sys\/class\/mdev_bus\/domain\\:bus\\:slot.function\/mdev_supported_types\/nvidia-*\/name<\/pre>\n<p>5.\u67e5\u770b\u5bf9\u5e94vGPU\u8bbe\u5907\u7684\u53ef\u521b\u5efa\u6570\u91cf<\/p>\n<pre class=\"code\">cat \/sys\/class\/mdev_bus\/domain\\:bus\\:slot.function\/mdev_supported_types\/nvidia-*\/available_instances<\/pre>\n<p>6.\u4e3avGPU\u8bbe\u5907\u751f\u6210\u901a\u7528\u552f\u4e00\u6807\u8bc6\u7b26(UUID)\u5e76\u521b\u5efa\u5bf9\u5e94\u7684\u5b9e\u4f8b, \u5e76\u4f7fmdev\u8bbe\u5907\u6587\u4ef6\u6301\u4e45\u5316<\/p>\n<pre class=\"code\">uuidgen\r\necho \"uuid\" &gt; \/sys\/class\/mdev_bus\/domain\\:bus\\:slot.function\/mdev_supported_types\/nvidia-*\/create\r\nmdevctl define --auto --uuid uuid<\/pre>\n<p>\u82e5\u662f\u5728\u652f\u6301SR-IOV\u7684GPU(Ampere\u67b6\u6784\u53ca\u4ee5\u540e)\u4e0a\u521b\u5efamdev\u8bbe\u5907, \u9700\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u4e3asysfs\u6587\u4ef6\u7cfb\u7edf\u4e2d\u7684\u7269\u7406GPU\u542f\u7528\u865a\u62df\u529f\u80fd:<\/p>\n<pre class=\"code\">\/usr\/lib\/nvidia\/sriov-manage -e domain:bus:slot.function<\/pre>\n<p>\u989d\u5916\u9009\u9879: \u8f93\u5165\u4e0b\u65b9\u547d\u4ee4\u4ee5\u6682\u65f6\u7981\u7528\u5e27\u901f\u7387\u9650\u5236\u5668(FRL)\u548c\u542f\u7528 Unified Memory<\/p>\n<pre class=\"code\">echo \"frame_rate_limiter=0, enable_uvm=1, enable_debugging=1, enable_profiling=1\" &gt; \/sys\/bus\/mdev\/devices\/uuid\/nvidia\/vgpu_params<\/pre>\n<p>&nbsp;<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<p><strong>\u5411\u865a\u62df\u673a\u6dfb\u52a0vGPU\u8bbe\u5907<\/strong><br \/>\n\u521b\u5efa\u865a\u62df\u673a\u540e, \u4f7f\u7528 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">virsh edit vm-name<\/span> \u547d\u4ee4\u7f16\u8f91\u865a\u62df\u673a\u7684XML\u6587\u4ef6, \u5e76\u6dfb\u52a0\u4ee5\u4e0b\u5b57\u6bb5:<\/p>\n<pre class=\"code\">&lt;device&gt;\r\n  ...\r\n  &lt;hostdev mode='subsystem' type='mdev' model='vfio-pci'&gt;\r\n    &lt;source&gt;\r\n      &lt;address uuid='uuid'\/&gt;\r\n    &lt;\/source&gt;\r\n  &lt;\/hostdev&gt;\r\n&lt;\/device&gt;<\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<p><strong>\u5b89\u88c5vGPU\u5ba2\u6237\u7aef\u9a71\u52a8\u5e76\u83b7\u53d6\u5bf9\u5e94\u8bb8\u53ef<\/strong><\/p>\n<p>Windows\u7cfb\u7edf\u5b89\u88c5\u9a71\u52a8\u540e\u4f7f\u7528 <span style=\"background-color: #f5f5f5; font-family: Consolas, Monaco, monospace;\">nvidia-smi -q | findstr &#8220;Product License&#8221;<\/span>\u00a0\u547d\u4ee4\u67e5\u8be2vGPU\u8bbe\u5907\u578b\u53f7\u548c\u662f\u5426\u5df2\u83b7\u53d6\u8bb8\u53ef<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/void-tech.cn\/wp-content\/uploads\/2025\/02\/3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" \/><\/div><\/p>\n<p><strong>\u5220\u9664vGPU\u8bbe\u5907<\/strong><\/p>\n<pre class=\"code\">echo \"1\" &gt; \/sys\/class\/mdev_bus\/domain\\:bus\\:slot.function\/uuid\/remove\r\nmdevctl undefine --uuid uuid<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-share"],"_links":{"self":[{"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":6,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/posts\/131\/revisions\/141"}],"wp:attachment":[{"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/void-tech.cn\/index.php\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}