virtio-nvgpu — KVM āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ NVIDIA GPU-āϤ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒā§āϰāĻĻāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŽāĻĄāĻŋāωāϞāĨ¤

āĻ­āĻžāĻ°ā§āϚāĻŋāĻ“-āĻāύāĻ­āĻŋāϜāĻŋāĻĒāĻŋāχāω (virtio-nvgpu) āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϚāĻŋāĻ“ āĻĄāĻŋāĻ­āĻžāχāϏ āϤ⧈āϰāĻŋ āĻ•āϰ⧇, āϝāĻž āϕ⧇āĻ­āĻŋāĻāĻŽ (KVM) āĻšāĻžāχāĻĒāĻžāϰāĻ­āĻžāχāϜāϰ⧇āϰ āĻ…āϧ⧀āύ⧇ āϚāϞāĻŽāĻžāύ āϗ⧇āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨ⧇āϕ⧇ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻ“āĻĒāϰ āĻĒā§āϰāĻ­āĻžāĻŦ āĻĢ⧇āϞ⧇ āĻāύāĻ­āĻŋāĻĄāĻŋāϝāĻŧāĻž (NVIDIA) āϜāĻŋāĻĒāĻŋāχāω āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āϗ⧇āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϞ⧋āĻĄ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āύ⧇āϞ āĻŽāĻĄāĻŋāωāϞ āĻāĻŦāĻ‚ āĻšā§‹āĻ¸ā§āĻŸā§‡ āϚāϞāĻŽāĻžāύ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϚāĻŋāĻ“ āĻĄāĻŋāĻ­āĻžāχāϏ āύāĻŋāϝāĻŧ⧇ āĻ—āĻ āĻŋāϤāĨ¤ āĻ•āĻžāĻ°ā§āύ⧇āϞ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϕ⧋āĻĄāϟāĻŋ āϏāĻŋ (C) āĻ­āĻžāώāĻžāϝāĻŧ āϞ⧇āĻ–āĻž āĻāĻŦāĻ‚ āϜāĻŋāĻĒāĻŋāĻāϞāĻ­āĻŋ⧍ (GPLv2) āϞāĻžāχāϏ⧇āĻ¨ā§āϏ⧇āϰ āĻ…āϧ⧀āύ⧇ āϞāĻžāχāϏ⧇āĻ¨ā§āϏāĻĒā§āϰāĻžāĻĒā§āϤ, āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ āĻ­āĻžāĻ°ā§āϚāĻŋāĻ“ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϕ⧋āĻĄāϟāĻŋ āϰāĻžāĻ¸ā§āϟ (Rust) āĻ­āĻžāώāĻžāϝāĻŧ āϞ⧇āĻ–āĻž āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒāĻžāϚāĻŋ ⧍.ā§Ļ (Apache 2.0) āϞāĻžāχāϏ⧇āĻ¨ā§āϏ⧇āϰ āĻ…āϧ⧀āύ⧇ āϞāĻžāχāϏ⧇āĻ¨ā§āϏāĻĒā§āϰāĻžāĻĒā§āϤāĨ¤

āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āĻŽāϤ⧇, āϜāĻŋāĻĒāĻŋāχāω āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻ•ā§āώāϤāĻŋ ⧍%-āĻāϰ āĻŦ⧇āĻļāĻŋ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāĻĒāĻŋāφāχ āϞ⧇āϭ⧇āϞ⧇ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ…āύ⧁āĻŦāĻžāĻĻ āύāĻž āĻ•āϰ⧇, āφāχāĻ“āϏāĻŋāϟāĻŋāĻāϞ (ioctl) āĻ•āϞāϗ⧁āϞ⧋āϕ⧇ āύ⧇āϟāĻŋāĻ­ āĻāύāĻ­āĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇ āϰāĻŋāĻĄāĻžāχāϰ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāύāĻ­āĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ āĻāĻŦāĻŋāφāχ (ABI) āϞ⧇āϭ⧇āϞ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āωāĻšā§āϚ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻ…āĻ°ā§āϜāύ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϗ⧇āĻ¸ā§āϟ āϏāĻžāχāĻĄā§‡, āχāωāϜāĻžāϰ āĻ¸ā§āĻĒ⧇āϏ⧇ āϚāϞāĻŽāĻžāύ āύ⧇āϟāĻŋāĻ­ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻāĻŦāĻ‚ āĻšāĻžāχ-āϞ⧇āϭ⧇āϞ āĻāύāĻ­āĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāχāĻ­āĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āϗ⧇āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āύ⧇āϞ āĻŽāĻĄāĻŋāωāϞ āϞ⧋āĻĄ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ /dev/nvidiactl, /dev/nvidia0â€ĻN, āĻāĻŦāĻ‚ /dev/nvidia-uvm āĻĄāĻŋāĻ­āĻžāχāϏ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰ⧇ āĻāĻŦāĻ‚ ioctl() āĻ“ mmap() āĻ•āϞāϗ⧁āϞ⧋āϕ⧇ āĻāĻ•āϟāĻŋ virtqueue-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻšā§‹āĻ¸ā§āϟ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āϰāĻžāωāϟ āĻ•āϰ⧇, āϝāĻž āϏ⧇āϗ⧁āϞ⧋āϕ⧇ NVIDIA āĻšā§‹āĻ¸ā§āϟ āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ āĻĒāĻžāĻ āĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻšā§‹āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ•āύāĻŸā§‡āĻ•ā§āϏāϟ āϏ⧁āχāϚāĻŋāĻ‚ āĻāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦāĻžāĻĢāĻžāϰāϗ⧁āϞ⧋āϕ⧇ āĻšā§‹āĻ¸ā§āϟ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ GPU āĻĻā§āĻŦāĻžāϰāĻž āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ āĻļ⧇āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻŽā§āϝāĻžāĻĒ (mmapped) āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻāĻ•ā§āϏāĻ•ā§āϞ⧁āϏāĻŋāĻ­ āϜāĻŋāĻĒāĻŋāχāω āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒāĻžāϏāĻĨā§āϰ⧁ (āĻ­āĻŋāĻāĻĢāφāχāĻ“ āĻĒāĻžāϏāĻĨā§āϰ⧁)-āĻāϰ āĻŦāĻŋāĻĒāϰ⧀āϤ⧇, āĻ­āĻžāĻ°ā§āϚāĻŋāĻ“-āĻāύāĻ­āĻŋāϜāĻŋāĻĒāĻŋāχāω āĻĒā§āϰāĻœā§‡āĻ•ā§āϟāϟāĻŋ āĻāĻ•āĻžāϧāĻŋāĻ• āϜāĻŋāĻĒāĻŋāχāω āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āϜāĻŋāĻĒāĻŋāχāω-āϤ⧇ āĻļ⧇āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύāĻāĻŦāĻ‚ virtio-gpu (Venus, VirGL)-āĻāϰ āĻŽāϤ⧋ āύāϝāĻŧ, āĻāϟāĻŋ Vulkan āĻāĻŦāĻ‚ OpenGL āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ API āĻŸā§āϰāĻžāĻ¨ā§āϏāϞ⧇āĻļāύ āϞ⧇āϭ⧇āϞ⧇ āĻ•āĻžāϜ āύāĻž āĻ•āϰ⧇, āĻŦāϰāĻ‚ NVIDIA āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ āĻ•āĻžāϛ⧇ ABI āĻĒāĻžāϏāĻĨā§āϰ⧁-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ virtio-nvgpu-āĻāϰ āĻ…āϏ⧁āĻŦāĻŋāϧāĻžāϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ IOMMU-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āφāχāϏ⧋āϞ⧇āĻļāύ⧇āϰ āĻ…āĻ­āĻžāĻŦ (āϗ⧇āĻ¸ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϗ⧁āϞ⧋ NVIDIA āĻšā§‹āĻ¸ā§āϟ āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ ioctl āĻ•āϞ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻĨāĻžāϕ⧇) āĻāĻŦāĻ‚ NVIDIA āĻĄā§āϰāĻžāχāĻ­āĻžāϰ ABI-āĻāϰ āωāĻĒāϰ āĻāϰ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž (āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ ABI āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ, āϝāĻžāϰ āϜāĻ¨ā§āϝ virtio-nvgpu-āϕ⧇ āĻŽāĻžāύāĻŋāϝāĻŧ⧇ āύ⧇āĻ“āϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ)āĨ¤

Vulkan, OpenGL, NVENC, āĻāĻŦāĻ‚ CUDA API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚, āĻ­āĻŋāĻĄāĻŋāĻ“ āĻāύāϕ⧋āĻĄāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ virtio-nvgpu-āĻāϰ āϏāĻ•ā§āώāĻŽāϤāĻž āϝāĻĨ⧇āĻˇā§āϟāĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ•ā§āϞāĻžāωāĻĄ āϗ⧇āĻŽāĻŋāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŦāĻž āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻĄā§‡āĻ¸ā§āĻ•āϟāĻĒ āϤ⧈āϰāĻŋāϰ āĻ•āĻĨāĻž āĻŦāϞāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝ⧇āĻ–āĻžāύ⧇ āϕ⧋āύ⧋ āϗ⧇āĻŽ āĻŦāĻž āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāϞ⧇āĨ¤ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύāϝāĻž āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰ⧇, NVENC āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāϞāĻžāĻĢāϞāϟāĻŋāϰ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻāύāϕ⧋āĻĄāĻŋāĻ‚ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϏāĻ‚āϕ⧁āϚāĻŋāϤ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āφāĻ•āĻžāϰ⧇ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ•āĻžāϛ⧇ āφāωāϟāĻĒ⧁āϟ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰ⧇āĨ¤

āωāĻ¤ā§āϏ: opennet.ru

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster