virtio-nvgpu - ืžื•ื“ื•ืœ ื”ืžืกืคืง ื’ื™ืฉื” ืœื›ืจื˜ื™ืกื™ ืžืกืš ืฉืœ NVIDIA ืžืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืฉืœ KVM

ืคืจื•ื™ืงื˜ virtio-nvgpu ืžืคืชื— ื”ืชืงืŸ virtio ื”ืžืืคืฉืจ ื’ื™ืฉื” ืœื›ืจื˜ื™ืกื™ ืžืกืš ืฉืœ NVIDIA ืžืžืขืจื›ื•ืช ืื•ืจื— ื”ืคื•ืขืœื•ืช ืชื—ืช ื”ื™ืคืจ-ื•ื™ื–ื•ืจ KVM ืขื ื”ืฉืคืขื” ืžื™ื ื™ืžืœื™ืช ืขืœ ื”ื‘ื™ืฆื•ืขื™ื. ื”ื•ื ืžื•ืจื›ื‘ ืžืžื•ื“ื•ืœ ืœื™ื‘ื” ื”ืžื•ื˜ืขืŸ ื‘ืžืขืจื›ืช ื”ืื•ืจื—ืช ื•ืžืชืงืŸ virtio ื”ืคื•ืขืœ ืขืœ ื”ืžืืจื—. ืงื•ื“ ืžื•ื“ื•ืœ ื”ืœื™ื‘ื” ื ื›ืชื‘ ื‘-C ื•ืžื•ืจืฉื” ืชื—ืช ืจื™ืฉื™ื•ืŸ GPLv2, ื‘ืขื•ื“ ืฉืงื•ื“ ื”ืชืงืŸ virtio ื ื›ืชื‘ ื‘-Rust ื•ืžื•ืจืฉื” ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0.

ืœื“ื‘ืจื™ ื”ืžืคืชื—ื™ื, ืื•ื‘ื“ืŸ ื”ื‘ื™ืฆื•ืขื™ื ื‘ืขืช ื’ื™ืฉื” ืœ-GPU ืื™ื ื• ืขื•ืœื” ืขืœ 2%. ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ืžื•ืฉื’ื™ื ืขืœ ื™ื“ื™ ื ื™ืชื•ื‘ ืžื—ื“ืฉ ืฉืœ ืงืจื™ืื•ืช ioctl ืœื“ืจื™ื™ื‘ืจ ื”ืžืงื•ืจื™ ืฉืœ NVIDIA ื•ืคืขื•ืœื” ื‘ืจืžืช ABI ืฉืœ ื“ืจื™ื™ื‘ืจ NVIDIA, ืžื‘ืœื™ ืœืชืจื’ื ื‘ืงืฉื•ืช ื‘ืจืžืช ื”-API. ื‘ืฆื“ ื”ืื•ืจื—, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืกืคืจื™ื•ืช ืžืงื•ืจื™ื•ืช ื•ื‘ื“ืจื™ื™ื‘ืจื™ื ื‘ืจืžื” ื’ื‘ื•ื”ื” ืฉืœ NVIDIA ื”ืคื•ืขืœื™ื ื‘ืžืจื—ื‘ ื”ืžืฉืชืžืฉ.

ืžื•ื“ื•ืœ ืœื™ื‘ื” ื ื˜ืขืŸ ื‘ืžืขืจื›ืช ื”ืื•ืจื—ืช. ื”ื•ื ืžืกืคืง ืืช ืงื‘ืฆื™ ื”ื”ืชืงืŸ /dev/nvidiactl, /dev/nvidia0โ€ฆN, ื•- /dev/nvidia-uvm ื•ื ื•ืชื‘ ืืช ืงืจื™ืื•ืช ioctl() ื•- mmap() ื“ืจืš virtqueue ืœืžื˜ืคืœ ื‘ืกื‘ื™ื‘ืช ื”ืžืืจื—, ืฉืžืขื‘ื™ืจื” ืื•ืชืŸ ืœื“ืจื™ื™ื‘ืจ ื”ืžืืจื— ืฉืœ NVIDIA. ื›ื“ื™ ืœื”ื™ืžื ืข ืžืžืขื‘ืจื™ ื”ืงืฉืจ ื‘ื™ืŸ ืžืขืจื›ืช ื”ืžืืจื— ืœืžื›ื•ื ื” ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช, ืžืื’ืจื™ ื”ืคืงื•ื“ื•ืช ืžืžื•ืคื™ื (mmapped) ืœื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ ื”ื ื’ื™ืฉ ืขืœ ื™ื“ื™ ืกื‘ื™ื‘ืช ื”ืžืืจื— ื•ื”-GPU.

ื‘ื ื™ื’ื•ื“ ืœืžืขื‘ืจ ื’ื™ืฉื” ื‘ืœืขื“ื™ ืœ-GPU (VFIO Passthrough), ืคืจื•ื™ืงื˜ virtio-nvgpu ืžืกืคืง ื’ื™ืฉื” ืžืฉื•ืชืคืช ืœ-GPU ืื—ื“ ืžื›ืžื” ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช, ื•ื‘ื ื™ื’ื•ื“ ืœ-virtio-gpu (Venus, VirGL), ื”ื•ื ืคื•ืขืœ ื“ืจืš ื”ืขื‘ืจืช ABI ืœื“ืจื™ื™ื‘ืจ ืฉืœ NVIDIA, ื•ืœื ื‘ืจืžืช ืชืจื’ื•ื ื”-API ื”ื’ืจืคื™ ืฉืœ Vulkan ื•-OpenGL. ื”ื—ืกืจื•ื ื•ืช ืฉืœ virtio-nvgpu ื›ื•ืœืœื™ื ืืช ื”ื™ืขื“ืจ ื”ื‘ื™ื“ื•ื“ ื”ืžืœื ืžื‘ื•ืกืก IOMMU (ืžืขืจื›ื•ืช ืื•ืจื— ืคื•ืขืœื•ืช ื“ืจืš ื“ืจื™ื™ื‘ืจ ื”ืžืืจื— ืฉืœ NVIDIA ื•ืžื•ื’ื‘ืœื•ืช ืœืกื™ื ื•ืŸ ืงืจื™ืื•ืช ioctl) ื•ืืช ื”ืกืชืžื›ื•ืชื• ืขืœ ABI ืฉืœ ื“ืจื™ื™ื‘ืจ NVIDIA (ื”-ABI ืžืฉืชื ื” ืขื ื›ืœ ื’ืจืกื”, ืžื” ืฉืžื—ื™ื™ื‘ ื”ืชืืžื” ืฉืœ virtio-nvgpu).

ื™ื›ื•ืœื•ืช ื”-virtio-nvgpu ืžืกืคื™ืงื•ืช ืœืจื™ื ื“ื•ืจ, ืงื™ื“ื•ื“ ื•ื™ื“ืื• ื•ืžื—ืฉื•ื‘ ื‘ืืžืฆืขื•ืช ืžืžืฉืงื™ ื”-API ืฉืœ Vulkan, OpenGL, NVENC ื•-CUDA. ื”ื™ื™ืฉื•ื ื”ืขื™ืงืจื™ ืฉืฆื•ื™ืŸ ื”ื•ื ื™ืฆื™ืจืช ืฉื™ืจื•ืชื™ ืžืฉื—ืงื™ ืขื ืŸ ืื• ืฉื•ืœื—ื ื•ืช ืขื‘ื•ื“ื” ื•ื™ืจื˜ื•ืืœื™ื™ื ืฉื‘ื”ื ืคื•ืขืœ ืžืฉื—ืง ืื• ื™ื™ืฉื•ื ื’ืจืคื™. ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช, ืืฉืจ ืžื‘ืฆืข ืจื™ื ื“ื•ืจ, ืงื™ื“ื•ื“ ื—ื•ืžืจื” ืฉืœ ื”ืชื•ืฆืื” ื‘ืืžืฆืขื•ืช NVENC, ื•ืฉื™ื“ื•ืจ ื”ืคืœื˜ ืœืžืฉืชืžืฉ ื”ืžืจื•ื—ืง ื‘ืฆื•ืจื” ืฉืœ ื–ืจื ื•ื™ื“ืื• ื“ื—ื•ืก.

ืžืงื•ืจ: OpenNet.ru

ืงื ื” ืื™ืจื•ื— ืืžื™ืŸ ืœืืชืจื™ื ืขื ื”ื’ื ืช DDoS, ืฉืจืชื™ VPS VDS ๐Ÿ”ฅ ืงื ื” ืื—ืกื•ืŸ ืืชืจื™ื ืืžื™ืŸ ืขื ื”ื’ื ืช DDoS, ืฉืจืชื™ VPS VDS | ProHoster