Home Server 3.3 Home Server 3.3

Home Server 3.3

Continuing from a previous post

The CPU on the gear I was previously using as a server did not have on board graphics, so I had not dealt with hardware acceleration for Plex. It was my old gaming PC so it had plenty of headroom to software through anything plex threw at it. I did get some experience setting this up for Frigate, but that was on an rPi4 and relatively easy to set up.

Layer 1 - Proxmox

The first step was to make sure the GPU was visible to the underlying proxmox host and make it available to VMs. I followed the Proxmox Guide and found the PCI device where the iGPU is and added it to Proxmox.

Layer 2 - Ubuntu VM

In Proxmox, I stopped the VM and added the PCI device but did not select it as the default GPU. This allows the VNC Console in the Proxmox UI to still function. I started the VM and verified that it could now see the PCI device.

After some Google Fu I found that the Intel N150 CPU is not supported in the linux kernel version that Ubuntu currently ships with. I used the mainline tool to updated the linux kernel on the VM from 6.8 to 6.11.

This led me to the intel drivers needed for the GPU, and I installed those as well with no issues. I also installed intel-gpu-tools and can see the correct GPU is ready to be used.

Layer 3 - Kubernetes

After further research I found a few more plugins from Intel that needed to be added to the K8s cluster. I used ArgoCD to add intel-device-plugins-operator and intel-device-plugins-gpu to the cluster and configured them from my repo.

For the intel plugins to find the GPU, I also needed to add a label to the node: "intel.feature.node.kubernetes.io/gpu": "true"

This made the i915 GPU resource available for scheduling on the node.

Layer 4 - Apps

The first App to get accelerated was Plex. I edited the values file to include the GPU under requests/limits and synced the app with ArgoCD. Once it was back, I played the highest quality media we have (4k HDR10 hevc main @84Mbps) and it now plays quickly and smoothly.

I tried to enable hardware acceleration for Frigate, but nothing I tried would get the app to work with the GPU. The GPU is visible in the pod, but preset-vaapi still doesn’t seem to find it. I’ll leave this non accelerated for now as the CPU usage for what I’m using it for is minimal.

Partial Success!

Project is continued here


← Back to blog