NBD-VRAM on avaldatud

Avalikustatud avatud projekt NBD-VRAM, mis vĂ”imaldab kasutada osa NVIDIA GPU graafikamuistest kui swap-ruumi Linuxis. Projekt on suunatud eelkĂ”ige sĂŒlearvutitele, mille operatiivmĂ€lu on joodetud, kus RAMi ei saa laiendada, kuid sĂŒsteemis on eraldi NVIDIA RTX/GTX graafikakaart, millel on kasutamata VRAM. Kood on kirjutatud C ja shellis ning seda levitatakse litsentsi alusel MIT.

NBD-VRAMi idee on lihtne: kui sĂŒsteem hakkab juba vahetama SSD-le, vĂ”ib SSD ette paigaldada veel ĂŒhe vahekihina — graafikamuistest. Autor toob nĂ€ite sĂŒlearvutist, mis RTX 3070 Laptop: 8 GB VRAMist eraldati 7 GB swapiks ning kokku, koos RAMi, zrami ja SSD swapiga, sai sĂŒsteem umbes 46 GB adresseeritavat mĂ€lu. Eeldatav ĂŒlevoolu jĂ€rjekord on jĂ€rgmine: esmalt kasutatakse RAMi, seejĂ€rel VRAMi kiire swapina, seejĂ€rel zrami ja lĂ”puks SSD-d.

Tehniliselt ei lisa NBD-VRAM uut kernelidraiverit. VĂ€ike deemon eraldab graafikakaardi mĂ€lu lĂ€bi CUDA Driver API, seejĂ€rel edastab selle Linuxi tuumale plokk-seadmest lĂ€bi NBD — Network Block Device — Unix-soketi peal. PĂ€rast ĂŒhendamist standardse nbd-clientiga ilmub sĂŒsteemi /dev/nbdX, mida saab tavalise swapina mĂ€lestada lĂ€bi mkswap ja aktiveerida lĂ€bi swapon.

Autor rĂ”hutab, et selline lĂ€henemine on valitud NVIDIA tarbija graafikakaartide piirangute tĂ”ttu. Otsene tee NVIDIA P2P API kaudu GeForce'ile, tema sĂ”nul, takerduks EINVAL-ile, kuna vastavad omadused on tegelikult saadaval ainult professionaalsetele ja serveri mudelitele. Otsene suhtlemine BAR1-ga ei toimi ka: saadaval on vaid vĂ€ike kaart, samas kui ĂŒlejÀÀnud osa lugemine tagastab nullid. NBD-lĂ€henemine ĂŒletab selle piirangu, kuna kasutab tavalisi CUDA-kopimisi cuMemcpyHtoD ja cuMemcpyDtoH.

VÔimalused

  • VRAMi kasutamine kui tavaline Linuxi swap. PĂ€rast kĂ€ivitamist annab deemon graafikamuistest kui /dev/nbd0 vĂ”i muu NBD-seade, mis tuuma jaoks nĂ€eb vĂ€lja nagu tavaline plokk-seade.

  • Töötamine ilma oma kernelimoodulita. Projekt ei nĂ”ua eraldi kernelimooduli kirjutamist, koostamist ja hooldamist, ei kasuta NVIDIA-draiveri sisemisi sĂŒmboleid ja peaks taluma tuuma ja draiveri uuendusi ilma uuesti koostamiseta.

  • Suunitlus tarbija NVIDIA GPU-dele. NĂ”uetes on vĂ€lja toodud NVIDIA GPU-d, mis toetavad CUDA-d, sealhulgas tarbija RTX/GTX kaardid, ametlik NVIDIA draiver koos libcuda.so.1, Linuxi tuuma nbd moodul, nbd-client, gcc ja make. CUDA Toolkit ei ole sel juhul vajalik.

  • systemd-integratsioon. Paigaldamine lĂ€bi install.sh lisab teenuse vram-swap-nbd, mida saab kĂ€ivitada lĂ€bi systemctl; pĂ€rast paigaldamist aktiveeritakse teenus automaatseks kĂ€ivitamiseks kĂ€ivitamisel.

  • Swap suuruse ja prioriteedi seadistamine. systemd-unit'is saab mÀÀrata VRAM_SETUP_SIZE_MB, mis on mÀÀratud eraldatud VRAMi ĂŒlemiseks piiriks, ja VRAM_SWAP_PRIORITY, mis on swap-seadme prioriteet. Mida kĂ”rgem on prioriteet, seda varem Linux seda swap-kihti kasutab.

  • Automaatne nĂ”utud suuruse vĂ€hendamine. Kui nĂ”utav VRAM maht ei ole saadaval, ĂŒritab deemon suurust vĂ€hendada 512 MiB blokina, et ikkagi eraldada saadaval maht, nĂ€iteks kui osa mĂ€lu on juba hĂ”ivatud komposiitoriga vĂ”i graafilise sessiooniga.

  • Kontrollskriptid. Kataloogis on test-nbd.sh smoki-testimiseks, kirjutades/ lugedes 1 MiB ja test-fill.sh kogu VRAM-osa koormustestmiseks.

  • Teatatud jĂ”udlus umbes 1,3 GB/s. RTX 3070 Laptop-l mÔÔtis autor jĂ€rjestikuse kirjutamise 7 GB suurustes blokides 4 MB umbes 1,3 GB/s tasemel.

Rakendusskenaarid

SĂŒlearvutid, millel on joodetud RAM. Peamine stsenaarium on kaasaegsed sĂŒlearvutid, kus 16 vĂ”i 32 GB operatiivmĂ€lu on juba liiga vĂ€he, kuid seda ei saa laiendada. Kui sellises seadmes on eraldi RTX-kaart, saab osa VRAMist kasutada lisanduvaks swap-kihtiks. See ei muuda VRAMi tĂ€ieĂ”iguslikuks RAM-iks, kuid vĂ”ib pÀÀsta sĂŒsteemi jĂ€rsust aeglasemasse SSD swapi minemisest vĂ”i OOM-tapjast tipnĂ”udluse korral.

Arendaja raske töökeskkond. IDE, brauser kĂŒmnete vahelehtedega, Docker-konteinerid, kohalikud andmebaasid, suurte projektide koostamine ja testkeskkonnad loovad kergesti lĂŒhiajalisi mĂ€lu tarbimise tippusid. Sellises stsenaariumis vĂ”ib NBD-VRAM toimida puhvrina: ei kiirenda tavapĂ€rast tööd, vaid leevendab hetke, kui RAM lĂ”peb.

SSD swapi koormuse vĂ€hendamine. Kui SSD swap on sageli kasutuses, ei ole see mitte ainult aeglasem, vaid loob ka liigset kirjutamist salvestusseadmest. VRAM-swap'i vĂ”ib seadistada kĂ”rgema prioriteediga, et RAM-i ĂŒlevoolu korral sĂŒsteem esiteks nihutaks lehti graafikamuistesse ja alles seejĂ€rel pöörduda SSD poole. See on eriti aktuaalne sĂŒlearvutite puhul, kus SSD on ka sageli eemaldamatu vĂ”i kallis vahetada.

Zrami kombinatsioon. Autor kirjeldab selgelt skeemi, kus VRAM-i swap saab kĂ”rgemat prioriteeti ja aktsepteerib esimese „mĂ€lu ĂŒleujutuse”, zram kasutatakse jĂ€rgmise astmena ning SSD jÀÀb viimaseks kaitseliiniks. Selline skeem vĂ”ib olla kasulik tööjaamade ja sĂŒlearvutite jaoks, kus on tĂ€htsam sĂ€ilitada sĂŒsteemi reageerimisvĂ”ime mĂ€lu nappuse korral kui saavutada maksimaalne viivituste prognoositavus.

Kohalikud AI/LLM-ĂŒlesanded GPU ĂŒmber, kuid mitte VRAM-i mudeli asemel. NBD-VRAM ei suurenda videomĂ€lu, mis on saadaval CUDA-rakendusele nagu VRAM mudeli jaoks. See on vastupidine stsenaarium: mitte RAM-i kasutatakse VRAM-ina, vaid VRAM-i kasutatakse Linuxi tavalise mĂ€lu swapina. SeetĂ”ttu ei vĂ”imalda projekt otse laadida GPU-sse suuremat mudelit. Kuid see vĂ”ib olla kasulik masinal, kus koos LLM-i jĂ€reldusprotsessiga töötavad brauserid, IDE-d, indekseerijad, Python-keskkonnad ja konteinerid, ning sĂŒsteemi RAM hakkab otsa saama.

Kodus ja eksperimentaalsetes tööjaamades. Projekt on huvitav kasutajatele, kelle graafikakaart jÀÀb sageli tĂŒhjaks vĂ€ljaspool mĂ€nge, renderdamist vĂ”i ML-ĂŒlesandeid. NĂ€iteks 8–12 GB VRAM-i desktopi GeForce'i saab ajutiselt muuta tĂ€iendavaks swap-kihiks raskete kompileerimise, andmete töötlemise vĂ”i kĂ€itamise ĂŒlesannete jaoks. virtuaalmasinad.

Piirangud

NBD-VRAM ei ole operatiivmĂ€lu asendamine. Juhtimine sellesse swap-i toimub kettina kernel swap → /dev/nbdX → nbd-draiver → Unix-soket → demon → CUDA-kopeerimine → VRAM, seega viivitused ja kĂ€itumine on erinevad kui tĂ”elisel RAM-il. See on pigem hĂ€daolukorra vĂ”i vahekiht RAM-i ja SSD vahel kui viis „mĂ€lu lisamiseks” ilma tagajĂ€rgedeta.

Samuti on projekt seotud ametliku NVIDIA ja CUDA-stekiga. Nouveau/Nova ei sobi selleks, kuna nÔutakse libcuda.so.1. Phoronix mÀrgib samuti, et NBD-VRAM on loodud just tarbijate NVIDIA GPU-de jaoks, kus alternatiivsed lÀhenemisviisid lÀbi NVIDIA P2P API ei toimi.

KokkuvĂ”ttes on NBD-VRAM vĂ€ike, kuid huvitav sĂŒsteemi hĂ€kk Linuxile: see ei tee imesid ega asenda RAM-i uuendamist, kuid vĂ”imaldab kasutada tĂŒhjaks jÀÀvat videomĂ€lu tĂ€iendava swap-etapis enne SSD-d. SĂŒlearvutite jaoks, kus mĂ€lu on keevitatud ja kus on diskreetne RTX-kaart, vĂ”ib see olla praktiline viis pĂŒsida tipukoormuste ajal ilma rakenduste kohese kokkuvarisemise vĂ”i valuliku aeglase salvestusse minekuta.

Allikas: linux.org.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster