Опубликован инструментарий nbd-vram, позволяющий разместить область подкачки в видеопамяти графической карты NVIDIA. Подобный манёвр даёт возможность виртуально увеличить размер памяти в системе, работающей на ноутбуках с впаянной нерасширяемой оперативной памятью и GPU NVIDIA. Код написан на языке Си и распространяется под лицензией MIT.
Например, на ноутбуке с 16 ГБ ОЗУ и видеокартой NVIDIA GeForce RTX 3070 с 8 ГБ VRAM через раздел подкачки можно задействовать дополнительные 7 ГБ памяти. В сочетании с применением модуля ядра zram для сжатого хранения раздела подкачки и подключением дополнительного раздела подкачки на SSD-накопителе общий размер адресуемой памяти в тестовой конфигурации доведён до 46 ГБ (при нехватке ОЗУ начинает использоваться видеопамять, затем привлекается сжатие при помощи zram и на последнем этапе задействуется подкачка на SSD). Производительность работы с видеопамятью при последовательном чтении оценивается примерно в 1.3 GB/s и задержками ниже NVMe из-за обращения к GPU по шине PCIe.
Реализация основана на применении фонового процесса nbd-vram, который выделяет VRAM через API драйвера CUDA и предоставляет системе доступ к полученной видеопамяти в форме блочного устройства на базе протокола NBD (Network Block Device). В ядре Linux используется встроенный драйвер nbd без загрузки собственных специализированных модулей. После создания блочного устройства /dev/nbdX, связанного с выделенной видеопамятью, на нём штатными утилитами создаётся раздел подкачки.
Для автоматизации запуска конфигурации с nbd-vram подготовлен инсталлятор и сервис systemd "vram-swap-nbd.service". Настройка сводится к заданию размера выделяемой видеопамяти и приоритета подкачки через переменные VRAM_SETUP_SIZE_MB и VRAM_SWAP_PRIORITY. Имеется опция для активации подкачки в видеопамяти только при подключении ноутбука к стационарному источнику питания, позволяющая экономить энергию в автономном режиме. Для работы nbd-vram требуется NVIDIA GPU c поддержкой CUDA (например, серии GeForce RTX и GTX), драйвер NVIDIA с библиотекой libcuda.so.1 (установка CUDA Toolkit не требуется), ядро Linux новее 3.0 и пакет nbd-client.
Источник: https://www.opennet.ru/opennews/art.shtml?num=65612





