<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 17 janv. 2023 à 10:00, Tobias Urdin <<a href="mailto:tobias.urdin@binero.com">tobias.urdin@binero.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>
Hello,
<div><br>
</div>
<div>We are using vGPUs with Nova on OpenStack Xena release and we’ve had a fairly good experience integration</div>
<div>NVIDIA A10 GPUs into our cloud.</div>
<div><br></div></div></blockquote><div><br></div><div>Great to hear, thanks for your feedback, much appreciated Tobias.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>
</div>
<div>As we see it there is some painpoints that just goes with mantaining the GPU feature.</div>
<div><br>
</div>
<div>- There is a very tight coupling of the NVIDIA driver in the guest (instance) and on the compute node that needs to</div>
<div>  be managed.</div>
<div><br></div></div></blockquote><div><br></div><div>As nvidia provides proprietary drivers, there isn't much we can move on upstream, even for CI testing.</div><div>Many participants in this thread explained this as a common concern and I understand their pain, but yeah you need third-party tooling for managing both the driver installation and the licensing servers.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>
</div>
<div>- Doing maintainance need more planning i.e powering off instances, NVIDIA driver on compute node needs to be</div>
<div>  rebuilt on hypervisor if kernel is upgraded unless you’ve implemented DKMS for that.</div>
<div><br></div></div></blockquote><div><br></div><div>Ditto, unfortunately I wish the driver could be less kernel-dependent but I don't see a foreseenable future for this.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>
</div>
<div>- Because we’ve different flavor of GPU (we split the A10 cards into different flavors for maximum utilization of</div>
<div>  other compute resources) we added custom traits in the Placement service to handle that, handling that with</div>
<div>  a script since doing anything manually related to GPUs you will get confused quickly. [1]</div></div></blockquote><div><br></div><div>True, that's why you can also use generic mdevs which will create different resource classes (but ssssht) or use the placement.yaml file to manage your inventories.</div><div><a href="https://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/generic-mdevs.html">https://specs.openstack.org/openstack/nova-specs/specs/xena/implemented/generic-mdevs.html</a> <br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
<div><br>
</div>
<div>- Since Nova does not handle recreation of mdevs (or use the new libvirt autostart feature for mdevs) we have</div>
<div>  a systemd unit that executes before the nova-compute service that walks all the libvirt domains and does lookups</div>
<div>  in Placement to recreate the mdevs before nova-compute start. [2] [3] [4]</div>
<div><br></div></div></blockquote><div><br></div><div>This is a known issue and we agreed on the last PTG for a direction. Patches on review.</div><div><a href="https://review.opendev.org/c/openstack/nova/+/864418">https://review.opendev.org/c/openstack/nova/+/864418</a></div><div><br></div><div>Thanks,</div><div>-Sylvain<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>
</div>
<div>Best regards</div>
<div>Tobias</div>
<div><br>
</div>
<div>DISCLAIMER: Below is provided without any warranty of actually working for you or your setup and does</div>
<div>very specific things that we need and is only provided to give you some insight and help. Use at your own risk.</div>
<div><br>
</div>
<div>[1] <a href="https://paste.opendev.org/show/b6FdfwDHnyJXR0G3XarE/" target="_blank">https://paste.opendev.org/show/b6FdfwDHnyJXR0G3XarE/</a></div>
<div>[2] <a href="https://paste.opendev.org/show/bGtO6aIE519uysvytWv0/" target="_blank">https://paste.opendev.org/show/bGtO6aIE519uysvytWv0/</a></div>
<div>[3] <a href="https://paste.opendev.org/show/bftOEIPxlpLptkosxlL6/" target="_blank">https://paste.opendev.org/show/bftOEIPxlpLptkosxlL6/</a></div>
<div>[4] <a href="https://paste.opendev.org/show/bOYBV6lhRON4ntQKYPkb/" target="_blank">https://paste.opendev.org/show/bOYBV6lhRON4ntQKYPkb/</a></div>
</div>

</blockquote></div></div>