programmatūra · 6 min · 07.09.2026

NVIDIA sūta kodolam 13 ielāpus, kas vGPU pārvaldnieku pārceļ uz Rust draiveri Nova

NVIDIA inženieris Zhi Wang 5. septembrī nosūtīja Linux kodola izstrādātāju sarakstam 13 ielāpu kopu, kas kodolam pievieno vGPU pārvaldnieku un VFIO varianta draiveri. Abi balstās uz Nova, NVIDIA atklātā pirmkoda draiveri, kas rakstīts Rust valodā.

vGPU nozīmē vienas fiziskās videokartes sadalīšanu starp vairākām virtuālajām mašīnām. Katra mašīna redz savu karti ar savu atmiņas daļu. Līdz šim saimniekmašīnā tam vajadzēja NVIDIA slēgtā koda pārvaldnieku, ko instalē atsevišķi no kodola. Jaunā kopa šo darbu pārliek uz nova-core, kas kodolā jau atrodas.

ko dara vGPU pārvaldnieks

Pārvaldnieks izveido un iznīcina vGPU eksemplārus. Tas nolasa konkrētajai kartei pieejamos vGPU tipus un ļauj izvēlēties vienu no tiem. Tips nosaka, cik daudz kadru bufera atmiņas viesis dabū un cik tādu viesu uz kartes vispār var būt.

Otrs pārvaldnieka uzdevums ir programmaparatūras ielāde. GSP jeb GPU System Processor ir atsevišķs procesors uz pašas kartes, kas kopš Turing paaudzes uzņēmies lielāko daļu no tā, ko agrāk darīja draiveris uz saimniekmašīnas centrālā procesora. Draiverim tagad galvenokārt jāiedod GSP pareizā programmaparatūra un jārunā ar to pa komandu rindu.

Trešais uzdevums ir aparatūras resursu dalīšana. Pārvaldnieks rezervē sev kadru bufera atmiņu un kanālus, no kuriem pēc tam veido atsevišķos vGPU. Tieši šī grāmatvedība prasa zināšanas par kartes iekšējo uzbūvi. Tas ir iemesls, kāpēc daļa koda līdz šim palika slēgta.

VFIO daļa un viesu sistēmas

Ielāpu otrā puse ir VFIO varianta draiveris. VFIO ir kodola mehānisms, kas ļauj PCI ierīci nodot virtuālajai mašīnai tiešā veidā. Varianta draiveris ir papildinājums parastajam VFIO PCI draiverim gadījumiem, kad ierīce prasa kaut ko savu, piemēram, stāvokļa saglabāšanu migrācijas laikā vai īpašu reģistru apstrādi.

Šeit varianta draiveris parāda vGPU kā ierīci, ko QEMU var piešķirt virtuālajai mašīnai. Ielāpu aprakstā minēti gan Linux, gan Windows viesi. Viesa iekšienē joprojām strādā parastais NVIDIA draiveris, kas karti redz tā, it kā tā būtu vesela. Mainās saimniekmašīnas puse.

kas ir Nova

Nova ir NVIDIA karšu draiveris Rust valodā, ko izstrādā paši NVIDIA inženieri. Tas paredzēts kartēm ar GSP, tātad RTX 20 sērijai un visam jaunākajam: Turing, Ada, Hopper, Blackwell. Kodola dokumentācija Nova apraksta kā Nouveau aizstājēju šīm kartēm. Vecākas kartes paliek Nouveau ziņā.

Nova ir paredzēts aizstāt nouveau draiveri tām NVIDIA kartēm, kuru pamatā ir GPU System Processor.

Draiveris sadalīts divos līmeņos. nova-core runā ar aparatūru pa PCI, palaiž GSP un uztur komandu rindu. nova-drm ir grafikas draiveris virs tā, kas dod DRM saskarnes lietotāja telpai. Kods atrodas drivers/gpu/nova-core/ un drivers/gpu/drm/nova/.

Šis dalījums ir iemesls, kāpēc vGPU pārvaldnieks vispār ir iespējams šādā formā. Tas ir vēl viens otrā līmeņa draiveris blakus nova-drm un izmanto to pašu nova-core abstrakciju. Atsevišķs monolīts, kas no jauna raksta PCI un GSP darbu, tam nav vajadzīgs.

Rust šeit nav pašmērķis. GSP komandu rinda un vGPU resursu tabulas ir vietas, kur draiveris strādā ar norādēm uz atmiņu, ko aizpilda pati karte. Rust tipu sistēma daļu no kļūdām šajā vietā noķer kompilēšanas laikā. Nova ir viens no pirmajiem lielajiem draiveriem kodolā, kas uzrakstīts šādi no nulles.

grafiks un kodola 7.3

Nova izstrāde notiek drm-rust-next kokā freedesktop.org GitLab serverī. Rust for Linux projekta lapa par Nova norāda šo koku kā vietu, kur kods nonāk pirms mainline.

Linux 7.3 ciklā Nova saņem GSP palaišanas, vGPU palaišanas un TLV programmaparatūras attēla formāta apvienošanu. Līdz šim šie trīs ceļi kodā gāja atsevišķi. DRM Rust izmaiņas jau nosūtītas uz DRM-Next. Stabilais 7.3 gaidāms oktobra beigās.

Tālākā gaita ir parastā kodola kārtība. Pirmajai versijai seko recenziju kārtas sarakstā, pēc tam labotas versijas ar numuriem v2, v3 un tā tālāk. Tikai tad kods nonāk drm-rust-next un gaida nākamo apvienošanas logu. Nova gadījumā šis ceļš mēdz aizņemt vairākus mēnešus, jo katra kārta skar gan Rust abstrakcijas, gan DRM apakšsistēmu.

Hopper un Blackwell atbalsta ielāpi jūnijā bija sasnieguši divpadsmito versiju un mainline vēl nebija nonākuši. Jaunā vGPU kopa uz šo brīdi ir pirmajā versijā.

kam tas noderēs

Phoronix vērtē, ka fiziskās kartes atbalsts, visticamāk, aprobežosies ar darbstaciju un datu centru modeļiem. GeForce kartēm NVIDIA vGPU nav atļāvis nekad. Ielāpi to nemaina.

Serveru pusē mainās uzstādīšanas kārtība. Ja vGPU pārvaldnieks ir kodolā, saimniekmašīnā vairs nav jāuztur atsevišķa NVIDIA pakotne, kas pie katras kodola versijas maiņas jāpārbūvē. Distribūcijas šo kodu var piegādāt tāpat kā jebkuru citu draiveri. Administratoriem tas nozīmē mazāk darba pie kodola atjauninājumiem, kur līdz šim slēgtais modulis mēdza salūzt.

Otra puse ir recenzēšana. Kods, kas sadala vienu karti starp vairākiem viesiem, ir izolācijas robeža. Kodola sarakstā to tagad var lasīt ikviens. Slēgtajā pārvaldniekā to nevarēja darīt.

Ielāpi kodola sarakstā ir publiski kopš 5. septembra. Mainline tie vēl nav.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie