Vấn đề: Tại sao CPU luôn ‘thở dốc’ khi bạn xem phim?
Cảnh tượng CPU chạm đỉnh 100% khi xem phim 4K trên Plex hay Jellyfin chẳng còn xa lạ gì với dân chơi Homelab. Mình từng chạy một dàn Lab với 12 VM, và mỗi lần người nhà mở một bộ phim HEVC là toàn bộ dịch vụ web, production khác đều lag tung chảo. CPU gánh toàn bộ việc giải mã video (Software Transcoding) là một sự lãng phí tài nguyên khủng khiếp.
Giải pháp nằm ngay trong con chip Intel bạn đang dùng. Hầu hết CPU Intel hiện nay tích hợp nhân đồ họa (iGPU) với công nghệ Intel QuickSync. Bằng cách “đẩy” (passthrough) iGPU này vào VM hoặc LXC, mình đã giảm tải CPU trên con i5-10500 từ 95% xuống còn chưa đầy 5%. Phim chạy mượt, server vẫn mát mẻ.
QuickSync và Passthrough: Hiểu đúng để làm trúng
Trước khi gõ lệnh, anh em cần phân biệt rõ hai cơ chế này để chọn phương án phù hợp:
- Intel QuickSync: Bộ tăng tốc phần cứng chuyên biệt cho video. Nó xử lý nhanh và tiết kiệm điện hơn CPU gấp nhiều lần.
- LXC Passthrough: Cách này cho phép chia sẻ iGPU từ Host vào Container. Ưu điểm lớn nhất là bạn có thể dùng chung một iGPU cho nhiều LXC cùng lúc (ví dụ cả Plex và Handbrake).
- VM Passthrough (PCI Passthrough): Gán cứng iGPU cho một máy ảo duy nhất. Khi đã gán, Host Proxmox và các máy ảo khác sẽ hoàn toàn ‘mù’ thiết bị này.
Lời khuyên từ trải nghiệm thực tế: Hãy ưu tiên LXC. Nó nhẹ, ít tốn tài nguyên và việc cấu hình passthrough cũng bớt đau đầu hơn nhiều so với VM.
Phần 1: Kiểm tra nền tảng trên Host Proxmox
Việc đầu tiên là xác nhận Proxmox đã nhận diện được ‘vũ khí’ của bạn. Hãy truy cập Console và nhập:
ls -l /dev/dri
Thấy card0 và renderD128 xuất hiện? Phần cứng của bạn đã sẵn sàng ‘lên nòng’. Nếu không thấy gì, hãy vào BIOS và đảm bảo mục Internal Graphics đang ở trạng thái Enabled thay vì Auto.
Để giám sát hiệu năng sau này, hãy cài thêm bộ công cụ sau:
apt update && apt install intel-gpu-tools -y
Lệnh intel_gpu_top sẽ là ‘mắt thần’ giúp bạn biết iGPU có thực sự đang làm việc hay không.
Phần 2: Cấu hình iGPU cho LXC (Phương án tối ưu)
Giả sử ID của container Jellyfin là 101. Chúng ta sẽ thực hiện gán quyền truy cập thiết bị đồ họa.
Bước 1: Tìm Group ID của driver
Chạy lệnh sau trên host:
ls -n /dev/dri/renderD128
Kết quả sẽ có dạng: crw-rw---- 1 0 104 .... Hãy ghi lại số 104 (con số này có thể thay đổi tùy máy là 44 hoặc 105). Đây là chìa khóa để phân quyền.
Bước 2: Chỉnh sửa file cấu hình LXC
Mở file cấu hình bằng lệnh:
nano /etc/pve/lxc/101.conf
Dán đoạn mã sau vào cuối file, thay số 104 bằng ID bạn vừa tìm được:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 104
lxc.idmap: g 104 104 1
lxc.idmap: g 105 100105 65431
Các dòng idmap này cực kỳ quan trọng. Chúng cho phép người dùng bên trong LXC có quyền ‘mượn’ driver từ Host để xử lý đồ họa.
Bước 3: Cài đặt Driver trong LXC
Khởi động LXC, vào console của nó và cài đặt môi trường thực thi:
apt update && apt install va-driver-all-dev mesa-va-drivers -y
Kiểm tra lại bằng ls -l /dev/dri bên trong LXC. Nếu thấy thiết bị xuất hiện, bạn đã đi được 90% chặng đường.
Phần 3: Cấu hình cho VM (Full PCI Passthrough)
Nếu bạn chạy Windows Media Server, bạn buộc phải dùng cách này. Quy trình này yêu cầu Proxmox phải ‘hy sinh’ hoàn toàn iGPU cho máy ảo.
Bước 1: Kích hoạt IOMMU
Sửa file GRUB để mở cổng giao tiếp phần cứng:
nano /etc/default/grub
Cập nhật dòng cấu hình sau:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
Sau đó chạy update-grub và khởi động lại server.
Bước 2: Chặn driver trên Host
Để VM chiếm được iGPU, Host Proxmox không được phép ‘chạm’ vào nó. Hãy đưa driver vào danh sách đen:
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf
update-initramfs -u -k all
Bước 3: Gán thiết bị qua Web UI
Vào Proxmox Web UI, chọn VM của bạn -> Hardware -> Add -> PCI Device. Tìm thiết bị có tên 0000:00:02.0 (thường là iGPU). Đừng quên tích vào All Functions để nhận diện đầy đủ các thành phần bổ trợ.
Kiểm tra thành quả: Đừng chỉ nhìn vào CPU
Để biết QuickSync có đang ‘gánh team’ hay không, hãy mở console trên Host và chạy intel_gpu_top. Tiếp theo, hãy mở một bộ phim 4K trên Jellyfin và ép nó transcode sang 720p 4Mbps.
Nếu cột Video trong bảng giám sát nhảy số (ví dụ 15-30%), nghĩa là iGPU đang hoạt động hoàn hảo. CPU lúc này sẽ cực kỳ thong dong, thường chỉ dao động ở mức vài %.
Mẹo nhỏ cho người dùng Jellyfin: Đừng quên vào Dashboard -> Playback, chọn Hardware acceleration: Intel QuickSync (QSV). Hãy tích chọn các codec như H264, HEVC để phần cứng biết đường mà xử lý.
Kết luận
Cấu hình iGPU Passthrough là bước nâng cấp ‘đáng đồng tiền bát gạo’ nhất cho bất kỳ ai chơi Homelab. Nó không chỉ giúp máy chạy mượt hơn mà còn kéo dài tuổi thọ phần cứng do không phải chạy quá tải nhiệt. Nếu bạn gặp lỗi “Permission denied”, hãy rà soát kỹ lại bước idmap trong LXC – đó là nơi 80% anh em thường mắc lỗi.

