{"id":181858,"date":"2026-06-02T14:48:21","date_gmt":"2026-06-02T12:48:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/opublikovan-nbd-vram"},"modified":"2026-06-02T14:48:21","modified_gmt":"2026-06-02T12:48:22","slug":"opublikovan-nbd-vram","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/opublikovan-nbd-vram","title":{"rendered":"NBD-VRAM er offentliggjort","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Offentliggjort \u00e5bent projekt <strong>NBD-VRAM<\/strong>, som g\u00f8r det muligt at bruge en del af NVIDIA GPU's videohukommelse som swap-plads i Linux. Projektet er prim\u00e6rt rettet mod b\u00e6rbare computere med loddet RAM, hvor RAM ikke kan udvides, men hvor der er et diskret NVIDIA RTX\/GTX grafikkort med ubrugt VRAM. Koden er skrevet i C og shell, og distribueres under en licens <strong>MIT<\/strong>.<\/p>\n<p>Id\u00e9en bag NBD-VRAM er enkel: hvis systemet allerede begynder at g\u00e5 over i swap p\u00e5 SSD, kan man inds\u00e6tte et ekstra lag foran SSD'en - videohukommelsen. Forfatteren giver et eksempel med en b\u00e6rbar computer med <strong>RTX 3070 Laptop<\/strong>: af de 8 GB VRAM blev der tildelt 7 GB til swap, og samlet set med RAM, zram og SSD swap fik systemet omkring 46 GB adresserbar hukommelse. Den foresl\u00e5ede r\u00e6kkef\u00f8lge for overbelastning er: f\u00f8rst bruges RAM, derefter VRAM som hurtig swap, derefter zram, og f\u00f8rst derefter SSD.<\/p>\n<p>Teknisk set tilf\u00f8jer NBD-VRAM ikke en ny kerndrivere. En lille daemon tildeler hukommelse fra grafikkortet via <strong>CUDA Driver API<\/strong>, og giver derefter denne hukommelse til Linux-kernen som et blokniveau enhed via <strong>NBD<\/strong> \u2014 Network Block Device \u2014 oven p\u00e5 en Unix-socket. Efter tilslutning vises \/dev\/nbdX i systemet, som kan partitioneres som et almindeligt swap via mkswap og aktiveres med swapon.<\/p>\n<p>Forfatteren understreger, at denne tilgang er valgt p\u00e5 grund af begr\u00e6nsningerne ved forbruger NVIDIA grafikkort. En mere direkte vej gennem NVIDIA P2P API p\u00e5 GeForce, if\u00f8lge ham, st\u00f8der p\u00e5 EINVAL, da de relevante funktioner praktisk talt kun er tilg\u00e6ngelige for professionelle og servermodeller. Muligheden for direkte adgang til BAR1 virkede heller ikke: kun et lille kortlagt omr\u00e5de er tilg\u00e6ngeligt, og l\u00e6sning fra den resterende del returnerer nuller. NBD-tilgangen omg\u00e5r denne begr\u00e6nsning, da den bruger normale CUDA-kopieringsmetoder cuMemcpyHtoD og cuMemcpyDtoH.<\/p>\n<h2>Muligheder<\/h2>\n<ul>\n<li>\n<p><strong>Brug af VRAM som almindelig Linux swap.<\/strong> Efter opstarten stiller daemonen videohukommelsen til r\u00e5dighed som \/dev\/nbd0 eller en anden NBD-enhed, som for kernen ser ud som en standard blok enhed.<\/p>\n<\/li>\n<li>\n<p><strong>Arbejde uden egen kerndrivere.<\/strong> Projektet kr\u00e6ver ikke at skrive, kompilere og vedligeholde en separat kerndriver, bruger ikke interne symboler fra NVIDIA-driveren og skal kunne klare kernel- og driveropdateringer uden rekonstruktion.<\/p>\n<\/li>\n<li>\n<p><strong>Fokus p\u00e5 forbruger NVIDIA GPU.<\/strong> Kravene n\u00e6vner NVIDIA GPU'er med CUDA-underst\u00f8ttelse, herunder forbruger RTX\/GTX-kort, den officielle NVIDIA-driver med libcuda.so.1, nbd-modulet i Linux-kernen, nbd-client, gcc og make. CUDA Toolkit er ikke n\u00f8dvendigt.<\/p>\n<\/li>\n<li>\n<p><strong>systemd-integration.<\/strong> Installationen via install.sh tilf\u00f8jer tjenesten vram-swap-nbd, som kan startes via systemctl; efter installationen aktiveres tjenesten for automatisk opstart ved boot.<\/p>\n<\/li>\n<li>\n<p><strong>Konfiguration af swap-st\u00f8rrelse og prioritet.<\/strong> I systemd-enheden kan du angive VRAM_SETUP_SIZE_MB, hvilket er den \u00f8vre gr\u00e6nse for tildelt VRAM, og VRAM_SWAP_PRIORITY, hvilket er prioriteten for swap-enheden. Jo h\u00f8jere prioritet, desto tidligere vil Linux bruge dette swap-lag.<\/p>\n<\/li>\n<li>\n<p><strong>Automatisk reduktion af den anmodede st\u00f8rrelse.<\/strong> Hvis den kr\u00e6vede m\u00e6ngde VRAM ikke er tilg\u00e6ngelig, fors\u00f8ger d\u00e6monen at reducere st\u00f8rrelsen med blokke p\u00e5 512 MiB for stadig at allokere den tilg\u00e6ngelige m\u00e6ngde, eksempelvis hvis en del af hukommelsen allerede er optaget af en compositor eller grafisk session.<\/p>\n<\/li>\n<li>\n<p><strong>Testscenarier.<\/strong> I repository'et findes der test-nbd.sh til rygepr\u00f8ve med skrivning\/l\u00e6sning af 1 MiB og test-fill.sh til stresstest af hele VRAM-partitionen.<\/p>\n<\/li>\n<li>\n<p><strong>Den angivne ydeevne er omkring 1,3 GB\/s.<\/strong> P\u00e5 RTX 3070 Laptop m\u00e5lte forfatteren sekventiel skrivning med 7 GB blokke p\u00e5 4 MB p\u00e5 omtrent 1,3 GB\/s.<\/p>\n<\/li>\n<\/ul>\n<h2>Anvendelsesscenarier<\/h2>\n<p><strong>Laptops med loddet RAM.<\/strong> Hovedscenariet er moderne laptops, hvor 16 eller 32 GB RAM allerede er utilstr\u00e6kkeligt, men hvor det ikke er muligt at udvide. Hvis en s\u00e5dan maskine har et diskret RTX-kort, kan en del af VRAM bruges som et ekstra swap-lag. Dette g\u00f8r ikke VRAM til fuldgyldig RAM, men det kan redde systemet fra pludselig at skifte til langsom SSD swap eller fra OOM-killer ved spidsbelastninger.<\/p>\n<p><strong>Tunge udviklingsmilj\u00f8er.<\/strong> IDE, browser med dusinvis af faner, Docker-containere, lokale databaser, bygninger af store projekter og testmilj\u00f8er skaber nemt kortvarige spidser i hukommelsesforbruget. I et s\u00e5dant scenarie kan NBD-VRAM fungere som buffer: ikke for at accelerere den almindelige drift, men for at afhj\u00e6lpe det \u00f8jeblik, hvor RAM l\u00f8ber t\u00f8r.<\/p>\n<p><strong>Reducering af belastningen p\u00e5 SSD swap.<\/strong> Hvis swap p\u00e5 SSD bruges ofte, er det ikke kun langsommere, men det skaber ogs\u00e5 un\u00f8dig skrivning p\u00e5 lagermediet. VRAM-swap kan tildeles h\u00f8jere prioritet, s\u00e5 systemet f\u00f8rst frigiver sider til videohukommelsen ved RAM-overbelastning, f\u00f8r det henvender sig til SSD. Dette er is\u00e6r relevant for b\u00e6rbare computere, hvor SSD ofte ogs\u00e5 er sv\u00e6rt at udskifte eller dyrt.<\/p>\n<p><strong>Kombination med zram.<\/strong> Forfatteren beskriver direkte et skema, hvor VRAM-swap f\u00e5r h\u00f8jere prioritet og tager det f\u00f8rste 'spil' af hukommelsen, zram bruges som det n\u00e6ste niveau, og SSD forbliver sidste forsvarslinje. Dette skema kan v\u00e6re nyttigt for arbejdsstationer og b\u00e6rbare computere, hvor det er vigtigere at bevare systemets responsivitet ved hukommelsesmangel end at opn\u00e5 maksimal forudsigelighed af forsinkelse.<\/p>\n<p><strong>Lokale AI\/LLM-opgaver omkring GPU, men ikke i stedet for VRAM til modellen.<\/strong> NBD-VRAM \u00f8ger ikke videohukommelsen tilg\u00e6ngelig for CUDA-applikationen som VRAM til modellen. Det er det modsatte scenarie: ikke RAM bruges som VRAM, men VRAM bruges som swap til almindelig Linux-hukommelse. Derfor tillader projektet ikke direkte at indl\u00e6se en st\u00f8rre model i GPU. Men det kan v\u00e6re nyttigt p\u00e5 en maskine, hvor browser, IDE, indekseringsv\u00e6rkt\u00f8jer, Python-milj\u00f8er og containere arbejder sammen med LLM-inferens, og systemets RAM begynder at l\u00f8be t\u00f8r.<\/p>\n<p><strong>Hjemme- og eksperimentelle arbejdsstationer.<\/strong> Projektet er interessant for brugere, hvis grafikkort ofte st\u00e5r stille uden for spil, rendering eller ML-opgaver. For eksempel kan 8-12 GB VRAM p\u00e5 en desktop GeForce midlertidigt blive til et ekstra lag swap til tunge opgaver som kompilering, databehandling eller k\u00f8rsel. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/vps\/\" title=\"virtual machines\" data-wpil-keyword-link=\"linked\">virtual machines<\/a>.<\/p>\n<h2>Begr\u00e6nsninger<\/h2>\n<p>NBD-VRAM er ikke en erstatning for RAM. Adgangen til s\u00e5dan swap sker gennem k\u00e6den kernel swap \u2192 \/dev\/nbdX \u2192 nbd-driver \u2192 Unix-socket \u2192 daemon \u2192 CUDA-kopiering \u2192 VRAM, s\u00e5 forsinkelserne og adf\u00e6rden vil v\u00e6re forskellige fra \u00e6gte RAM. Det er snarere et n\u00f8d- eller mellemlag mellem RAM og SSD, end en m\u00e5de at 'tilf\u00f8je hukommelse' uden konsekvenser.<\/p>\n<p>Projektet er ogs\u00e5 bundet til den officielle NVIDIA-stak med CUDA. Nouveau\/Nova er ikke egnede til dette, da libcuda.so.1 kr\u00e6ves. Phoronix <a rel=\"nofollow\" href=\"https:\/\/www.phoronix.com\/news\/NVIDIA-NBD-VRAM\">bem\u00e6rker ogs\u00e5<\/a>, at NBD-VRAM er designet specifikt til forbruger-NVIDIA GPU'er, hvor alternative tilgange gennem NVIDIA P2P API ikke fungerer.<\/p>\n<p>I det store hele er NBD-VRAM en lille, men interessant systemhack til Linux: det laver ikke mirakler og erstatter ikke RAM-opgraderinger, men giver mulighed for at bruge inaktiv grafikkorthukommelse som en ekstra lagringsplads f\u00f8r SSD. For b\u00e6rbare computere med loddet hukommelse og diskret RTX-grafik kan dette vise sig at v\u00e6re en praktisk m\u00e5de at klare spidsbelastninger p\u00e5 uden straks at f\u00e5 applikationerne til at falde eller opleve en langsom opfattelse fra det langsomme lagermedie.<\/p>\n<p>Kilde: <a rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/hardware\/18308769\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 NBD-VRAM, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 NVIDIA GPU \u043a\u0430\u043a swap-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 Linux. \u041f\u0440\u043e\u0435\u043a\u0442 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0438 \u0441 \u0440\u0430\u0441\u043f\u0430\u044f\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0433\u0434\u0435 RAM \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0435\u0441\u0442\u044c \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 NVIDIA RTX\/GTX \u0441 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 VRAM. \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 C \u0438 shell, \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT. \u0418\u0434\u0435\u044f NBD-VRAM \u043f\u0440\u043e\u0441\u0442\u0430: \u0435\u0441\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-181858","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 NBD-VRAM, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 NVIDIA GPU \u043a\u0430\u043a swap-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 Linux.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/news\/opublikovan-nbd-vram\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d NBD-VRAM | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 NBD-VRAM, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 NVIDIA GPU \u043a\u0430\u043a swap-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 Linux.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/opublikovan-nbd-vram\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-06-02T12:48:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-06-02T12:48:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47NBD-VRAM er offentliggjort | ProHoster","description":"Det \u00e5bne projekt NBD-VRAM er offentliggjort, hvilket giver mulighed for at anvende en del af NVIDIA GPU-hukommelsen som swap-plads i Linux.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/opublikovan-nbd-vram","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d NBD-VRAM | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 NBD-VRAM, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u0438 NVIDIA GPU \u043a\u0430\u043a swap-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 Linux.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/opublikovan-nbd-vram","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-06-02T12:48:22+00:00","article:modified_time":"2026-06-02T12:48:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/181858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=181858"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/181858\/revisions"}],"predecessor-version":[{"id":182088,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/181858\/revisions\/182088"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=181858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=181858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=181858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}