{"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\/it\/blog\/news\/opublikovan-nbd-vram","title":{"rendered":"Pubblicato NBD-VRAM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pubblicato un progetto aperto <strong>NBD-VRAM<\/strong>, che consente di utilizzare parte della memoria video della GPU NVIDIA come spazio di swap in Linux. Il progetto \u00e8 principalmente rivolto a laptop con memoria RAM saldata, dove la RAM non pu\u00f2 essere espansa, ma nel sistema \u00e8 presente una scheda video discreta NVIDIA RTX\/GTX con VRAM inutilizzata. Il codice \u00e8 scritto in C e shell, e viene distribuito sotto licenza <strong>MIT<\/strong>.<\/p>\n<p>L'idea di NBD-VRAM \u00e8 semplice: se il sistema inizia gi\u00e0 a utilizzare lo swap su SSD, si pu\u00f2 inserire un ulteriore strato intermedio prima dell'SSD: la memoria video. L'autore cita l'esempio di un laptop con <strong>RTX 3070 Laptop<\/strong>: da 8 GB di VRAM ne sono stati allocati 7 GB per lo swap e, considerando RAM, zram e swap su SSD, il sistema ha ottenuto circa 46 GB di memoria indirizzabile. L'ordine previso di sovraccarico \u00e8 il seguente: prima si utilizza la RAM, poi la VRAM come swap veloce, poi zram e infine l'SSD.<\/p>\n<p>Tecnicamente, NBD-VRAM non aggiunge un nuovo driver per il kernel. Un piccolo demone assegna la memoria della scheda video attraverso <strong>CUDA Driver API<\/strong>, poi la restituisce al kernel Linux come dispositivo a blocchi tramite <strong>NBD<\/strong> \u2014 Network Block Device \u2014 sopra un socket Unix. Dopo la connessione, il client nbd-standard fa apparire nel sistema \\\/dev\\\/nbdX, che pu\u00f2 essere partitionato come un normale swap tramite mkswap e attivato tramite swapon.<\/p>\n<p>L'autore sottolinea che questo approccio \u00e8 stato scelto a causa delle limitazioni delle schede video consumer NVIDIA. Un percorso pi\u00f9 diretto attraverso NVIDIA P2P API su GeForce, secondo quanto riferito, incontra EINVAL, poich\u00e9 le relative funzionalit\u00e0 sono disponibili solo per modelli professionali e server. Anche l'opzione di accesso diretto a BAR1 non ha funzionato: si rivela solo una piccola area mappata e la lettura dalla restante parte restituisce zeri. L'approccio NBD supera questa limitazione poich\u00e9 utilizza normali copie CUDA cuMemcpyHtoD e cuMemcpyDtoH.<\/p>\n<h2>Funzionalit\u00e0<\/h2>\n<ul>\n<li>\n<p><strong>Utilizzo della VRAM come swap di Linux standard.<\/strong> Dopo l'avvio, il demone fornisce la memoria video come \\\/dev\\\/nbd0 o un altro dispositivo NBD, che per il kernel appare come un normale dispositivo a blocchi.<\/p>\n<\/li>\n<li>\n<p><strong>Funziona senza un proprio modulo di kernel.<\/strong> Il progetto non richiede di scrivere, compilare e mantenere un modulo kernel separato, non utilizza simboli interni del driver NVIDIA e dovrebbe sopravvivere agli aggiornamenti del kernel e del driver senza ricompilazione.<\/p>\n<\/li>\n<li>\n<p><strong>Orientamento verso GPU NVIDIA consumer.<\/strong> Nei requisiti sono indicate GPU NVIDIA con supporto CUDA, comprese le schede RTX\/GTX per consumatori, il driver ufficiale NVIDIA con libcuda.so.1, il modulo nbd nel kernel Linux, nbd-client, gcc e make. Il CUDA Toolkit non \u00e8 necessario.<\/p>\n<\/li>\n<li>\n<p><strong>Integrazione con systemd.<\/strong> L'installazione tramite install.sh aggiunge il servizio vram-swap-nbd, che pu\u00f2 essere avviato tramite systemctl; dopo l'installazione, il servizio \u00e8 attivato per avviarsi automaticamente all'accensione.<\/p>\n<\/li>\n<li>\n<p><strong>Impostazione della dimensione e della priorit\u00e0 dello swap.<\/strong> Nel systemd-unit \u00e8 possibile specificare VRAM_SETUP_SIZE_MB, cio\u00e8 il limite superiore della VRAM allocata, e VRAM_SWAP_PRIORITY, cio\u00e8 la priorit\u00e0 del dispositivo di swap. Maggiore \u00e8 la priorit\u00e0, prima Linux utilizzer\u00e0 questo strato di swap.<\/p>\n<\/li>\n<li>\n<p><strong>Riduzione automatica della dimensione richiesta.<\/strong> Se la quantit\u00e0 di VRAM richiesta non \u00e8 disponibile, il demone tenta di ridurre la dimensione a blocchi di 512 MiB per allocare comunque la quantit\u00e0 disponibile, ad esempio se parte della memoria \u00e8 gi\u00e0 occupata da un compositore o da una sessione grafica.<\/p>\n<\/li>\n<li>\n<p><strong>Script di verifica.<\/strong> Nel repository \u00e8 presente test-nbd.sh per un test di fumo con lettura\/scrittura di 1 MiB e test-fill.sh per un test di stress sull'intera partizione VRAM.<\/p>\n<\/li>\n<li>\n<p><strong>Le prestazioni dichiarate sono di circa 1,3 GB\/s.<\/strong> Su RTX 3070 Laptop, l'autore ha misurato una scrittura sequenziale di 7 GB a blocchi di 4 MB di circa 1,3 GB\/s.<\/p>\n<\/li>\n<\/ul>\n<h2>Scenari d'uso<\/h2>\n<p><strong>Laptop con RAM saldata.<\/strong> Lo scenario principale sono i laptop moderni, dove 16 o 32 GB di RAM non sono pi\u00f9 sufficienti, ma non \u00e8 possibile espanderla. Se in tale macchina \u00e8 presente una scheda RTX discreta, parte della VRAM pu\u00f2 essere utilizzata come strato di swap aggiuntivo. Questo non trasforma la VRAM in RAM vera e propria, ma pu\u00f2 salvare il sistema da un'improvvisa transizione a uno swap su SSD lento o da OOM-killer sotto carichi di lavoro elevati.<\/p>\n<p><strong>Ambientazioni di lavoro pesanti per sviluppatori.<\/strong> IDE, browser con decine di schede, contenitori Docker, database locali, costruzioni di grandi progetti e ambienti di test creano facilmente picchi temporanei nel consumo di memoria. In tale scenario, NBD-VRAM pu\u00f2 funzionare come un buffer: non accelerare il lavoro normale, ma attenuare il momento in cui la RAM \u00e8 esaurita.<\/p>\n<p><strong>Riduzione del carico sullo swap SSD.<\/strong> Se lo swap su SSD viene utilizzato frequentemente, non \u00e8 solo pi\u00f9 lento, ma crea anche scritture aggiuntive sul dispositivo. \u00c8 possibile impostare il VRAM-swap con una priorit\u00e0 maggiore, in modo che, in caso di esaurimento della RAM, il sistema espelle prima le pagine nella memoria video e poi si rivolge all'SSD. Questo \u00e8 particolarmente rilevante per i laptop, dove l'SSD \u00e8 spesso non rimovibile o costoso da sostituire.<\/p>\n<p><strong>Combinazione con zram.<\/strong> L'autore descrive direttamente uno schema in cui il swap VRAM ha una priorit\u00e0 pi\u00f9 alta e accetta il primo 'overrun' di memoria, lo zram viene utilizzato come secondo livello, e l'SSD rimane l'ultima linea di difesa. Questo schema pu\u00f2 essere utile per workstation e laptop, dove \u00e8 pi\u00f9 importante mantenere la reattivit\u00e0 del sistema in caso di insufficienza di memoria piuttosto che ottenere la massima prevedibilit\u00e0 dei ritardi.<\/p>\n<p><strong>Compiti AI\/LLM locali attorno alla GPU, ma non al posto della VRAM per il modello.<\/strong> Il NBD-VRAM non aumenta la memoria video disponibile per l'applicazione CUDA come VRAM per il modello. Questo \u00e8 lo scenario inverso: non \u00e8 la RAM ad essere utilizzata come VRAM, ma la VRAM ad essere utilizzata come swap per la memoria normale di Linux. Pertanto, il progetto non consentir\u00e0 di caricare direttamente nel GPU un modello di dimensioni maggiori. Tuttavia, pu\u00f2 essere utile su una macchina dove, insieme all'inferenza LLM, funzionano browser, IDE, indicizzatori, ambienti Python e contenitori e la RAM di sistema comincia a scarseggiare.<\/p>\n<p><strong>Workstation domestiche ed esperimentali.<\/strong> Il progetto \u00e8 interessante per gli utenti la cui scheda video \u00e8 frequentemente inattiva al di fuori dei giochi, del rendering o di compiti ML. Ad esempio, 8-12 GB di VRAM su una GeForce desktop possono essere temporaneamente trasformati in uno strato aggiuntivo di swap per compiti pesanti di compilazione, elaborazione dei dati o avvio. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/vps\/\" title=\"macchine virtuali\" data-wpil-keyword-link=\"linked\">macchine virtuali<\/a>.<\/p>\n<h2>Limitazioni<\/h2>\n<p>Il NBD-VRAM non \u00e8 una sostituzione della memoria operativa. L'accesso a tale swap avviene attraverso la sequenza kernel swap \u2192 \/dev\/nbdX \u2192 driver nbd \u2192 socket Unix \u2192 demone \u2192 copia CUDA \u2192 VRAM, pertanto i ritardi e il comportamento saranno diversi rispetto alla vera RAM. \u00c8 pi\u00f9 uno strato di emergenza o intermedio tra la RAM e l'SSD, piuttosto che un modo per 'aggiungere memoria' senza conseguenze.<\/p>\n<p>Inoltre, il progetto \u00e8 legato allo stack ufficiale NVIDIA con CUDA. Nouveau\/Nova non sono adatti a questo, poich\u00e9 \u00e8 richiesta libcuda.so.1. Phoronix <a rel=\"nofollow\" href=\"https:\/\/www.phoronix.com\/news\/NVIDIA-NBD-VRAM\">nota anche<\/a>, che il NBD-VRAM \u00e8 stato creato specificamente per le GPU NVIDIA consumer, dove approcci alternativi tramite NVIDIA P2P API non funzionano.<\/p>\n<p>In sintesi, NBD-VRAM \u00e8 un hack di sistema interessante ma piccolo per Linux: non fa miracoli e non sostituisce un aggiornamento della RAM, ma permette di utilizzare la memoria video in standby come un ulteriore livello di swap prima dell'SSD. Per i laptop con memoria saldata e scheda grafica RTX discreta, pu\u00f2 rivelarsi un modo pratico per affrontare picchi di carico senza il rischio immediato di crash delle applicazioni o di un lento passaggio a un'unit\u00e0 di archiviazione pi\u00f9 lenta.<\/p>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/news\/opublikovan-nbd-vram\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Pubblicato NBD-VRAM | ProHoster","description":"\u00c8 stato pubblicato il progetto open-source NBD-VRAM, che consente di utilizzare parte della memoria video della GPU NVIDIA come spazio swap in Linux.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/opublikovan-nbd-vram","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/181858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=181858"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/181858\/revisions"}],"predecessor-version":[{"id":182088,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/181858\/revisions\/182088"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=181858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=181858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=181858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}