Ein Open-Source-Projekt wurde veröffentlicht NBD-VRAM, wodurch Sie einen Teil des NVIDIA-GPU-Videospeichers als Auslagerungsspeicher nutzen können in LinuxDas Projekt richtet sich primĂ€r an Laptops mit fest verlötetem Arbeitsspeicher (RAM), der nicht erweiterbar ist, aber ĂŒber eine dedizierte NVIDIA RTX/GTX-Grafikkarte mit ungenutztem Videospeicher (VRAM) verfĂŒgt. Der Code ist in C und Shell geschrieben und wird unter einer Lizenz vertrieben. MIT.
Die Idee hinter NBD-VRAM ist einfach: Wenn das System bereits mit dem Auslagern von Daten auf die SSD beginnt, kann man eine weitere Zwischenschicht â den Videospeicher â vor die SSD schalten. Der Autor nennt als Beispiel einen Laptop. RTX 3070-LaptopVon den 8 GB VRAM waren 7 GB als Auslagerungsspeicher reserviert. Zusammen mit RAM, zRAM und SSD-Auslagerungsspeicher verfĂŒgte das System ĂŒber insgesamt ca. 46 GB adressierbaren Speicher. Die erwartete Reihenfolge des SpeicherĂŒberlaufs ist wie folgt: Zuerst wird der RAM genutzt, dann der VRAM als schneller Auslagerungsspeicher, dann der zRAM und erst dann die SSD.
Technisch gesehen fĂŒgt NBD-VRAM keinen neuen Kernel-Treiber hinzu. Ein kleiner Daemon allokiert den Grafikspeicher ĂŒber CUDA-Treiber-APIund gibt es dann an den Kern weiter. Linux als BlockgerĂ€t durch NBD â NetzwerkblockgerĂ€t â ĂŒber einen Unix-Socket. Nach der Verbindung mit dem Standard-nbd-Client erscheint /dev/nbdX im System, das mit mkswap als regulĂ€res Swap-Laufwerk eingebunden und mit swapon aktiviert werden kann.
Der Autor betont, dass dieser Ansatz aufgrund der BeschrĂ€nkungen von NVIDIA-Grafikkarten fĂŒr Endverbraucher gewĂ€hlt wurde. Ein direkterer Ansatz ĂŒber die NVIDIA P2P-API auf GeForce-Grafikkarten fĂŒhrt laut seiner Aussage zu einem EINVAL-Fehler, da die entsprechenden Funktionen praktisch nur fĂŒr professionelle und Servermodelle verfĂŒgbar sind. Auch der direkte Zugriff auf BAR1 schlug fehl: Nur ein kleiner Bereich des Speicherbereichs ist zugĂ€nglich, und das Lesen des restlichen Bereichs liefert Nullen. Der NBD-Ansatz umgeht diese EinschrĂ€nkung durch die Verwendung der standardmĂ€Ăigen CUDA-Kopieroperationen cuMemcpyHtoD und cuMemcpyDtoH.
Capabilities
VRAM wird wie gewohnt verwendet Linux Wechsel. Nach dem Start stellt der Daemon den Videospeicher als /dev/nbd0 oder ein anderes NBD-GerÀt bereit, das dem Kernel als normales BlockgerÀt erscheint.
Funktioniert ohne eigenes Kernelmodul. Das Projekt erfordert weder das Schreiben, Erstellen noch die Wartung eines separaten Kernelmoduls, verwendet keine internen NVIDIA-Treibersymbole und sollte Kernel- und Treiberaktualisierungen ohne erneutes Kompilieren ĂŒberstehen.
Fokus auf NVIDIA-Grafikkarten fĂŒr Endverbraucher. Voraussetzungen sind eine CUDA-fĂ€hige NVIDIA-GPU, einschlieĂlich Consumer-RTX/GTX-Karten, ein offizieller NVIDIA-Treiber mit libcuda.so.1 und das nbd-Kernelmodul. Linux, nbd-client, gcc und make. Das CUDA Toolkit wird nicht benötigt.
Systemintegration. Die Installation via install.sh fĂŒgt den vram-swap-nbd-Dienst hinzu, der ĂŒber systemctl gestartet werden kann; nach der Installation ist der Dienst so konfiguriert, dass er beim Systemstart automatisch gestartet wird.
Swap-GröĂe und PrioritĂ€t festlegen. In systemd-unit können Sie VRAM_SETUP_SIZE_MB, die Obergrenze des zugewiesenen VRAM, und VRAM_SWAP_PRIORITY, die PrioritĂ€t des AuslagerungsgerĂ€ts, festlegen. Je höher die PrioritĂ€t, desto frĂŒher wird der Speicher ausgelagert. Linux wird diese Tauschschicht verwenden.
Die angeforderte GröĂe wird automatisch reduziert. Wenn die benötigte Menge an VRAM nicht verfĂŒgbar ist, versucht der Daemon, die GröĂe in 512-MiB-Blöcken zu reduzieren, um dennoch die verfĂŒgbare Menge zuzuweisen, beispielsweise wenn ein Teil des Speichers bereits vom Compositor oder der Grafiksitzung belegt ist.
Testszenarien. Das Repository enthĂ€lt test-nbd.sh fĂŒr einen Smoke-Test mit 1 MiB Lese-/Schreibzugriff und test-fill.sh fĂŒr einen Stresstest der gesamten VRAM-Partition.
Die angegebene Leistung betrÀgt etwa 1,3 GB/s. Auf einem Laptop mit RTX 3070 maà der Autor sequentielle SchreibvorgÀnge von 7 GB in 4-MB-Blöcken mit ungefÀhr 1,3 GB/s.
Szenarios
Laptops mit fest verlötetem Arbeitsspeicher. Das Hauptszenario sind moderne Laptops, bei denen 16 oder 32 GB RAM nicht mehr ausreichen, eine Erweiterung aber nicht möglich ist. VerfĂŒgt ein solches GerĂ€t ĂŒber eine dedizierte RTX-Grafikkarte, kann ein Teil des VRAM als zusĂ€tzliche Auslagerungsschicht genutzt werden. Dadurch wird der VRAM zwar nicht zu vollwertigem RAM, aber es kann verhindern, dass das System unter Volllast plötzlich auf die langsame SSD-Auslagerung umschaltet oder aufgrund eines Speichermangels abstĂŒrzt.
Stark beanspruchte Arbeitsumgebungen fĂŒr Entwickler. IDEs, Browser mit Dutzenden von Tabs, Docker-Container, lokale Datenbanken, groĂe Projekt-Builds und Testumgebungen können leicht kurzfristige Spitzen im Speicherverbrauch verursachen. In solchen Szenarien kann NBD-VRAM als Puffer fungieren: Es beschleunigt nicht die regulĂ€re Arbeit, sondern mildert den Moment ab, in dem der Arbeitsspeicher knapp wird.
Reduzierte Auslastung des SSD-Swap-Speichers. Die hĂ€ufige Nutzung des Auslagerungsspeichers auf einer SSD verlangsamt nicht nur das System, sondern verursacht auch unnötige SchreibvorgĂ€nge. Der VRAM-Auslagerungsspeicher kann eine höhere PrioritĂ€t erhalten, sodass das System bei vollem RAM zuerst Seiten in den Videospeicher auslagert und erst dann auf die SSD zugreift. Dies ist besonders wichtig fĂŒr Laptops, da die SSD oft fest verbaut oder teuer zu ersetzen ist.
Kombination mit ZRAM. Der Autor beschreibt anschaulich ein Schema, bei dem der VRAM-Swap höhere PrioritĂ€t erhĂ€lt und als erstes auf den Speicher zugreift, anschlieĂend der zRAM verwendet wird und die SSD die letzte Verteidigungslinie darstellt. Dieses Schema eignet sich fĂŒr Workstations und Laptops, bei denen die SystemreaktionsfĂ€higkeit unter Speicherdruck wichtiger ist als eine maximale Vorhersagbarkeit der Latenz.
Lokale KI/LLM-Aufgaben um die GPU herum, aber nicht anstelle des VRAM fĂŒr das Modell. NBD-VRAM erhöht nicht den fĂŒr eine CUDA-Anwendung verfĂŒgbaren Videospeicher (VRAM) fĂŒr dieses Modell. Es ist vielmehr das Gegenteil: Anstatt dass RAM als VRAM verwendet wird, dient VRAM als Auslagerungsspeicher fĂŒr den regulĂ€ren Speicher. LinuxDaher erlaubt das Projekt kein direktes Laden gröĂerer Modelle auf die GPU. Es könnte jedoch auf einem Rechner nĂŒtzlich sein, auf dem neben LLM-Inferenz auch ein Browser, eine IDE, Indexer, Python-Umgebungen und Container laufen und auf dem der Arbeitsspeicher knapp wird.
Heim- und experimentelle ArbeitsplĂ€tze. Das Projekt ist interessant fĂŒr Nutzer, deren Grafikkarten auĂerhalb von Spielen, Rendering oder ML-Aufgaben hĂ€ufig ungenutzt bleiben. Beispielsweise können 8â12 GB VRAM einer Desktop-GeForce-Grafikkarte vorĂŒbergehend in eine zusĂ€tzliche Auslagerungsschicht fĂŒr rechenintensive Kompilierungs-, Datenverarbeitungs- oder StartvorgĂ€nge umgewandelt werden. virtuelle Maschinen.
EinschrÀnkungen
NBD-VRAM ist kein Ersatz fĂŒr RAM. Der Zugriff auf diesen Auslagerungsspeicher erfolgt ĂŒber folgende Kette: Kernel-Swap â /dev/nbdX â NBD-Treiber â Unix-Socket â Daemon â CUDA-Kopie â VRAM. Daher unterscheiden sich Latenz und Verhalten von echtem RAM. Es handelt sich eher um eine Ausweichlösung oder Zwischenschicht zwischen RAM und SSD als um eine Möglichkeit, den Arbeitsspeicher ohne Nachteile zu erweitern.
Das Projekt benötigt auĂerdem den offiziellen CUDA-Stack von NVIDIA. Nouveau/Nova sind dafĂŒr nicht geeignet, da sie libcuda.so.1 benötigen. Phoronix auch vermerktNBD-VRAM ist speziell fĂŒr NVIDIA-GPUs fĂŒr Endverbraucher konzipiert, bei denen alternative AnsĂ€tze ĂŒber die NVIDIA P2P API nicht funktionieren.
Letztendlich ist NBD-VRAM ein kleiner, aber interessanter Systemhack fĂŒr LinuxEs vollbringt keine Wunder und ersetzt keine RAM-AufrĂŒstung, ermöglicht aber die Nutzung des ungenutzten Videospeichers als zusĂ€tzlichen Auslagerungsspeicher vor der SSD. Bei Laptops mit fest verlötetem Speicher und dedizierter RTX-Grafikkarte kann dies eine praktische Möglichkeit sein, Lastspitzen abzufangen, ohne dass es zu sofortigen ProgrammabstĂŒrzen oder zu schmerzhaften Datenverlusten durch ein langsameres Laufwerk kommt.
Source: linux.org.ru
