Πριν από λίγες ημέρες, η NVIDIA ανακοίνωσε, μέσω των λιστών αλληλογραφίας Kernel, την κυκλοφορία ενός συνόλου ενημερώσεων κώδικα (patches) που υλοποιούν την τεχνολογία vGPU. Αυτές οι ενημερώσεις κώδικα επιτρέπουν τη χρήση εικονικών GPU της NVIDIA σε εικονικά συστήματα, παρέχοντας ισχυρή απόδοση GPU για μια ποικιλία φόρτων εργασίας, που κυμαίνονται από εικονικούς σταθμούς εργασίας με υψηλές απαιτήσεις γραφικών έως εφαρμογές επιστήμης δεδομένων και τεχνητής νοημοσύνης.
Η vGPU διαιρεί τους φυσικούς πόρους GPU της NVIDIA σε υλικό, αναθέτοντας σε κάθε vGPU τη δική της εικονική λειτουργία PCI Express (VF). Αυτό σημαίνει ότι τα φιλοξενούμενα συστήματα μπορούν να εκτελούν πολλαπλές εργασίες αξιοποιώντας στο έπακρο τους διαθέσιμους πόρους.
Αναφέρεται ότι κάθε NVIDIA vGPU λειτουργεί παρόμοια με μια συμβατική GPU, καθώς έχει μια σταθερή ποσότητα buffer frame και μία ή περισσότερες εικονικές εξόδους οθόνης, γνωστές και ως "κεφαλές". Το buffer frame της vGPU εκχωρείται από το buffer frame της φυσικής GPU κατά τη στιγμή της δημιουργίας του και η vGPU διατηρεί την αποκλειστική χρήση αυτού του buffer μέχρι να καταστραφεί.
Επιτρέπει στο IT να επωφεληθεί από τα οφέλη διαχείρισης και ασφάλειας της εικονικοποίησης, καθώς και την απόδοση των GPU της NVIDIA που απαιτούνται για σύγχρονους φόρτους εργασίας. Το λογισμικό NVIDIA vGPU, που είναι εγκατεστημένο σε μια φυσική GPU σε έναν διακομιστή cloud ή εταιρικού κέντρου δεδομένων, δημιουργεί εικονικές GPU που μπορούν να κοινοποιηθούν σε πολλές εικονικές μηχανές.
Το πρόγραμμα οδήγησης είναι συμβατό με κάρτες γραφικών NVIDIA που βασίζονται στη μικροαρχιτεκτονική Ada Lovelace και ο αριθμός των vGPU που μπορείτε να δημιουργήσετε εξαρτάται από το μοντέλο της κάρτας γραφικών σας.
Στο κεντρικό σύστημα, το τροποποιημένο πρόγραμμα οδήγησης Nouveau χειρίζεται τη δημιουργία και τη σύζευξη των vGPU με τα φιλοξενούμενα συστήματα. Εν τω μεταξύ, το φιλοξενούμενο σύστημα χρησιμοποιεί τυπικά ιδιόκτητα προγράμματα οδήγησης NVIDIA. Αυτό διασφαλίζει ότι οι δυνατότητες της vGPU μοιάζουν με αυτές μιας κανονικής GPU, επιτρέποντας σε ένα μέρος της μνήμης framebuffer της φυσικής GPU να εκχωρηθεί στην vGPU, εγγυώμενο ότι μόνο η vGPU τη χρησιμοποιεί.
Υπάρχουν διάφοροι τύποι vGPU , ο καθένας σχεδιασμένος για διαφορετικούς σκοπούς, με ποικίλες χωρητικότητες μνήμης βίντεο, αριθμό εικονικών οθονών και μέγιστες αναλύσεις.
Η υλοποίηση περιλαμβάνει τον βασικό οδηγό nvkm, ο οποίος βασίζεται στον οδηγό Nouveau ανοιχτού κώδικα, καθώς και τον διαχειριστή vGPU, που ονομάζεται vgpu_mgr, ο οποίος λειτουργεί ως μονάδα VFIO (Virtual Function I/O). Αυτός ο διαχειριστής χειρίζεται βασικές λειτουργίες όπως η δημιουργία και η διαγραφή vGPU, η επιλογή του τύπου τους και η παροχή ενός API για τον έλεγχο του χώρου χρήστη.
Η μονάδα NVIDIA vGPU VFIO, μαζί με το VFIO, βρίσκεται σε VF και παρέχει εκτεταμένες λειτουργίες και διαχείριση, όπως επιλογή τύπου vGPU, υποστήριξη ζωντανής μετεγκατάστασης και ενημερώσεις προγραμμάτων οδήγησης hot.
Όπως και άλλες συσκευές συμβατές με VFIO, το VFIO παρέχει το
Τυπικό userpace API για τη διαχείριση του κύκλου ζωής της συσκευής και Υποστήριξη για προηγμένες λειτουργίες.Ο διαχειριστής vGPU της NVIDIA παρέχει την απαραίτητη υποστήριξη στο πρόγραμμα οδήγησης παραλλαγής NVIDIA vGPU VFIO για τη δημιουργία/καταστροφή vGPU, τον έλεγχο των διαθέσιμων τύπων vGPU, την επιλογή του τύπου vGPU κ.λπ.
Ο διαχειριστής vGPU αλληλεπιδρά με το υποκείμενο πρόγραμμα οδήγησης GPU , το οποίο έχει άμεση πρόσβαση στο υλικό. Εκτός από τη φόρτωση του υλικολογισμικού GSP, ο διαχειριστής vGPU της NVIDIA εκτελεί τις ακόλουθες λειτουργίες:
- Διαχειρίζεται κοινόχρηστους/διαμερισμένους πόρους υλικού. Για παράδειγμα, κράτηση μνήμης FB,
κανάλια για τον διαχειριστή vGPU για τη δημιουργία vGPU. - Εξαίρεση χειρισμού. Για παράδειγμα, παράδοση συμβάντων GSP στον διαχειριστή vGPU.
- Αποστολή εκδηλώσεων φιλοξενίας. Για παράδειγμα, αναστολή/συνέχιση.
- Απαριθμήσεις διαμόρφωσης υλικού.
Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα, μπορείτε να βρείτε τις λεπτομέρειες στον παρακάτω σύνδεσμο και μπορείτε επίσης να δείτε τον κώδικα σε δράση στο παρακάτω βίντεο . Οι δοκιμές κώδικα πραγματοποιήθηκαν σε Ubuntu 24.04 ως λειτουργικό σύστημα guest.