Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vgpu: Improve reliability of enabling sriov #37

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

jovial
Copy link
Collaborator

@jovial jovial commented Jan 10, 2025

There is a race condition on boot:

[stack@gpu2 ~]$ sudo journalctl -u nvidia-sriov-0000:17:00.0.service
Jan 09 12:13:11 gpu2 systemd[1]: Starting Enable SR-IOV on Nvidia card (0000:17:00.0)...
Jan 09 12:13:16 gpu2 sriov-manage[3802]: Enabling VFs on 0000:17:00.0
Jan 09 12:13:17 gpu2 sriov-manage[3837]: awk: (FILENAME=- FNR=1) warning: error writing standard output: File exists
Jan 09 12:13:17 gpu2 sriov-manage[3899]: awk: (FILENAME=- FNR=1) warning: error writing standard output: No such device
Jan 09 12:13:17 gpu2 systemd[1]: nvidia-sriov-0000:17:00.0.service: Main process exited, code=exited, status=1/FAILURE
Jan 09 12:13:17 gpu2 systemd[1]: nvidia-sriov-0000:17:00.0.service: Failed with result 'exit-code'.
Jan 09 12:13:17 gpu2 systemd[1]: Failed to start Enable SR-IOV on Nvidia card (0000:17:00.0).

This has been observed on Rocky 9.4 with NVIDIA-AI-Enterprise-Linux-KVM-550.127.06-550.127.05-553.24.

We can work around this by retrying. The sriov-manage script can leave the driver unbound, so we first ensure that the NVIDIA driver is bound to the card.

There is a race condition on boot:

```
[stack@gpu2 ~]$ sudo journalctl -u nvidia-sriov-0000:17:00.0.service
Jan 09 12:13:11 gpu2 systemd[1]: Starting Enable SR-IOV on Nvidia card (0000:17:00.0)...
Jan 09 12:13:16 gpu2 sriov-manage[3802]: Enabling VFs on 0000:17:00.0
Jan 09 12:13:17 gpu2 sriov-manage[3837]: awk: (FILENAME=- FNR=1) warning: error writing standard output: File exists
Jan 09 12:13:17 gpu2 sriov-manage[3899]: awk: (FILENAME=- FNR=1) warning: error writing standard output: No such device
Jan 09 12:13:17 gpu2 systemd[1]: nvidia-sriov-0000:17:00.0.service: Main process exited, code=exited, status=1/FAILURE
Jan 09 12:13:17 gpu2 systemd[1]: nvidia-sriov-0000:17:00.0.service: Failed with result 'exit-code'.
Jan 09 12:13:17 gpu2 systemd[1]: Failed to start Enable SR-IOV on Nvidia card (0000:17:00.0).
```

This has been observed on Rocky 9.4 with NVIDIA-AI-Enterprise-Linux-KVM-550.127.06-550.127.05-553.24.

We can work around this by retrying. The sriov-manage script can leave the driver unbound, so we first ensure that the NVIDIA driver is bound to the card.
@jovial jovial requested a review from a team as a code owner January 10, 2025 13:16
@jovial jovial changed the title Make enabling sriov more reliable vgpu: Improve reliability of enabling sriov Jan 10, 2025
Copy link

@m-bull m-bull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems sensible, just missing a bit of information to understand the reason for one part of this change.

Type=oneshot
User=root
# NOTE(wszumski): There is a race in the driver initialization where if we run this too early, then
# the mdev_support_devices entry doesn't show up in sysfs. I was unable to get this to show up again
# without a reboot.
ExecStartPre=/bin/sleep 5
ExecStart=/bin/bash -c "echo '{{ vgpu_definition.pci_address }}' > /sys/bus/pci/drivers/nvidia/bind || true"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to have a short comment to describe why this is a necessary addition.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants