LINUX.ORG.RU
Форум — Talks  

Разрабатываемое ядро Linux 7.4 теперь умеет работать с NVMe носителями без задействования RAM

 , , ,


0

2

Собственно, сабж: https://www.phoronix.com/news/DMA-BUF-IO-uring-Linux-7.4 .

Сегодня в рамках продолжающегося окна слияния для ядра Linux 7.4 был добавлен инфраструктурный код, обеспечивающий поддержку DMA-BUF в механизме ввода-вывода ядра с использованием замечательного фреймворка IO_uring.
...
Павел Бегунков, руководивший процессом внесения правок на протяжении одиннадцати этапов их рассмотрения, пояснил суть новой функциональности: «Это опциональная возможность для файлов, для использования которой необходимо реализовать новую файловую операцию. В данной серии патчей поддерживаются только блочные устройства NVMe. Пользовательский API построен на базе механизма «зарегистрированных буферов» (registered buffers) в `io_uring`: объект `dmabuf` регистрируется особым образом, после чего его можно использовать так же, как и любой другой «зарегистрированный буфер», посредством запросов `IORING_OP_READ_FIXED` или `IORING_OP_WRITE_FIXED`. Буфер создается через новую файловую операцию, а полученное отображение (map) передается через стек ввода-вывода с помощью нового типа итератора. Также предусмотрена дополнительная инфраструктура, обеспечивающая связность компонентов, подсчет запросов, управление жизненным циклом и механизм аннулирования (инвалидации) данных».

Теперь можно, например, поместить модель ИИ сразу в GPU, не тратя ресурсы на помещение её в RAM и последующее копирование её оттуда в GPU.

★★★★★

Хорошо, полезно.

Только вот это же требует именно поддержки в коде. Оно само по себе не плохо, но есть опасение, что в итоге это приведёт к возникновению софта, который свои данные может читать только с NVMe, а с других накопителей (пускай и медленно) — хрен. Меньше универсальности. Остаётся только надеяться на разумность софтописателей и наличие поддержки и того и другого там, где это требуется.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Думаю сделают в виде библиотеки, которая сама будет выбирать механизм чтения в зависимости от возможностей железа. Это было бы логично.

Loki13 ★★★★★
()

ещё быстрее чем с PCI BAR Memory Mapping? GPU то про это в курсе?

сейчас как-то так:

DMA (device → RAM):
  Device --[DMA addr]--> IOMMU --[phys addr]--> RAM

MMIO (CPU → device):
  CPU --[phys addr]--> PCIe --[reaches device, not RAM]

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)

Спустя 100500 лет линуксоеды изобрели DirectStorage. Минусы всё те же: если у тебя какая-никакая сложная ФС, всё сразу разваливается. Соответственно, нужно заморачиваться и хранить целевые данные на диске единым куском.

yorshka
()
Ответ на: комментарий от yorshka

ну или даже так. В любом случае проблема решаема как не в рамках фс, так и механизмами в некоторых фс

mittorn ★★★★★
()

Дыры там будут находить годами. Но там где это надо на это пофиг, а всем остальным лучше выключить как и io_uring

cobold ★★★★★
()
Ответ на: комментарий от mittorn

ну или даже так. В любом случае проблема решаема как не в рамках фс, так и механизмами в некоторых фс

Да конечно решается, кто бы спорил. Штука только в том, что тебе надо готовить специальный диск под это всё дело, причём для долгосрочного хранения этот диск подходить не будет.

Кстати, под вендой DirectStorage не особо популярен стал. Его только на XBox плюс-минус активно юзают, но там своя особая атмосфера, понятное дело.

yorshka
()
Ответ на: комментарий от yorshka

На линуксах возможно ещё будут нейронки грузить таким образом. А в остальном это больше фича для игровых соснолей

mittorn ★★★★★
()
Ответ на: комментарий от yorshka

Кстати, под вендой DirectStorage не особо популярен стал.

Ресурсы в играх сжатые, с DirectStorage распаковкой занимается видюшка. На ПК же обычно нет проблем выделить несколько гигов оперативки под распаковку и циклы процессора, даже в играх с упором в cpu. А вот доп. нагрузка на видюшку часто лишняя.

altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от MoldAndLimeHoney

А когда будет как на Маке, чтобы 8Гб работало как 16 за счет ссд?

Я не знаю, как на Маке, но звучит как… Swap…

CrX ★★★★★
()

они открыли DMA !!
помнится давным-давно на микроконтроллере использовал дма-канал для пересылки данных с АЦП на ЦАП минуя память для теста… потом переделал чтоб программа не использовалась вообще, чисто аппаратные модули. мейн-функция представляла собой набор инициализации модулей и стоп. показал програмисту, тот сказал что так делать нельзя, ибо программы нет, а значит чтото там по теории неправильно…

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от CrX

Я не знаю, как на Маке

Что значит не знаю? ) Тема была громкой, хайповой, и на ЛОРе ее тоже яростно обсуждали, когда, в 2023, кто-то из руководства яблока заявил:

Компания Apple не перестаёт говорить о превосходстве своих компьютеров с фирменными чипами M-серии над решениями конкурентов. Вице-президент компании утверждает, что 8 ГБ оперативной памяти в новых ноутбуках MacBook Pro вовсе не проблема, поскольку на «маках» память работает иначе, чем на других системах.

krasnh ★★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от pfg

дма-канал для пересылки данных с АЦП на ЦАП минуя память для теста…

А мне запомнилось, что DMA изобрели для того чтобы передавать данные минуя процессор, а не память, причём копировать как раз в память. Отсюда и название: отдельный контроллер, который освобождает процессор от примитивных но лавинообразных операций копирования.

gag ★★★★★
()

работать с NVMe носителями без задействования RAM

Кстати, на phoronix не единожды наталкивался на посты, начинающиеся с формулировки «В условиях сегодняшних очень высоких цен на память» и рассказывающих о доработках кода, позволяющих еще более эффективней использовать память.
Примета нашего времени. )


Meta разрабатывает сжатую оперативную память (CRAM) для Linux: лучше, чем ZRAM и Zswap

В Linux переработана технология ZRAM для большей экономии памяти и повышения производительности

krasnh ★★★★★
()
Ответ на: комментарий от krasnh

Вице-президент компании утверждает, что 8 ГБ оперативной памяти в новых ноутбуках MacBook Pro вовсе не проблема, поскольку на «маках» память работает иначе, чем на других системах.

Ясно. Спасибо.

Дело в том, что я подобный маркетинговый булшит не запоминаю. Может и видел. Но подобное балабольство — такой привычный фон, что конкретика оного не всегда оседает в памяти :)

CrX ★★★★★
()

Теперь можно, например, поместить модель ИИ сразу в GPU, не тратя ресурсы на помещение её в RAM и последующее копирование её оттуда в GPU.

Уже придумали HBF (High Bandwidth Flash) память как альтернатива HBM для инференса моделей. Первое поколение это чипы объемом от 0.5TB до 4TB и пропускной способностью от 0.4TB/s до 3.2TB/s, размер чипов вроде как один в один как HBM. Во втором поколении обещают удвоить пропускную способность, массовое производство обещают в 2028 году. Построены эти чипы на дешевой NAND. Ограничение естественно в том что запись медленная и циклы ограниченны. Но для LLM моделей это не играет ролей, даже для игр не играет роли загрузил один раз ресурсы какой-нибудь openworld игры в такую память и избавляешься от лагов подгрузки уровня/моделей/текстур так как они уже в памяти GPU.

V1KT0P ★★
()
Последнее исправление: V1KT0P (всего исправлений: 1)
Ответ на: комментарий от gag

да. начальная реализация такова и была - Direct Memory Acceses - прямой доступ (внешнего, относительно процессора, устройства) к памяти.
но потом поняли что это удобно и в других случаях передачи больших объемов данных, даже, к примерe из RAM в RAM и расширили функции DMA.

pfg ★★★★★
()
Ответ на: комментарий от pfg

Память-память - это ОК, ещё подходит к DMA. У меня вопрос к периферия-периферия без единого несколько-байтного буфера в памяти. И, да, RAM в микроконтроллере встроенная, но это по-прежнему память. Не припомню варианта периферия - 4-байтный RX регистр - 4-байтный TX регистр - периферия.

gag ★★★★★
()
Ответ на: комментарий от gag

регистр встроенного АЦП и встроенного ЦАП отображены на ram. так что технически это не периферия, это копирование ram-ram :)
обычно все регистры всех модулей и управляющие и значения микроконтроллера отображены на память. удобно.

помнится в мсп430(??) аппаратный перемножитель 32x32 также был отображен на память. записываешь в определенные адреса что типа "старшие16, младшие16 бит первого числа, старшие16, младшие 16бит второго числа. По записи в младшие 16 бит второго числа (это определенный адрес памяти) запускается перемножитель, далее ждешь сколько там тактов и считываешь результат…

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от gag

Это было давно. Потом контроллер памяти переехал в процессор и технически теперь данные бегают так же через процессор. Если только не через процессорные ядра

cobold ★★★★★
()
Ответ на: комментарий от CrX

маркетинговый булшит

Ну, там не все так однозначно. Когда на ЛОРе ругали обсуждали этот «маркетинговый булшит», были и комменты, подтверждающие правдивость:

У меня приятель владеет 8гб МакБук Про, говорит в точности то же самое. Он не ламер, стаж в IT 30 лет, способен поставить и настроить Генту, так что я его суждениям доверяю. Утверждает что да, органолептически ощущается как его предыдущий мак с 16гигами. Он на нём фотошопствует, монтирует видео и немножечко играет. Предполагает что это из за сжатия, типа zram с бакендом на ssd, быстрого многопоточного ввода\вывода на SSD и общей оптимизации системы.
Есть ли на ЛОР-е адепты яблочных ноутбуков? (комментарий)


Я полазил по ссылкам на phoronix, которые выше дал про CRAM, в комментах тоже народ зацепился на сравнениях с макбуком. Как я понял из обсуждений, если конечно правильно понял,) у яблочников совсем другой ZRAM/ZSWAP, типа, с аппаратным ускорением сжатия/распаковки данных, когда процессор незадействован в этих операциях. Как это реализовано, хз.

krasnh ★★★★★
()
Последнее исправление: krasnh (всего исправлений: 3)
Ответ на: комментарий от gag

DMA изобрели для того чтобы передавать данные минуя процессор, а не память, причём копировать как раз в память

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

no-such-file ★★★★★
()
Ответ на: комментарий от krasnh

Как это реализовано, хз.

Как zswap с быстрым ssd. Дефолтные же ссд на винда-буках не то что под свап использовать нельзя, там просто одновременное копирование/чтение к фризам приводить может.

Необычность впечатлений происходит от не типичной комбинации очень низкого объема оперативки при отличным по скорости ссд.

altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 2)
Ответ на: комментарий от MoldAndLimeHoney

А когда будет как на Маке, чтобы 8Гб работало как 16 за счет ссд?

В 1991 году так будет.

vbr ★★★★★
()
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.