Kiến thức công nghệ
So sánh Intel, AMD & NVIDIA trong ảo hóa GPU
Hiện tại, 3 công ty này cạnh tranh với nhau trong thị trường ảo hóa GPU. Hãy tìm hiểu những tính năng chính giữa chúng và cách mà họ thực hiện việc ảo hóa GPU.
Điều gì tạo nên GPU?
GPU sinh ra để giải quyết vấn đề trình diễn hình ảnh, video 2D hoặc 3D lên màn hình. Càng có nhiều GPU, càng giải quyết dễ dàng. GPU càng nhanh, vấn đề càng giải quyết nhanh. Có thể nói, trình diễn là tính năng quan trọng nhất của GPU.
Trình diễn không chỉ dành cho đồ họa. Với GPGPU (General Purpose GPU), ngoài việc đảm nhận các trình hỗ trợ đồ họa (như đổ bóng hoặc xử lý các dấu chấm chuyển động), GPU còn có thể thực hiện nhiều phép tính toán tại cùng một thời điểm — gọi là tính toán song song. Hầu hết các nhà cung cấp đều hỗ trợ cả trên GPU vật lý hoặc GPU ảo (vGPU). Khi bạn nghe về CUDA hoặc OpenCL, điều đó có nghĩa là GPU thực hiện khả năng tính toán bằng GPGPU, được truy vấn thông qua các API lập trình song song này.
Ngoài ra, GPU cũng bao gồm khả năng decode và encode video. Điều này phụ thuộc vào các ứng dụng hoặc media player bạn đang sử dụng có hỗ trợ tăng tốc phần cứng encoding/decoding, và GPU có đang hỗ trợ các CODEC đó hay không.
Ảo hóa GPU – 3 hình thức cơ bản
API Intercept
Hình thức xuất hiện từ lâu, hoạt động ở cấp OpenGL và DirectX. Nó chặn các lệnh thông qua một API, gửi chúng tới GPU, rồi đưa kết quả trở lại hiển thị cho người dùng — vì tất cả được thực hiện trong phần mềm. API Intercept thường có hiệu suất tốt khi hoạt động nhưng không tương thích tốt với các ứng dụng 3D. Hiện tại, nó là phương pháp duy nhất hỗ trợ vMotion.
Virtualized GPU
Điểm nóng nhất trong ảo hóa máy tính để bàn hiện nay, hoàn toàn tương thích với hạ tầng siêu hội tụ. Với vGPU, người dùng có thể truy cập trực tiếp vào một phần của GPU, thích hợp hơn API Intercept vì hệ điều hành dùng được trình điều khiển của AMD/NVIDIA/Intel — các ứng dụng gọi thẳng xuống GPU mà không cần qua API trung gian. Hiệu suất tốt hơn API Intercept và khả năng tương thích ứng dụng tốt, nhưng không hỗ trợ vMotion.
Pass-through
Kết nối các máy ảo trực tiếp với GPU — nếu có hai card trong server, nên kết nối hai máy ảo (VM) với GPU. Rất tốt cho công việc cần tối ưu năng lực xử lý, vì VM có quyền truy cập vào toàn bộ GPU và các tính năng của nó cùng khả năng tương thích ứng dụng. Có thể nói, Pass-through là lựa chọn tốt nhất tại thời điểm này.
Các loại GPU
Bài viết tập trung vào vGPU, vì đó là công nghệ GPU được áp dụng rộng rãi nhất cho ảo hóa. Hiện tại, có 3 hãng cung cấp GPU có khả năng ảo hóa: Intel (GVT-g), AMD (MxGPU) và NVIDIA (vGPU). Mỗi hãng có một thuật ngữ khác nhau, nhưng thực sự chỉ là tên sản phẩm — sự khác biệt nằm ở cơ chế ảo hóa GPU.

So sánh chi tiết theo từng tiêu chí
RAM video (VRAM)
Mỗi VM được cung cấp VRAM, là một phần của RAM vật lý, chứa bộ nhớ tạm thời tách biệt về mặt vật lý cho từng VM. MxGPU của AMD 100% dựa trên phần cứng, trong khi NVIDIA và Intel thực hiện điều đó bằng phần mềm — có thể quan trọng khi bảo mật bộ nhớ tạm thời VRAM là một yêu cầu.
Shader Engines
AMD khác các hãng khác trong cách cắt cơ chế đổ bóng đồ họa: với MxGPU, máy ảo nhận tài nguyên xử lý từ một lớp chuyên dụng tách ra từ GPU vật lý, trong khi Intel và NVIDIA xử lý bằng phần mềm. Với Intel/NVIDIA, nếu GPU không dùng, nguồn lực được giải phóng cho VM khác; với AMD, nguồn lực vẫn được giữ lại tại VM đó dù không dùng.
Encoding / Decoding video
AMD không có khả năng encode/decode trong MxGPU. Intel và NVIDIA đều có thể, cả hai đều cắt lát phần cứng để encode/decode. Nhưng NVIDIA có lợi thế hơn khi dùng cơ chế cắt lớp thời gian khác nhau cho mỗi tác vụ (shaders, encoding, decoding), giúp phân phối năng lực GPU linh hoạt hơn.
Tính toán GPU
AMD và Intel đều hỗ trợ OpenCL API thông qua các VM, trong khi NVIDIA chỉ hỗ trợ các trường hợp sử dụng GPGPU ở chế độ Pass-through.
Trình ảo hóa (Hypervisors)
Intel và NVIDIA đều yêu cầu một trình quản lý phần mềm cài trên hypervisor. AMD dùng SR-IOV — đã tích hợp sẵn để BIOS hiểu mà không cần cài trình ảo hóa riêng. AMD hiện chỉ được chứng nhận trên ESX; Intel hỗ trợ KVM và XenServer; NVIDIA hỗ trợ cả ESX và XenServer. Đáng chú ý, Hyper-V hiện chưa được hỗ trợ.