Расширение системной памяти через подкачку в видеопамяти NVIDIA

Опубликован инструментарий nbd-vram, позволяющий разместить область подкачки в видеопамяти графической карты NVIDIA. Подобный манёвр даёт возможность виртуально увеличить размер памяти в системе, работающей на ноутбуках с впаянной нерасширяемой оперативной памятью и GPU NVIDIA. Код написан на языке Си и распространяется под лицензией MIT.

Например, на ноутбуке с 16 ГБ ОЗУ и видеокартой NVIDIA GeForce RTX/GTX с 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, драйвер NVIDIA с библиотекой libcuda.so.1 (установка CUDA Toolkit не требуется), ядро Linux новее 3.0 и пакет nbd-client.



Источник: http://www.opennet.ru/opennews/art.shtml? num=65612

©  OpenNet