logo linux

Usar la memoria gráfica como almacenamiento con VRAMFS

Esta es una de esas utilidades que de primeras parece inútil pero a la que luego se le puede sacar bastante partido.

VRAMFS es un programa que usa la biblioteca FUSE para crear un sistema de archivos en la VRAM. La idea es bastante parecida a la funcionalidad que ofrece ramdisk exceptuando que en este caso en vez de usar la RAM del sistema, se usa la RAM disponible en tu tarjeta gráfica.

Con VRAMFS no se pretende que acabe teniendo un uso serio pero según el desarrollador, funciona bastante bien y ahora que hay tarjetas gráficas con enormes cantidades de memoria, puede llegar a ser práctico.

Muchos os estaréis preguntando el sentido de algo así. La memoria gráfica resulta más cara que la RAM y además suele ser más escasa. En la actualidad hay muchos ordenadores que disponen una tarjeta gráfica dedicada de poca potencia o a la que se le da poco uso en aplicaciones 3D que cuentan con una cantidad considerable de memoria. Para todos aquellos que tenga 1 o 2 Gb de memoria gráfica que, por el uso diario que le dan al ordenador no usan, VRAMFS les puede ser bastante útil porque supondría aprovechar un valioso recurso que no se está utilizando.

Tener una unidad de almacenamiento de algún que otro giga de estas características permitiría disponer de un lugar donde poder mover información a una velocidad muy elevada. Además llegado el momento, podría servir como caché intermedia entre el almacenamiento masivo y la memoria RAM, algo que aceleraría sustancialmente el rendimiento de una máquina con RAM limitada.

En el sistema del desarrollador se ha conseguido una velocidad de lectura continuada de unos 2.4GB/s y una escritura de 2GB/S, lo que supone aproximadamente un tercio de lo logrado con ramdisk. Con la evolución de desarrollo de VRAMFS, se podría multiplicar ese rendimiento aprovechado los límites del ancho de banda que ofrece PCI-e.

vramfs

Cuando VRAMFS se inicia, comprueba que la GPU puede manejar OpenCL e intenta asignar una cantidad específica de memoria. Se usa OpenCL para asignar bloques de memoria en la tarjeta gráfica creando objetos de buffer. Cuando se monta un nuevo disco, se crea una región de un tamaño determinado y se inicializa con ceros. Según el desarrollador, hacer esto así es necesario ya que algunos controladores OpenCL comprueban si la VRAM que necesitan los bloques está realmente disponible.

Las tarjetas gráficas de Nvidia no tienen soporte para OpenCL 1.2 lo que significa que el relleno con ceros del buffer preasignado se tiene que simular. Pero según parece, este hecho no supone una diferencia de rendimiento con respecto a tarjetas gráficas que sí ofrecen soporte para OpenCL 1.2.

Los requisitos son:
· Linux 2.6 o posterior
· Los archivos de desarrollo de FUSE
· Una tarjeta gráfica con soporte para OpenCL 1.1.

Si quieres conocer todos los detalles VRAMFS, puedes visitar su página en GitHub.