NVIDIA / NVIDIA/k8s-device-plugin
[Bug]: High CPU Usage on Nontrivial MIG Configurations
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 3.9k
- Forks
- 868
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 27
Description
1. Quick Debug Information
- OS/Version(e.g. RHEL8.6, Ubuntu22.04): Talos 1.13.0
- Kernel Version: 6.18.24-talos
- Container Runtime Type/Version(e.g. Containerd, CRI-O, Docker): containerd://2.2.3
- K8s Flavor/Version(e.g. K8s, OCP, Rancher, GKE, EKS): K8s 1.35.5
2. Issue or feature description
We're running v26.3.3 of the GPU operator chart on Talos VMs with one H100 GPU each, attached via PCI passthrough.
The device plugin pods use 100% CPU on nodes with MIG layouts with multiple slices. On nodes where MIG is disabled or set to a single-slice layout (in our case, a single 7g.94gb partition), the CPU usage is minimal. CPU usage rises to 100% pretty much immediately after the pod starts. Known affected layouts:
- 1x
4g.47gband 1x3g.47gb - 1x
3g.47gband 2x2g.24gb
Known unaffected layouts:
- 1x
7g.94gb - MIG disabled, i.e.
mig-enabled: falsein themig-partedconfiguration
The same behavior was described in #1542, but the issue was closed since OP did not respond to comments.
3. Information to attach (optional if deemed irrelevant)
From the Talos dashboard:
The logs don't show any particular errors. The pods with low and high CPU usage have basically the same output, aside from the resources advertised. The error ERROR: init 250 result=11 appears in all the NVIDIA pods but doesn't seem to affect anything. I've attached the full logs below. The pod starts the GRPC servers for the configured MIG slices and then nothing else gets printed. The device plugin responds correctly to changes to the nvidia.com/device-plugin.config label.
Note: the MIG manager doesn't work on Talos. See https://github.com/NVIDIA/mig-parted/pull/382, which adds support for Talos. We are using this build.
Common error checking:
- The output of
nvidia-smi -aon your host - Your docker configuration file (e.g:
/etc/docker/daemon.json) - The k8s-device-plugin container logs
- The kubelet logs on the node (e.g:
sudo journalctl -r -u kubelet)
Additional information that might help better understand your environment and reproduce the bug:
- Docker version from
docker version - Docker command, image and tag used
- Kernel version from
uname -a - Any relevant kernel output lines from
dmesg - NVIDIA packages version from
dpkg -l '*nvidia*'orrpm -qa '*nvidia*'- Installed via Talos system extensions
extensions.talos.dev/nonfree-kmod-nvidia-lts=580.126.20-v1.13.0extensions.talos.dev/nvidia-container-toolkit-lts=580.126.20-v1.19.0
- NVIDIA Container Toolkit version from
nvidia-ctk --version
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.