Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Mounting video ram on Linux
Author: Solène
Date: 10 February 2024
Tags: linux
Description: In this article, you will learn how to store data in your
GPU memory on Linux
# Introduction
Hi, did you ever wonder if you could use your GPU memory as a mount
point, like one does with tmpfs and RAM?
Well, there is a project named vramfs that allows you to do exactly
this on FUSE compatible operating system.
In this test, I used an NVIDIA GTX 1060 6GB in an external GPU case
connected with a thunderbolt cable to a Lenovo T470 laptop running
Gentoo.
vramfs official GitHub project page
# Setup
Install the dependencies, you need a C++ compiler and OpenCL headers
for C++ (the package name usually contains "clhpp").
Download the sources, either with git or using an archive.
Run `make` and you should obtain a binary in `bin/vramfs`.
# Usage
It's pretty straightforward to use, as root, run `vramfs /mountpoint
3G` to mount a 3 GB storage on `/mountpoint`.
The program will stay in foreground, use Ctrl+C to unmount and stop the
mount point.
# Speed test
I've been doing a simple speed test using `dd` to measure the write
speed compare to a tmpfs.
The vramfs mount point was able to achieve 971 MB/s, it was CPU bound
by the FUSE program because FUSE isn't very efficient compared to a
kernel module handling a file system.
```
t470 /mnt/vram # env LC_ALL=C dd if=/dev/zero of=here.disk bs=64k count=30000
30000+0 records in
30000+0 records out
1966080000 bytes (2.0 GB, 1.8 GiB) copied, 2.02388 s, 971 MB/s
```
Meanwhile, the good old tmpfs reached 3.2 GB/s without using much CPU,
this is a clear winner.
```
t470 /mnt/tmpfs # env LC_ALL=C dd if=/dev/zero of=here.disk bs=64k count=30000
30000+0 records in
30000+0 records out
1966080000 bytes (2.0 GB, 1.8 GiB) copied, 0.611312 s, 3.2 GB/s
```
# Limitations
I tried to use the vram mount point as a temporary directory for
portage (the Gentoo tool building packages), but it didn't work due to
an error. After this error, I had to umount and recreate the mount
point otherwise I was left with an irremovable directory. There are
bugs in vramfs, no doubts here :-)
Arch Linux wiki has a guide explaining how to use vramfs to store a
swap file, but it seems to be risky for the system stability.
ArchWiki: Swap on video
# Conclusion
It's pretty cool to know that on Linux you can do almost what you want,
even store data in your GPU memory.
However, I'm still trying to figure a real use case for vramfs except
that it's pretty cool and impressive. If you figure a useful
situation, please let me know.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.