Zverejnené NBD-VRAM

Zverejnený otvorený projekt NBD-VRAM, ktorý umožňuje využiť časť video pamäte GPU NVIDIA ako swap priestor v Linuxe. Projekt je orientovaný predovšetkým na notebooky s popálenou operačnou pamäťou, kde RAM nemožno rozšíriť, ale v systéme je diskrétna grafická karta NVIDIA RTX/GTX s nevyužitou VRAM. Kód je napísaný v jazyku C a shell a zverejňuje sa pod licenciou MIT.

Myšlienka NBD-VRAM je jednoduchá: ak systém už začína prechádzať na swap na SSD, môžete pred SSD umiestniť ešte jednu medzivrstvu — video pamäť. Autor uvádza príklad s notebookom na RTX 3070 Laptop: z 8 GB VRAM bolo vyčlenených 7 GB pod swap, a celkovo s RAM, zram a SSD swap získal systém asi 46 GB adresovateľnej pamäte. Predpokladaný poriadok preplnenia je takýto: najprv sa používa RAM, potom VRAM ako rýchly swap, následne zram a až potom SSD.

Technicky NBD-VRAM nepridáva nový ovládač jadra. Malý démon vyčleňuje pamäť grafickej karty cez CUDA Driver API, potom ju odovzdáva jadru Linux ako blokové zariadenie cez NBD — Network Block Device — nad Unix socketom. Po pripojení štandardným nbd-client sa v systéme objaví /dev/nbdX, ktoré je možné naformátovať ako obyčajný swap cez mkswap a aktivovať cez swapon.

Autor osobitne zdôrazňuje, že takýto prístup je zvolený kvôli obmedzeniam spotrebiteľských grafických kariet NVIDIA. Priamejšia cesta cez NVIDIA P2P API na GeForce, podľa neho, naráža na EINVAL, pretože príslušné možnosti sú v skutočnosti dostupné iba pre profesionálne a serverové modely. Varianta s priamym prístupom k BAR1 tiež nefungovala: dostupná je iba malá mapovaná oblasť, a čítanie z ostatnej časti vracia nuly. NBD prístup obchádza toto obmedzenie, pretože používa obyčajné CUDA kopírovanie cuMemcpyHtoD a cuMemcpyDtoH.

Možnosti

  • Využitie VRAM ako obyčajného Linux swapu. Po spustení démon poskytuje video pamäť ako /dev/nbd0 alebo iné NBD zariadenie, ktoré pre jadro vyzerá ako štandardné blokové zariadenie.

  • Prevádzka bez vlastného jadrového modulu. Projekt nevyžaduje písať, kompilovať a udržiavať samostatný kernel module, nepoužíva interné symboly ovládača NVIDIA a mal by prežiť aktualizácie jadra a ovládača bez prekompilácie.

  • Orientácia na spotrebiteľské NVIDIA GPU. Požiadavky zahŕňajú NVIDIA GPU s podporou CUDA, vrátane spotrebiteľských RTX/GTX kariet, oficiálny NVIDIA ovládač s libcuda.so.1, modul nbd v jadre Linuxu, nbd-client, gcc a make. CUDA Toolkit nie je potrebný.

  • integrácia systemd. Inštalácia cez install.sh pridáva službu vram-swap-nbd, ktorú je možné spustiť cez systemctl; po inštalácii je služba aktivovaná na automatické spustenie pri zavádzaní.

  • Nastavenie veľkosti a priority swap. V systemd-unit je možné nastaviť VRAM_SETUP_SIZE_MB, teda horný limit prideleného VRAM, a VRAM_SWAP_PRIORITY, teda prioritu swap zariadenia. Čím vyššia priorita, tým skôr Linux použije túto swap vrstvu.

  • Automatické zníženie požadovanej veľkosti. Ak požadovaný objem VRAM nie je k dispozícii, démon sa snaží znižovať veľkosť blokmi po 512 MiB, aby aj tak pridelil dostupný objem, napríklad ak je časť pamäte už obsadená compositorom alebo grafickou reláciou.

  • Testovacie skripty. V repozitári je test-nbd.sh na smoketest s čítaním/zapisovaním 1 MiB a test-fill.sh na stresový test celého VRAM oddielu.

  • Vyhlásený výkon približne 1,3 GB/s. Na RTX 3070 Laptop autor nameral sekvenčný zápis 7 GB blokmi po 4 MB približne na úrovni 1,3 GB/s.

Scenáre použitia

Notebooky s pripájkovanou RAM. Hlavný scenár — moderné notebooky, kde 16 alebo 32 GB RAM už nestačí, ale nie je možné ju rozšíriť. Ak má takýto stroj diskrétnu RTX kartu, časť VRAM sa dá použiť ako dodatočná swap vrstva. To nepremení VRAM na plnohodnotnú RAM, ale môže zachrániť systém pred ostrým prechodom do pomalého SSD swapu alebo pred OOM-killerom pri špičkových záťažiach.

Těžké pracovné prostredia vývojára. IDE, prehliadač s desiatkami kariet, Docker kontajnery, lokálne databázy, zostavy veľkých projektov a testovacie prostredia ľahko vytvárajú krátkodobé vrcholy spotreby pamäte. V takomto scenári môže NBD-VRAM pracovať ako buffer: nezrýchliť bežnú prácu, ale zmierniť moment, keď RAM došla.

Zníženie záťaže na SSD swap. Ak sa swap na SSD používa často, je to nielen pomalšie, ale aj spôsobuje zbytočné zapisovanie na úložisko. VRAM-swap môže byť nastavený s vyššou prioritou, aby pri preplnení RAM systém najprv uvoľňoval stránky do videopamäte a až potom sa obracal na SSD. To je obzvlášť relevantné pre notebooky, kde je SSD často tiež neodnímateľný alebo ťažko vymeniteľný.

Kombinácia s zram. Autor presne popisuje schému, kde VRAM swap dostáva vyššiu prioritu a prijíma prvý "prepad" pamäte, zram sa používa na nasledujúcej úrovni a SSD zostáva poslednou líniou obrany. Táto schéma môže byť užitočná pre pracovné stanice a notebooky, kde je dôležitejšie zachovať responzivitu systému pri nedostatku pamäte ako dosiahnuť maximálnu predvídateľnosť latencií.

Lokálne úlohy AI/LLM okolo GPU, ale nie namiesto VRAM pre model. NBD-VRAM nezvyšuje veľkosť videopamäte dostupnej CUDA-aplikácii ako VRAM pre model. To je opačný scenár: nie RAM sa používa ako VRAM, ale VRAM sa používa ako swap pre bežnú pamäť Linuxu. Preto projekt neumožní priamo načítať do GPU model väčšej veľkosti. Môže však byť užitočný na stroji, kde vedľa LLM-inferencie pracujú prehliadač, IDE, indexátory, Python-prostredia a kontajnery a systémová RAM sa začína míňať.

Domáce a experimentálne pracovné stanice. Projekt je zaujímavý pre používateľov, ktorých grafická karta často idle mimo hier, renderovania alebo ML-úloh. Napríklad, 8–12 GB VRAM na desktopovej GeForce môže dočasne premeniť na ďalšiu vrstvu swap pre náročné úlohy kompilácie, spracovania údajov alebo spúšťania. virtuálních strojů.

Obmedzenia

NBD-VRAM nie je náhradou za operačnú pamäť. Prístup k tomuto swapu prebieha cez reťazec kernel swap → /dev/nbdX → nbd-ov ovládač → Unix-socket → démon → CUDA-kopírovanie → VRAM, a preto latencie a správanie budú odlišné od skutočnej RAM. Skôr ide o núdzovú alebo prechodnú vrstvu medzi RAM a SSD, než spôsob "pridať pamäť" bez následkov.

Projekt je tiež viazaný na oficiálny stack NVIDIA s CUDA. Nouveau/Nova na to nie sú vhodné, pretože vyžaduje libcuda.so.1. Phoronix tiež uvádza, že NBD-VRAM bol vytvorený práve pre spotrebiteľské NVIDIA GPU, kde alternatívne prístupy cez NVIDIA P2P API nefungujú.

V suchom zostatku, NBD-VRAM je malý, ale zaujímavý systémový hack pre Linux: nerobí zázraky a nenahrádza upgrade RAM, ale umožňuje využiť nečinnú grafickú pamäť ako ďalšiu úroveň swap pred SSD. Pre notebooky s integrovanou pamäťou a diskrétnou RTX kartou to môže byť praktický spôsob, ako prežiť vrcholové zaťaženia bez okamžitého pádu aplikácií alebo bolestivého prechodu na pomalý disk.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster