Видеопамять — в мирных целях

Алексей Федорчук

В давние времена, когда объём памяти видеокарт превысил первые десятки мегабайт, необходимые и достаточные для вывода любых достижимых на тогдашних мониторах разрешений и любой теоретически возможной глубины цвета, люди задумались: а нельзя ли пристроить эту самую память к какому-либо делу, более полезному, нежели хранение текстур для игрушек? Тем более, что линуксоиды тогда народ был всё больше суриозный, и в игрушки не играли. Да и не было их, игрушек под Linux. А под выньдой играть… это на любителя.

Размышлениями дело не ограничивалось — были и совершенно реальные решения. Поскольку видеопамять, с одной строны, всегда была быстрее обычной, а с другой — потенциально была более «ошибочной», решения эти, насколько я знаю, в основном сводились к размещению в ней дополнительного swap-раздела. Я достоверно не знаю, давало ли это что-то практически по части быстродействия (у самого руки так и не дошли попробовать), но, по крайней мере, достигшим цели применителям не было мучительно стыдно за бесцельно простаивающие мегабайты (а в последующем и гигабайты).

Затем острота проблемы как-то притупилась. С одной стороны, появление сначала «материнского», а потом и процессорного видео позволило тем, кому дискретная видеокарта была категорически не нужна (например, автору этих строк), обходиться без неё. С другой — в большинстве «настольных» ситуаций потерял практический смысл и swap.

Однако мысль человеческая не дремала. Рост «ошибкоустойчивости» видеопамяти подсказал ей, что VRAM можно использовать для чего-нибудь более важного, нежели своппинг. Даже, страшно сказать, для манипуляции пользовательскими данными. Тем более что объём памяти вполне потребительских видеокарт сравнялся с RAM типовых ноутбуков и офисных офисных компьютеров, а подчас и превзошёл их. И в результате родился проект vramfs.

Интересно, что файл README.md, представляющий собой описание проекта, начинается словами:

Unused RAM is wasted RAM, so why not put some of that VRAM in your graphics card to work?

Которые я перевёл бы так:

Неиспользуемая память — что её нет. Так почему бы не припахать по делу память видеокарты?

Идея vramfs — примерно такая же, что и у давно известной и созвучной по имени ramfs: создание блочного устройства в памяти и его монтирование в файловую иерархию. С той разницей, что в данном случае вместилищем устройства служит не системная память машины, а память видеокарты, доступ к которой осуществляется посредством OpenCL. А также той, что vramfs, в отличие от просто ramfs, существует в пользовательском пространстве, что обеспечивается библиотекой FUSE.

Впрочем, о технических деталях говорить не буду — всё достаточно подробно написано в вышеупомянутом README.md. А коснусь практических следствий, которые эта система может иметь для нас, применителей.

Производительность vramfs её разработчик, Александер Овервоорде (Alexander Overvoorde — см. его профиль на GitHub) оценивает как втрое более низкую, чем стандартной ramfs. Однако, учитывая физический потенциал видеопамяти, строит далеко идущие планы, вплоть до поддержки RAID-подобных массивов из двух карт, соединённых по SLI или Crossfire. То есть нельзя исключить, что это будут самые быстрые из существующих носителей информации. Правда, для чего их можно применить на практике — мне пока не очень ясно.

Однако впервые за последние десять лет я пожалел об отсутствии дискретной видеокарты — поэкспериментировать с vramfs было бы интересно. А там, глядишь, и мысли появились бы по поводу использования её в мирных целях…

Оставить комментарий

Перейти к верхней панели