Разработчики опубликовали инструментарий nbd-vram, который позволяет разместить область подкачки в видеопамяти графической карты Nvidia. Это даёт возможность виртуально увеличить размер памяти в системе, работающей на ноутбуках с впаянной нерасширяемой оперативной памятью и GPU Nvidia.
Код написан на языке Си и распространяется под лицензией MIT.
Так, на ноутбуке с 16 ГБ ОЗУ и видеокартой Nvidia GeForce RTX 3070 с 8 ГБ VRAM через раздел подкачки можно задействовать дополнительные 7 ГБ памяти. В итоге вместе с применением модуля ядра zram для сжатого хранения раздела подкачки и подключением дополнительного раздела подкачки на SSD-накопителе общий размер адресуемой памяти в тестовой конфигурации дойдёт до 46 ГБ. Производительность работы с видеопамятью при последовательном чтении оценивается примерно в 1.3 GB/s и задержками ниже NVMe из-за обращения к GPU по шине PCIe.
Инструмент применяет фоновый процесс nbd-vram, который выделяет VRAM через API драйвера CUDA и предоставляет системе доступ к полученной видеопамяти в форме блочного устройства на базе протокола NBD (Network Block Device). В ядре Linux используется встроенный драйвер nbd без загрузки собственных специализированных модулей. В блочном устройстве /dev/nbdX, связанном с выделенной видеопамятью, штатными утилитами создаётся раздел подкачки.
Инсталлятор и сервис systemd «vram-swap-nbd.service» позволяют запустить конфигурацию автоматически. Пользователю достаточно задать размер выделяемой видеопамяти и приоритет подкачки через переменные VRAM_SETUP_SIZE_MB и VRAM_SWAP_PRIORITY. Дополнительно предусмотрена опция для активации подкачки в видеопамяти только при подключении ноутбука к стационарному источнику питания.
Для работы nbd-vram требуется графический процессор Nvidia c поддержкой CUDA, фирменный драйвер с библиотекой libcuda.so.1, ядро Linux новее 3.0 и пакет nbd-client.
ссылка на оригинал статьи https://habr.com/ru/articles/1043912/