NBD-VRAM veröffentlicht

Ein Open-Source-Projekt wurde veröffentlicht NBD-VRAM, das einen Teil des Videospeichers der NVIDIA-GPU als Swap-Speicher in Linux nutzt. Das Projekt richtet sich vor allem an Laptops mit fest verlötetem RAM, wo der RAM nicht erweiterbar ist, aber ein diskreter NVIDIA RTX/GTX-Grafikprozessor mit nicht genutztem VRAM vorhanden ist. Der Code ist in C und Shell geschrieben und unter einer Lizenz veröffentlicht MIT.

Die Idee von NBD-VRAM ist einfach: Wenn das System bereits beginnt, auf SSD-Swap zu gehen, kann man einen weiteren Zwischenschicht vor die SSD setzen – den Videospeicher. Der Autor gibt ein Beispiel mit einem Laptop auf RTX 3070 Laptop: Von 8 GB VRAM wurden 7 GB fĂŒr Swap reserviert, sodass insgesamt mit RAM, zram und SSD-Swap das System etwa 46 GB adressierbaren Speichers erhielt. Die vermutete Overflow-Reihenfolge ist wie folgt: Zuerst wird RAM verwendet, dann VRAM als schneller Swap, dann zram, und erst danach die SSD.

Technisch fĂŒgt NBD-VRAM keinen neuen Kernel-Treiber hinzu. Ein kleiner Daemon weist den Videospeicher ĂŒber CUDA Driver API, dann wird er dem Linux-Kernel als BlockgerĂ€t ĂŒber NBD — Network Block Device — ĂŒber ein Unix-Socket bereitgestellt. Nach der Verbindung mit dem Standard-nbd-client erscheint das GerĂ€t /dev/nbdX im System, das wie ein gewöhnlicher Swap mit mkswap formatiert und mit swapon aktiviert werden kann.

Der Autor hebt hervor, dass dieser Ansatz aufgrund der EinschrĂ€nkungen bei den Verbraucher-Grafikkarten von NVIDIA gewĂ€hlt wurde. Ein direkterer Weg ĂŒber die NVIDIA P2P API auf GeForce fĂŒhre laut ihm zu einem EINVAL, da die entsprechenden Funktionen tatsĂ€chlich nur fĂŒr professionelle und Server-Modelle verfĂŒgbar sind. Auch der Ansatz mit dem direkten Zugriff auf BAR1 funktionierte nicht: Es ist nur ein kleiner Bereich verfĂŒgbar, und das Lesen aus dem restlichen Teil liefert nur Nullen. Der NBD-Ansatz umgeht diese EinschrĂ€nkung, da er die normalen CUDA-Kopieroperationen cuMemcpyHtoD und cuMemcpyDtoH verwendet.

Funktionen

  • Die Verwendung von VRAM als regulĂ€rem Linux-Swap. Nach dem Start stellt der Daemon den Videospeicher als /dev/nbd0 oder als ein anderes NBD-GerĂ€t zur VerfĂŒgung, das fĂŒr den Kernel wie ein standardmĂ€ĂŸiges BlockgerĂ€t aussieht.

  • Betrieb ohne eigenes Kernel-Modul. Das Projekt erfordert nicht das Schreiben, Kompilieren und Warten eines separaten Kernelmoduls, nutzt keine internen Symbole des NVIDIA-Treibers und sollte Kernel- und Treiberaktualisierungen ohne erneute Kompilierung ĂŒberstehen.

  • Orientierung an Verbraucher-Grafikkarten von NVIDIA. Die Anforderungen beinhalten NVIDIA-GPUs mit CUDA-UnterstĂŒtzung, einschließlich der Consumer RTX/GTX-Karten, den offiziellen NVIDIA-Treiber mit libcuda.so.1, das nbd-Modul im Linux-Kernel, nbd-client, gcc und make. Das CUDA Toolkit ist dabei nicht erforderlich.

  • systemd-Integration. Die Installation ĂŒber install.sh fĂŒgt den vram-swap-nbd-Dienst hinzu, der ĂŒber systemctl gestartet werden kann; nach der Installation wird der Dienst so konfiguriert, dass er beim Booten automatisch startet.

  • Konfigurierung der Swap-GrĂ¶ĂŸe und PrioritĂ€t. Im systemd-Einheit kann VRAM_SETUP_SIZE_MB festgelegt werden, also die obere Grenze des zugewiesenen VRAM, und VRAM_SWAP_PRIORITY, also die PrioritĂ€t des Swap-GerĂ€ts. Je höher die PrioritĂ€t, desto frĂŒher wird Linux diese Swap-Schicht verwenden.

  • Automatische Reduzierung der angeforderten GrĂ¶ĂŸe. Wenn der benötigte VRAM nicht verfĂŒgbar ist, versucht der Daemon, die GrĂ¶ĂŸe in Schritten von 512 MiB zu reduzieren, um dennoch den verfĂŒgbaren Speicher zuzuweisen, beispielsweise wenn ein Teil des Speichers bereits vom Compositor oder einer grafischen Sitzung belegt ist.

  • Test-Szenarien. Im Repository gibt es test-nbd.sh fĂŒr einen Smoke-Test mit Schreiben/Lesen von 1 MiB und test-fill.sh fĂŒr einen Stresstest des gesamten VRAM-Abschnitts.

  • Die angegebene Leistung betrĂ€gt etwa 1,3 GB/s. Mit der RTX 3070 Laptop wurde eine sequentielle Schreibgeschwindigkeit von 7 GB in 4 MB Blöcken von etwa 1,3 GB/s gemessen.

Anwendungsszenarien

Notebooks mit verlöteter RAM. Das Hauptszenario sind moderne Laptops, bei denen 16 oder 32 GB RAM bereits nicht mehr ausreichen, aber eine Erweiterung nicht möglich ist. Wenn ein solcher Computer ĂŒber eine dedizierte RTX-Karte verfĂŒgt, kann ein Teil des VRAM als zusĂ€tzlicher Swap-Speicher verwendet werden. Das verwandelt VRAM nicht in vollwertigen RAM, kann aber das System vor einem abrupten Wechsel auf langsamen SSD-Swap oder OOM-Killer bei Spitzenlasten bewahren.

Ressourcenintensive Arbeitsumgebungen fĂŒr Entwickler. IDE, Browser mit Dutzenden von Tabs, Docker-Container, lokale Datenbanken, das Kompilieren großer Projekte und Testumgebungen erzeugen leicht vorĂŒbergehende Spitzen im Speicherbedarf. In einem solchen Szenario kann NBD-VRAM als Puffer fungieren: Es beschleunigt nicht die normale Arbeit, sondern mildert den Moment, in dem der RAM ausgeht.

Entlastung des SSD-Swap. Wenn der Swap auf SSD hĂ€ufig verwendet wird, ist das nicht nur langsamer, sondern erzeugt auch unnötige SchreibvorgĂ€nge auf dem Speicher. VRAM-Swap kann mit höherer PrioritĂ€t gesetzt werden, sodass das System bei einem RAM-Überlauf zuerst Seiten in den Videospeicher auslagert und erst danach auf die SSD zugreift. Dies ist besonders relevant fĂŒr Laptops, bei denen der SSD hĂ€ufig nicht austauschbar oder teuer in der Ersetzung ist.

Kombination mit zram. Der Autor beschreibt direkt ein Schema, in dem der VRAM-Swap eine höhere PrioritĂ€t erhĂ€lt und zuerst "ĂŒberlaufende" Speicherseiten verarbeitet, wĂ€hrend zram als nĂ€chster Schritt verwendet wird und die SSD die letzte Verteidigungslinie bleibt. Dieses Schema kann fĂŒr Workstations und Laptops nĂŒtzlich sein, bei denen es wichtiger ist, die ReaktionsfĂ€higkeit des Systems bei speicherengpĂ€ssen zu bewahren, als maximale Vorhersagbarkeit der Latenzen zu erzielen.

Lokale AI/LLM-Aufgaben rund um die GPU, jedoch nicht anstelle von VRAM fĂŒr das Modell. NBD-VRAM erhöht den fĂŒr die CUDA-Anwendung verfĂŒgbaren Videospeicher nicht als VRAM fĂŒr das Modell. Dies ist ein umgekehrtes Szenario: Nicht RAM wird als VRAM verwendet, sondern VRAM wird als Swap fĂŒr den normalen Linux-Speicher genutzt. Daher ermöglicht das Projekt nicht, ein grĂ¶ĂŸeres Modell direkt in die GPU zu laden. Es kann jedoch nĂŒtzlich sein auf einem System, wo neben dem LLM-Inferenz-Browser, IDEs, Indexierern, Python-Umgebungen und Containern gearbeitet wird, und der Systemspeicher beginnt zu schwinden.

Home- und Experimentier-Arbeitsstationen. Das Projekt ist fĂŒr Benutzer interessant, deren Grafikkarte oft außerhalb von Spielen, Rendern oder ML-Aufgaben ungenutzt bleibt. Zum Beispiel können 8–12 GB VRAM auf einer Desktop-GeForce temporĂ€r in eine zusĂ€tzliche Swap-Schicht fĂŒr intensive Aufgaben wie Kompilierung, Datenverarbeitung oder AusfĂŒhrung umgewandelt werden. virtuellen Maschinen.

EinschrÀnkungen

NBD-VRAM ist kein Ersatz fĂŒr den Arbeitsspeicher. Der Zugriff auf solches Swap erfolgt ĂŒber eine Kette von kernel swap → /dev/nbdX → nbd-Treiber → Unix-Socket → Daemon → CUDA-Kopie → VRAM, daher werden Verzögerungen und Verhalten anders sein als bei echtem RAM. Es ist eher eine Notfall- oder Zwischenschicht zwischen RAM und SSD, als eine Methode, um „Speicher“ ohne Konsequenzen hinzuzufĂŒgen.

Das Projekt basiert auch auf dem offiziellen NVIDIA-Stack mit CUDA. Nouveau/Nova sind dafĂŒr nicht geeignet, da libcuda.so.1 erforderlich ist. Phoronix stellt auch fest, dass NBD-VRAM speziell fĂŒr Verbraucher-GPU von NVIDIA entwickelt wurde, bei denen alternative AnsĂ€tze ĂŒber die NVIDIA P2P-API nicht funktionieren.

Zusammenfassend ist NBD-VRAM ein kleiner, aber interessanter System-Hack fĂŒr Linux: Er bewirkt keine Wunder und ersetzt kein Upgrade des RAM, ermöglicht aber die Nutzung von ungenutztem Videospeicher als zusĂ€tzliche Swapeinheit vor der SSD. FĂŒr Laptops mit integriertem Speicher und einer diskreten RTX-Grafikkarte kann dies eine praktische Methode sein, um Spitzenlasten zu bewĂ€ltigen, ohne dass Anwendungen sofort abstĂŒrzen oder schmerzhaft auf ein langsames Speichermedium umschalten.

Quelle: linux.org.ru

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster