NBD-VRAM është publikuar

Projekt publik është hapur NBD-VRAM, duke lejuar përdorimin e një pjese të memories video të NVIDIA GPU si hapësirë swap në Linux. Projekti është fokusuar kryesisht në laptopët me RAM të salduar, ku RAM nuk mund të zgjerohet, por në sistem ka një kartë grafike diskrete NVIDIA RTX/GTX me VRAM të papërdorur. Kodi është shkruar në C dhe shell, shpërndahet nën licencën MIT.

Ideja e NBD-VRAM Ă«shtĂ« e thjeshtĂ«: nĂ«se sistemi fillon tĂ« kalojĂ« nĂ« swap nĂ« SSD, mund tĂ« vendosĂ«sh para SSD njĂ« shtresĂ« ndĂ«rmjetĂ«se — memories video. Autori jep shembullin me njĂ« laptop nĂ« RTX 3070 Laptop: nga 8 GB VRAM, 7 GB janĂ« dedikuar pĂ«r swap, dhe sĂ« bashku me RAM, zram dhe SSD swap, sistemi ka marrĂ« rreth 46 GB memorie tĂ« adresueshme. Rendi i parashikuar i mbipopullimit Ă«shtĂ« i tillĂ«: fillimisht pĂ«rdoret RAM, pastaj VRAM si swap i shpejtĂ«, pastaj zram, dhe vetĂ«m pas kĂ«saj SSD.

Teknikisht, NBD-VRAM nuk shton njĂ« drejtuese tĂ« re nĂ« bĂ«rthamĂ«. NjĂ« demon i vogĂ«l dedikon memorjen e kartĂ«s grafike pĂ«rmes CUDA Driver API, pastaj e kthen nĂ« bĂ«rthamĂ«n Linux si njĂ« pajisje blloku pĂ«rmes NBD — Pajisja Blloku Rrjeti — mbi Unix-soket. Pas lidhjes, nbd-client standard nĂ« sistem krijon njĂ« /dev/nbdX, tĂ« cilin mund tĂ« pĂ«rshkruash si swap tĂ« zakonshĂ«m pĂ«rmes mkswap dhe ta aktivizosh pĂ«rmes swapon.

Autori thekson veçanërisht se ky qasje është zgjedhur për shkak të kufizimeve të kartave grafike NVIDIA për konsumatorët. Një rrugë më e drejtpërdrejtë përmes NVIDIA P2P API në GeForce, sipas tij, bllokohet nga EINVAL, pasi mundësitë përkatëse janë në fakt të disponueshme vetëm për modelet profesionale dhe serverike. Një opsion me qasje të drejtpërdrejtë në BAR1 gjithashtu nuk funksionoi: vetëm një zonë e vogël e shfaqur është e disponueshme, dhe leximi nga pjesa tjetër kthen zero. Qasja NBD e shmang këtë kufizim, pasi përdor kopjime të zakonshme CUDA cuMemcpyHtoD dhe cuMemcpyDtoH.

Mundësitë

  • PĂ«rdorimi i VRAM si swap i zakonshĂ«m nĂ« Linux. Pas aktivizimit, demoni ofron memorjen video si /dev/nbd0 ose njĂ« tjetĂ«r pajisje NBD, qĂ« pĂ«r bĂ«rthamĂ«n duket si njĂ« pajisje blloku standarde.

  • Puna pa modul tĂ« vetin nĂ« bĂ«rthamĂ«. Projekti nuk kĂ«rkon tĂ« shkruash, mbledhĂ«sh dhe mbĂ«shtetĂ«sh njĂ« modul tĂ« veçantĂ« kernel, nuk pĂ«rdor simbole tĂ« brendshme tĂ« drejtueseve NVIDIA dhe duhet tĂ« pĂ«rballojĂ« pĂ«rditĂ«simet e bĂ«rthamĂ«s dhe tĂ« drejtuesve pa ri-konstruksion.

  • Orientimi ndaj GPU-ve NVIDIA pĂ«r konsumatorĂ«t. KĂ«rkesat pĂ«rfshijnĂ« GPU NVIDIA me mbĂ«shtetje pĂ«r CUDA, duke pĂ«rfshirĂ« kartat RTX/GTX tĂ« konsumatorĂ«ve, drejtuesin zyrtar NVIDIA me libcuda.so.1, modul nbd nĂ« bĂ«rthamĂ«n Linux, nbd-client, gcc dhe make. Toolkit-i CUDA nuk Ă«shtĂ« i nevojshĂ«m.

  • Integrimi me systemd. Instalimi pĂ«rmes install.sh shton shĂ«rbimin vram-swap-nbd, i cili mund tĂ« nisĂ« pĂ«rmes systemctl; pas instalimit, shĂ«rbimi aktivizohet pĂ«r nisje automatike gjatĂ« ngarkesĂ«s.

  • Konfigurimi i madhĂ«sisĂ« dhe prioritetit tĂ« swap. NĂ« unit-in e systemd, mund tĂ« pĂ«rcaktohet VRAM_SETUP_SIZE_MB, qĂ« do tĂ« thotĂ« kufiri i sipĂ«rm pĂ«r alokimin e VRAM, dhe VRAM_SWAP_PRIORITY, qĂ« do tĂ« thotĂ« prioriteti i pajisjes swap. Sa mĂ« i lartĂ« tĂ« jetĂ« prioriteti, aq mĂ« shpejt Linux do tĂ« pĂ«rdorĂ« kĂ«tĂ« shtresĂ« swap.

  • Reducimi automatik i madhĂ«sisĂ« sĂ« kĂ«rkuar. NĂ«se sasia e kĂ«rkuar e VRAM nuk Ă«shtĂ« e disponueshme, demon-i pĂ«rpiqet tĂ« reduktojĂ« madhĂ«sinĂ« me blloqe prej 512 MiB, pĂ«r tĂ« alokuar njĂ« sasi tĂ« mundshme, pĂ«r shembull, nĂ«se njĂ« pjesĂ« e memories Ă«shtĂ« e zĂ«nĂ« nga kompozitori ose njĂ« seancĂ« grafike.

  • SkenarĂ«t e provĂ«s. NĂ« repositor Ă«shtĂ« test-nbd.sh pĂ«r njĂ« test tĂ« thjeshtĂ« me shkrim/lexim 1 MiB dhe test-fill.sh pĂ«r njĂ« test stresi tĂ« tĂ«rĂ« seksionit VRAM.

  • Performanca e shpallur Ă«shtĂ« rreth 1,3 GB/s. NĂ« RTX 3070 Laptop, autori mat njĂ« shkrim tĂ« vazhdueshĂ«m 7 GB me blloqe prej 4 MB rreth nivelit 1,3 GB/s.

Skenarët e aplikimit

Laptopët me RAM të integruar. Skenari kryesor është laptopët modernë, ku 16 ose 32 GB RAM nuk janë të mjaftueshme, por zgjerimi i saj nuk është i mundur. Nëse një makinë e tillë ka një kartë RTX diskrete, një pjesë e VRAM mund të përdoret si një shtresë shtesë swap. Kjo nuk e kthen VRAM në RAM të plotë, por mund të shpëtojë sistemin nga një kalim të papritur në një swap të ngadalshëm SSD ose nga OOM-killer gjatë ngarkesave maksimale.

Mjedise të rënda pune për zhvillues. IDE, shfletues me dhjetëra skeda, konteinerë Docker, bazat e të dhënave lokale, ndërtimet e projekteve të mëdha dhe mjediset e testimit lehtësisht krijojnë majat momentale në përdorimin e memories. Në këtë skenar, NBD-VRAM mund të funksionojë si një tampon: nuk e përshpejton punën e zakonshme, por zbut momentin kur RAM-i e përfundon.

Reduktimi i ngarkesës në SSD swap. Nëse swap në SSD përdoret shpesh, kjo jo vetëm që është më e ngadalshme, por gjithashtu krijon shkresa të panevojshme në ruajtës. VRAM-swap mund të vendoset me një prioritet më të lartë, në mënyrë që kur RAM-i mbushet, sistemi të evakuarojë menjëherë faqet në memorjen video dhe pastaj të kthehet te SSD. Kjo është veçanërisht e rëndësishme për laptopët, ku SSD shpesh është i pamundur për t'u shkëputur ose i kushtueshëm për t'u ndërruar.

Kombinimi me zram. Autori pĂ«rshkruan qartĂ« njĂ« skemĂ« ku VRAM swap merr prioritet mĂ« tĂ« lartĂ« dhe merr „rrjedhĂ«n” e parĂ« tĂ« memories, zram pĂ«rdoret si shtresa e ardhshme, ndĂ«rsa SSD mbetet linja e fundit e mbrojtjes. NjĂ« skemĂ« e tillĂ« mund tĂ« jetĂ« e dobishme pĂ«r stacionet e punĂ«s dhe laptopĂ«t, ku Ă«shtĂ« mĂ« e rĂ«ndĂ«sishme tĂ« ruhet reagimi i sistemit nĂ« rast mungese tĂ« memories, sesa tĂ« merret maksimumi i parashikueshmĂ«risĂ« sĂ« vonesave.

Detyrat lokale AI/LLM rreth GPU-së, por jo në vend të VRAM për modelin. NBD-VRAM nuk rrit memorjen video të disponueshme për aplikacionin CUDA si VRAM për modelin. Kjo është një skenar i kundërt: jo RAM-i përdoret si VRAM, por VRAM përdoret si swap për memorjen e zakonshme të Linux. Prandaj, projekti nuk do të lejojë ngarkimin e drejtpërdrejtë në GPU të një modeli më të madh. Por ai mund të jetë i dobishëm në një makinë, ku përveç LLM-inference punojnë shfletuesit, IDE, indeksuesit, ambientet Python dhe kontejnerët, ndërsa RAM-i sistemik fillon të mbarojë.

Stacionet e punĂ«s shtĂ«piake dhe eksperimantale. Projekti Ă«shtĂ« interesant pĂ«r pĂ«rdoruesit, ku karta grafike shpesh Ă«shtĂ« e papĂ«rdorur jashtĂ« lojĂ«rave, renderimit ose detyrave ML. PĂ«r shembull, 8–12 GB VRAM nĂ« njĂ« GeForce desktop mund tĂ« shndĂ«rrohet pĂ«rkohĂ«sisht nĂ« njĂ« shtresĂ« shtesĂ« swap pĂ«r detyra tĂ« rĂ«nda tĂ« kompilimit, pĂ«rpunimit tĂ« tĂ« dhĂ«nave ose ekzekutimit. makinave virtuale.

Kufizimet

NBD-VRAM nuk Ă«shtĂ« njĂ« zĂ«vendĂ«sim pĂ«r memorjen e pĂ«rkohshme. Qasja nĂ« kĂ«tĂ« swap ndodhet nĂ« zinxhirin kernel swap → /dev/nbdX → nbd-drajver → Unix-socket → demon → CUDA-transfer → VRAM, prandaj vonesat dhe sjellja do tĂ« jenĂ« tĂ« ndryshme nga RAM-i i vĂ«rtetĂ«. Ky Ă«shtĂ« mĂ« shumĂ« njĂ« shtresĂ« emergjente ose ndĂ«rmjetĂ«se midis RAM dhe SSD-sĂ«, sesa njĂ« mĂ«nyrĂ« pĂ«r "tĂ« shtuar memorien" pa pasoja.

Projektin gjithashtu e lidh me stekën zyrtare të NVIDIA me CUDA. Nouveau/Nova nuk janë të përshtatshme për këtë, pasi kërkohet libcuda.so.1. Phoronix gjithashtu vëren, që NBD-VRAM është krijuar pikërisht për GPU-të konsumatorëve të NVIDIA, ku qasjet alternative përmes NVIDIA P2P API nuk funksionojnë.

Në përfundim, NBD-VRAM është një hije e vogël, por interesante sistematike për Linux: ai nuk bën mrekullira dhe nuk e zëvendëson përmirësimin e RAM-it, por lejon përdorimin e memorizimit grafik që është në pritje si një shkallë shtesë swap përpara SSD-së. Për laptopët me memorie të salduar dhe karta discreate RTX, kjo mund të jetë një mënyrë praktike për të përballuar ngarkesat maksimale pa rënie të menjëhershme të aplikacioneve ose kalim të dhimbshëm në një ruajtës të ngadalshëm.

Burimi: linux.org.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster