ต่อจากบล็อกก่อนหน้า
การ Config Frigate NVR ให้บันทึก 24/7
จะเลือกใช้ hwaccel_args: auto ในส่วนของ ffmpeg เพื่อความสะดวก ปล่อยให้ Frigate เช็คเองว่าจะเลือกใช้ hardware acceleration ตัวไหน
ในบล็อกนี้จะมาแชร์วิธีการ config Frigate ให้ใช้ Intel VAAPI โดยตรง ซึ่งเป็น hardware acceleration ที่มาพร้อม GPU ของ Intel แทบจะทุกรุ่น วิธีนี้ช่วยลดการใช้ CPU ลงอย่างชัดเจน และทำให้การประมวลผล video stream ลื่นขึ้นมาก
1. ตรวจสอบว่าเครื่องมี Intel GPU หรือไม่
lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
จะเห็นประมาณ Intel Corporation HD Graphics ... แสดงว่า มี Intel GPU
2. ตรวจสอบอุปกรณ์ /dev/dri
ls -l /dev/dri/renderD128
crw-rw---- 1 root render 226, 128 Aug 29 07:10 /dev/dri/renderD128
ถ้าเห็น renderD128 แสดงว่าพร้อมใช้งาน Intel GPU แล้ว
3. Passthrough GPU เข้า LXC Container
ก่อนอื่นให้เช็ค group render บน Proxmox Host ก่อน เพื่อที่จะตั้งค่า LXC Container ให้ถูกต้อง
grep render /etc/group
render:x:104:
หมายความว่า group render มี GID = 104
ต่อมาแก้ไข config ของ LXC Container ของเรา (ในตัวอย่าง LXC ID = 105)
nano /etc/pve/lxc/105.conf
เพิ่มบรรทัดนี้เข้าไปเพื่อ passthrough GPU ให้ Container
dev0: /dev/dri/renderD128,gid=104
หลังจากนั้น restart LXC Container
4. ตรวจสอบ GPU ใน LXC Container
ls -l /dev/dri/renderD128
crw-rw---- 1 root render 226, 128 Sep 5 08:54 /dev/dri/renderD128
group ต้องเป็น render แสดงว่าได้ทำการ passthrough GPU เข้ามาใน Container เรียบร้อยแล้ว
5. ตั้งค่า Docker Compose ใช้งาน GPU
แก้ไข service ของ Frigate ในไฟล์ docker-compose.yml เพื่อให้ container สามารถเข้าถึง GPU ได้โดยตรง
services:
frigate:
group_add:
- "104"
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
ports:
- "1984:1984"
devices→ passthrough/dev/dri/renderD128เข้าไปใน containergroup_add→ ให้ container join group render เพื่อมีสิทธิ์ใช้งาน GPU1984→ เปิด port สำหรับ web UI ของ go2rtc
เมื่อ container รันขึ้นมาแล้ว สามารถเข้าไปที่ http://<server-ip>:1984
ไปที่เมนู Add → FFmpeg Hardware ตรงนี้จะแสดงว่า GPU ของเรารองรับ hardware acceleration อะไรบ้าง

หมายเหตุ: การเช็ค hardware acceleration ตรงนี้เป็นเพียงแนวทางส่วนตัว
อีกวิธีหนึ่งในการตรวจสอบ คือการติดตั้ง vainfo
sudo apt install vainfo -y
รันคำสั่งตรวจสอบ
sudo vainfo
ถ้าแสดงผลแบบนี้ แสดงว่า GPU พร้อมใช้งาน VAAPI
vainfo: Supported profile and entrypoints
VAProfileH264Main : VAEntrypointVLD
VAProfileH264High : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
6. Config Frigate ffmpeg ให้ใช้ VAAPI
ffmpeg:
# hwaccel_args: auto
hwaccel_args: preset-vaapi
hwaccel_args: preset-vaapi→ บอก ffmpeg ให้ใช้ VAAPI สำหรับ hardware acceleration
หลังจาก config Frigate ให้ใช้ VAAPI แล้ว เราสามารถเช็คว่า GPU ถูกใช้งานจริง
sudo apt install intel-gpu-tools -y
รันคำสั่ง
sudo intel_gpu_top
จะเห็น activity ของ GPU เช่น Video Engine และ 3D Engine

