{"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\/es\/blog\/news\/opublikovan-nbd-vram","title":{"rendered":"Se public\u00f3 NBD-VRAM","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se public\u00f3 un proyecto abierto <strong>NBD-VRAM<\/strong>, que permite utilizar parte de la memoria de video de la GPU NVIDIA como espacio de intercambio en Linux. El proyecto est\u00e1 dirigido principalmente a laptops con memoria RAM soldada, donde no se puede ampliar la RAM, pero hay una tarjeta gr\u00e1fica NVIDIA RTX\/GTX en el sistema con VRAM no utilizada. El c\u00f3digo est\u00e1 escrito en C y shell, y se distribuye bajo la licencia <strong>MIT<\/strong>.<\/p>\n<p>La idea de NBD-VRAM es simple: si el sistema ya comienza a utilizar el intercambio en un SSD, se puede colocar una capa intermedia delante del SSD: la memoria de video. El autor da un ejemplo con un port\u00e1til con <strong>RTX 3070 Laptop<\/strong>: de 8 GB de VRAM, se asignaron 7 GB como intercambio, y en total, sumando RAM, zram y el intercambio en SSD, el sistema obtuvo aproximadamente 46 GB de memoria direccionable. Se supone que el orden de llenado es el siguiente: primero se utiliza la RAM, luego la VRAM como una memoria de intercambio r\u00e1pida, luego zram, y solo despu\u00e9s de eso el SSD.<\/p>\n<p>T\u00e9cnicamente, NBD-VRAM no a\u00f1ade un nuevo controlador al n\u00facleo. Un peque\u00f1o demonio asigna la memoria de la tarjeta gr\u00e1fica a trav\u00e9s de <strong>CUDA Driver API<\/strong>, y luego la entrega al n\u00facleo de Linux como un dispositivo de bloque a trav\u00e9s de <strong>NBD<\/strong> \u2014 Network Block Device \u2014 sobre un socket Unix. Despu\u00e9s de conectarse, el cliente est\u00e1ndar nbd-client aparece en el sistema como \/dev\/nbdX, que se puede asignar como un intercambio normal mediante mkswap y habilitar mediante swapon.<\/p>\n<p>El autor enfatiza que este enfoque se eligi\u00f3 debido a las limitaciones de las tarjetas gr\u00e1ficas NVIDIA de consumo. Un camino m\u00e1s directo a trav\u00e9s de NVIDIA P2P API en GeForce, seg\u00fan \u00e9l, se encuentra con EINVAL, ya que las capacidades correspondientes est\u00e1n disponibles \u00fanicamente para modelos profesionales y de servidor. La opci\u00f3n de acceder directamente a BAR1 tampoco funcion\u00f3: solo se obtiene una peque\u00f1a regi\u00f3n mapeada, y la lectura de la otra parte devuelve ceros. El enfoque NBD evita esta limitaci\u00f3n, ya que utiliza copias CUDA normales cuMemcpyHtoD y cuMemcpyDtoH.<\/p>\n<h2>Funcionalidades<\/h2>\n<ul>\n<li>\n<p><strong>Uso de VRAM como un intercambio normal de Linux.<\/strong> Despu\u00e9s de iniciar, el demonio proporciona la memoria de video como \/dev\/nbd0 u otro dispositivo NBD, que para el n\u00facleo se ve como un dispositivo de bloque est\u00e1ndar.<\/p>\n<\/li>\n<li>\n<p><strong>Funciona sin un m\u00f3dulo de n\u00facleo propio.<\/strong> El proyecto no requiere escribir, compilar y mantener un m\u00f3dulo del n\u00facleo separado, no utiliza s\u00edmbolos internos del controlador de NVIDIA y debe sobrevivir las actualizaciones del n\u00facleo y del controlador sin necesidad de recompilaci\u00f3n.<\/p>\n<\/li>\n<li>\n<p><strong>Enfoque en las GPU NVIDIA de consumo.<\/strong> Los requisitos incluyen GPU NVIDIA con soporte para CUDA, incluidas las tarjetas RTX\/GTX para consumidores, el controlador oficial de NVIDIA con libcuda.so.1, el m\u00f3dulo nbd en el n\u00facleo de Linux, nbd-client, gcc y make. No se necesita el CUDA Toolkit.<\/p>\n<\/li>\n<li>\n<p><strong>Integraci\u00f3n con systemd.<\/strong> La instalaci\u00f3n a trav\u00e9s de install.sh agrega el servicio vram-swap-nbd, que se puede iniciar a trav\u00e9s de systemctl; tras la instalaci\u00f3n, el servicio se habilita para arrancar autom\u00e1ticamente al iniciar.<\/p>\n<\/li>\n<li>\n<p><strong>Configuraci\u00f3n del tama\u00f1o y la prioridad de swap.<\/strong> En el archivo unit de systemd se puede definir VRAM_SETUP_SIZE_MB, es decir, el l\u00edmite m\u00e1ximo de VRAM asignada, y VRAM_SWAP_PRIORITY, que es la prioridad del dispositivo de swap. Cuanto mayor sea la prioridad, antes utilizar\u00e1 Linux esta capa de swap.<\/p>\n<\/li>\n<li>\n<p><strong>Reducci\u00f3n autom\u00e1tica del tama\u00f1o solicitado.<\/strong> Si la cantidad de VRAM requerida no est\u00e1 disponible, el demonio intenta reducir el tama\u00f1o en bloques de 512 MiB para asignar el m\u00e1ximo disponible, por ejemplo, si parte de la memoria ya est\u00e1 ocupada por el compositor o la sesi\u00f3n gr\u00e1fica.<\/p>\n<\/li>\n<li>\n<p><strong>Scripts de prueba.<\/strong> En el repositorio hay test-nbd.sh para una prueba de humo con lectura\/escritura de 1 MiB y test-fill.sh para una prueba de estr\u00e9s de toda la partici\u00f3n de VRAM.<\/p>\n<\/li>\n<li>\n<p><strong>Rendimiento declarado de aproximadamente 1,3 GB\/s.<\/strong> En la RTX 3070 Laptop, el autor midi\u00f3 una escritura secuencial de 7 GB en bloques de 4 MB a aproximadamente 1,3 GB\/s.<\/p>\n<\/li>\n<\/ul>\n<h2>Escenarios de aplicaci\u00f3n<\/h2>\n<p><strong>Port\u00e1tiles con RAM soldada.<\/strong> El escenario principal son los port\u00e1tiles modernos, donde 16 o 32 GB de RAM ya no son suficientes, pero no se pueden expandir. Si en tal m\u00e1quina hay una tarjeta RTX dedicada, parte de la VRAM se puede utilizar como una capa de swap adicional. Esto no convierte la VRAM en RAM completa, pero puede salvar al sistema de caer en un swap de SSD lento o de OOM-killer bajo cargas pico.<\/p>\n<p><strong>Entornos de desarrollo pesados.<\/strong> IDE, navegadores con decenas de pesta\u00f1as, contenedores Docker, bases de datos locales, compilaciones de grandes proyectos y entornos de prueba crean f\u00e1cilmente picos temporales en el consumo de memoria. En tal escenario, NBD-VRAM puede funcionar como un b\u00fafer: no acelera el trabajo normal, sino que suaviza el momento en que se acaba la RAM.<\/p>\n<p><strong>Reducci\u00f3n de la carga en el swap de SSD.<\/strong> Si el swap en SSD se utiliza con frecuencia, esto no solo es m\u00e1s lento, sino que tambi\u00e9n genera escritura innecesaria en el dispositivo. Se puede establecer un swap en VRAM con una prioridad m\u00e1s alta, de modo que, al desbordarse la RAM, el sistema env\u00ede primero las p\u00e1ginas a la memoria de video y solo despu\u00e9s acceda al SSD. Esto es especialmente relevante para laptops, donde el SSD tambi\u00e9n suele ser no extra\u00edble o caro de reemplazar.<\/p>\n<p><strong>Combinaci\u00f3n con zram.<\/strong> El autor describe claramente un esquema donde el swap en VRAM tiene una prioridad m\u00e1s alta y recibe el primer \"desbordamiento\" de memoria, zram se utiliza en el siguiente nivel, y el SSD permanece como la \u00faltima l\u00ednea de defensa. Este esquema puede ser \u00fatil para estaciones de trabajo y laptops, donde es m\u00e1s importante mantener la capacidad de respuesta del sistema ante la falta de memoria que obtener la m\u00e1xima previsibilidad de latencias.<\/p>\n<p><strong>Tareas locales de IA\/LLM alrededor de la GPU, pero no en lugar de VRAM para el modelo.<\/strong> NBD-VRAM no aumenta la memoria de video disponible para la aplicaci\u00f3n CUDA como VRAM para el modelo. Es un escenario inverso: no se utiliza RAM como VRAM, sino que VRAM se utiliza como swap para la memoria ordinaria de Linux. Por lo tanto, el proyecto no permitir\u00e1 cargar directamente un modelo m\u00e1s grande en la GPU. Sin embargo, puede ser \u00fatil en una m\u00e1quina donde, junto con la inferencia LLM, trabajan un navegador, un IDE, indexadores, entornos de Python y contenedores, y la RAM del sistema comienza a escasear.<\/p>\n<p><strong>Estaciones de trabajo dom\u00e9sticas y experimentales.<\/strong> El proyecto es interesante para los usuarios cuya tarjeta gr\u00e1fica a menudo permanece inactiva fuera de juegos, renderizado o tareas de ML. Por ejemplo, se pueden convertir temporalmente 8\u201312 GB de VRAM en un escritorio GeForce en una capa adicional de swap para tareas pesadas de compilaci\u00f3n, procesamiento de datos o ejecuci\u00f3n. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/vps\/\" title=\"m\u00e1quinas virtuales\" data-wpil-keyword-link=\"linked\">m\u00e1quinas virtuales<\/a>.<\/p>\n<h2>Limitaciones<\/h2>\n<p>NBD-VRAM no es un sustituto de la memoria RAM. El acceso a este swap se realiza a trav\u00e9s de la cadena kernel swap \u2192 \/dev\/nbdX \u2192 controlador nbd \u2192 socket Unix \u2192 demonio \u2192 copia CUDA \u2192 VRAM, por lo que las latencias y el comportamiento ser\u00e1n diferentes de la verdadera RAM. Es m\u00e1s bien una capa de emergencia o intermedia entre RAM y SSD, que un modo de \"agregar memoria\" sin consecuencias.<\/p>\n<p>Adem\u00e1s, el proyecto est\u00e1 vinculado al stack oficial de NVIDIA con CUDA. Nouveau\/Nova no son adecuados para esto, ya que se requiere libcuda.so.1. Phoronix <a rel=\"nofollow\" href=\"https:\/\/www.phoronix.com\/news\/NVIDIA-NBD-VRAM\">tambi\u00e9n se\u00f1ala<\/a>, que NBD-VRAM fue creado espec\u00edficamente para las GPU NVIDIA de consumo, donde enfoques alternativos a trav\u00e9s de la API P2P de NVIDIA no funcionan.<\/p>\n<p>En resumen, NBD-VRAM es un peque\u00f1o pero interesante hack de sistema para Linux: no realiza maravillas ni sustituye una actualizaci\u00f3n de RAM, pero permite utilizar la memoria de video inactiva como una capa adicional de swap antes del SSD. Para laptops con memoria soldada y una tarjeta RTX dedicada, esto puede ser una forma pr\u00e1ctica de manejar picos de carga sin que las aplicaciones caigan de inmediato o sin experimentar una lenta transici\u00f3n a un disco m\u00e1s lento.<\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/news\/opublikovan-nbd-vram\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Publicaci\u00f3n de NBD-VRAM | ProHoster","description":"Se ha publicado un proyecto abierto NBD-VRAM, que permite utilizar parte de la memoria de video de la GPU NVIDIA como espacio de swap en Linux.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/opublikovan-nbd-vram","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/181858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=181858"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/181858\/revisions"}],"predecessor-version":[{"id":182088,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/181858\/revisions\/182088"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=181858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=181858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=181858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}