The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Google предложил Device Memory TCP для сетевой передачи данных между устройствами, opennews (??), 13-Июл-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (1), 13-Июл-23, 12:11 
Разве rdma не этим занимается?
Ответить | Правка | Наверх | Cообщить модератору

3. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (3), 13-Июл-23, 12:15 
А разве RDMA  уже научили из видеопамяти GPU данные передавать? Для RDMA нужно вначале скопировать данные из памяти акселератора в общую память, а именно этого и пытается избежать Google.
Ответить | Правка | Наверх | Cообщить модератору

5. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Страдивариус (?), 13-Июл-23, 12:38 
Эти две памяти в одном адресном пространстве. Какая RDMA разница?
Ответить | Правка | Наверх | Cообщить модератору

8. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (8), 13-Июл-23, 13:00 
А нынче память PCI устройств мапится прямиком в линейное адресное пространство? Там же вроде не всё так просто было вроде.
Ответить | Правка | Наверх | Cообщить модератору

14. "Google предложил Device Memory TCP для сетевой передачи данн..."  –1 +/
Сообщение от Unnamed Player (?), 13-Июл-23, 13:11 
DMA этим и занимается.
Ответить | Правка | Наверх | Cообщить модератору

22. "Google предложил Device Memory TCP для сетевой передачи данн..."  –1 +/
Сообщение от Аноним (22), 13-Июл-23, 13:25 
для PCI нету DMA, зато есть bus mastering.
Ответить | Правка | Наверх | Cообщить модератору

51. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (51), 13-Июл-23, 15:48 
Щито? У PCI DMA есть и прекрасно работает (как бы иначе им, например, сетевыми пользовались, или они в твоём мире на на PCI шине висят?). Более того, на базе p2p dma работает майковский direct storage для игруль (там, правда, dma между nvme и gpu).
Ответить | Правка | Наверх | Cообщить модератору

84. "Google предложил Device Memory TCP для сетевой передачи данн..."  +1 +/
Сообщение от Аноним (84), 14-Июл-23, 01:35 
> для PCI нету DMA, зато есть bus mastering.

Вот те раз - кто это DMA у него с314дил? А bus mastering это возможность со стороны девайса транзакции инициировать - передавая данные например в другой девайс без участия системного проца в этом. При такой инверсии ролей вопрос DMA оказывается на другой стороне... и у GPU например есть свои нехилые DMA-движки на его стороне, на такие случаи и много что еще, оффлоадящие основной массив от уделения внимания шине.

Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

90. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Анонним (?), 14-Июл-23, 10:34 
напомню - что DMA controller - это был контроллер на материке подключенный к ISA шине. Который выполнял сам арбитраж шины - для передачи девайс<>память, девайс<>девайс.
в реалиях PCI v2.0+ - централизованного контроллера не существует (с некоторым натягом IO-AT можно считать таковым) - поэтому каждой карте предлагается как-то реализовывать арбитраж самому через режим bus mastering.

Так что эта.. просьба показать DMA controller централизованный в районе PCI root complex - который выполняет теже функции что и старый на ISA. И в PCI spec нету ничего с DMA, зато есть bus mastering. То что через этот режим можно обращаться напрямую в память - ничего не меняет.

Ответить | Правка | Наверх | Cообщить модератору

99. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (-), 14-Июл-23, 15:12 
> напомню - что DMA controller - это был контроллер на материке подключенный
> к ISA шине. Который выполнял сам арбитраж шины - для передачи
> девайс<>память, девайс<>девайс.

Напомню что многие PCI железки сейчас являют собой нефиговый программно аппаратный комплекс, с своим софтом, процами, памятью и адресными пространствами, а то и VM/paging/mmu, и чем там еще. И в этом смысле DMA может быть и с их стороны, в том смысле что оно не отвлекается на каждую операцию с шиной - а заряжает такой же хардварный автомат со своей стороны, и дальше тот интерфейс шины секвенсит все как надо для вон того сам, так что процы железки не отвлекаются на каждый дерг PCI. Это тоже DMA - с другой стороны и другим контроллером. А хост об этом вообще может ничего не знать, единственный критерий чтобы это все не было внезапностью.

> в реалиях PCI v2.0+ - централизованного контроллера не существует (с некоторым натягом
> IO-AT можно считать таковым) - поэтому каждой карте предлагается как-то реализовывать
> арбитраж самому через режим bus mastering.

PCI уже давно не 2.0 да и вообще Express обычно - и там все стало немного сложнее. Но многие понятия остались.

> Так что эта.. просьба показать DMA controller централизованный в районе PCI root

DMA контроллеру вообще не обязательно быть в конкретном месте. В типовой системе PCI девайсы висят как регионы памяти в системе, системный DMA может в эти регионы лазить не хуже чем в остальное. Где этот DMA технически находится и как это по факту реализовано в железе - а какая разница? Соврменных систем где нет DMA <-> PCI я не знаю, такие потоки никто в здравом уме без DMA ворочать не станет.

А вон то про "инверсный" вариант фокуса, когда железка делает на своей стороне оффлоад своим транзакциям, своим DMA контроллером.

> complex - который выполняет теже функции что и старый на ISA.

ISA на PCI вообще не особо похож, расскажите вон тому MIPS с MINI-PCI слотом про нее? А PCI - и DMA там таки есть. И на вон том арме с PCIe сразу из проца - аналогично. И если б оно DMA не умело это был бы ацкий эпикфейл по перфомансу. Так что система без DMA но с PCI - может и возможна теоретически в какой-то ультра минимальной реализации но практически я ни разу такое не встречал.

> И в PCI spec нету ничего с DMA, зато есть bus  mastering.

А почему PCI spec должен рассказывать платформе как DMA имплементить? Там в общем случае вывешивают железку как регион памяти - ну а дальше DMA и платформа уже как-нибудь сами разбираются как это. Если вы хотите сказать что теоретически возможна имплементация PCI без DMA контроллера в систему - ну, может быть. Практически я однако такого позора ни разу не видел. Даже на очень мелких платформах. Если железка достаточно большая чтобы PCI(-e) отрастить там гарантированно есть и какие-то DMA контроллеры и они ессно могут с PCI работать, иначе толку с такого PCI...

> То что через этот режим можно обращаться напрямую в память
> - ничего не меняет.

А ничего что это тоже получается DMA по смыслу, хоть и иными средствами? DMA означает всего лишь direct memory access. Как именно и чем этот access реализуется - да возможно дочерта вариантов на самом деле. А DMA лишь собирательное название группы технологий где доступ к памяти случется без участия проца.

Ответить | Правка | Наверх | Cообщить модератору

103. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 18:57 
> Это тоже DMA - с другой стороны и другим контроллером. А хост об этом вообще может ничего не знать, единственный критерий чтобы это все не было внезапностью.

В спецификациях - данных режим называется bus mastering. Ибо доступом к памяти он не ограничивается. Если считаете иначе - просьба предоставить линк на мануал по PCI / PCIe шине где это написано. И обсудим.


>DMA контроллеру вообще не обязательно быть в конкретном месте. В типовой системе PCI девайсы висят как регионы памяти в системе, системный DMA может в эти регионы лазить не хуже чем в остальное. Г

Системный DMA ? это какой? - линк на доку в студию. Так что бы там это называлось именно DMA. Если это о IO-AT - спасибо, посмеялся с его пропускной способности.

>PCI уже давно не 2.0 да и вообще Express обычно - и там все стало немного сложнее. Но многие понятия остались.

не многие а все. Если говорить о логической организации шины и транзакциях при передачи.

> А ничего что это тоже получается DMA по смыслу, хоть и иными средствами?  

А ничего что у этого режима есть свое название. Тем более он работает не только с памятью.

Ответить | Правка | Наверх | Cообщить модератору

113. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (-), 16-Июл-23, 01:31 
> В спецификациях - данных режим называется bus mastering. Ибо доступом к памяти
> он не ограничивается.

Не отменяет возможность устройств лезть в память. Поэтому...

> Если считаете иначе - просьба предоставить линк на
> мануал по PCI / PCIe шине где это написано. И обсудим.

Согласно википедии,

Direct memory access (DMA) is a feature of computer systems that allows certain hardware subsystems to access main system memory independently of the central processing unit (CPU).
PCI bus mastering - так может. Значит попадает под определение DMA. В этом определении нет абсолютно ничего про ISA, конкретный контроллер или что либо еще. Только доступ к системной памяти в обход системного проца. Что хотите то с этим и делайте.

> Системный DMA ? это какой? - линк на доку в студию.

Это тот который есть в системе. Конкретика может дико варьироваться от системы к системе. PCI вообще платформенно-нейтральная штука и существует много где. Платформ где был бы PCI но не было бы DMA контроллера для разгрузки проца "с другой стороны" - я не знаю. Они теоретически возможны но даже так bus mastering останется формой DMA.

> Так что бы там это называлось именно DMA. Если это о IO-AT
> - спасибо, посмеялся с его пропускной способности.

Нет, это не про IO-AT. В самом общем виде я имхо согласен с викой на тему определения что вообще есть DMA. А как оно там в конкретном случае реализовано - да какая разница.

> не многие а все. Если говорить о логической организации шины и транзакциях
> при передачи.

Электрически однако он совсем другой. И штуки типа MSI в PCI - не помню, были ли вообще изначально? По-моему нет.

> А ничего что у этого режима есть свое название. Тем более он
> работает не только с памятью.

Не отменяет того факта что это тоже вид DMA. Кто сказал что DMA обязан иметь что-то общее с ISA или каким-то конкретным контроллером?

Ответить | Правка | Наверх | Cообщить модератору

21. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 13-Июл-23, 13:24 
если устройство экспортит память в BAR - то да, в линейное адресное пространство.
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

95. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Страдивариус (?), 14-Июл-23, 13:21 
> А нынче память PCI устройств мапится прямиком в линейное адресное пространство? Там
> же вроде не всё так просто было вроде.

Нынче? Ну же лет как двадцать. Бывали времена, когда на некоторых железках в адресное пространство CPU торчало только окно из всей памяти устройства и надо было выбирать в какой регион памяти на железке это окно отображается. Я могу ошибаться, но сейчас этим уже никто не занимается, по крайней мере на мощных железках, у которых дохрена памяти на борту.

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

91. "Google предложил Device Memory TCP для сетевой передачи данн..."  +1 +/
Сообщение от ebanyrust (?), 14-Июл-23, 11:32 
> Разве rdma не этим занимается?

разница в деталях - для RDMA используются специальные сетевые протоколы и работают они минуя сетевой стек ядра, гугловский подход намного универсальней - работает с ядрёным TCP/IP

> Данные загружаются из памяти устройства в payload-буфер сетевой карты при помощи механизма dmabuf, а заголовки переносятся из основной памяти и заполняются системным TCP/IP-стеком.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

94. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от An2 (?), 14-Июл-23, 12:58 
> для RDMA используются специальные сетевые протоколы ... гугловский подход намного универсальней ...
> Ожидается, что Device memory TCP позволит существенно поднять эффективность взаимодействия ...

Обычно "специальные" означает сложнее/неудобнее, но эффективнее чем "универсальные". Как же гуглу удалось обойти этот принцип?

Ответить | Правка | Наверх | Cообщить модератору

96. "Google предложил Device Memory TCP для сетевой передачи данн..."  +1 +/
Сообщение от ebanyrust (?), 14-Июл-23, 13:28 
> Как же гуглу удалось обойти этот принцип?

payload загружается через DMA, заголовок обрабатывается центральным процессором - что непонятно в этом принципе ? полезных данных на порядки больше чем служебных данных из заголовка. На таком же принципе весь dmabuf - буфер с данными для аппаратного DMA + служебная информация для CPU.

Ответить | Правка | Наверх | Cообщить модератору

98. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 14:52 
не понятно все. Никто кроме Mellanox такой финт ушами сделать не даст.
Для передачи можно делать, для приема - нет.
Ответить | Правка | Наверх | Cообщить модератору

102. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от ebanyrust (?), 14-Июл-23, 15:40 
> Никто кроме Mellanox такой финт ушами сделать не даст.

гугли NIC with Header Data Split, подозреваю что с 10Gb все поддерживают

Ответить | Правка | Наверх | Cообщить модератору

104. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 19:07 
Нужен не просто Header Data Split, в том то и дело.
Split означает что ты ложишь заголовок в один буфер - а данные в другой. И дальше идут 2 фрагмента по стеку. Так умеет очень большое количество карт которые умеют TCP recv offload.
А для этого режима нужно слегка больше - более похожее на режим работы в Infinityband.

Ты регистрируешь буфер в сетевой карте и связываешь его с неким идентификатором - и ровно в этом буфере окажутся данные которые туда пришли. Не в произвольном буфере с разделением на header & data. А надо вот в этом конкретный. Это и мешает иметь нормальный zero-copy для приема данных - ибо на момент заполнения буфера - еще не ясно куда его ложить.

Опять же - https://fosdem.org/2023/schedule/event/meta_netdevices/attac...

Слайды 31+ TCP ZC и тп - POC для меланокса а не для всех кого можно.

Ответить | Правка | Наверх | Cообщить модератору

106. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от ebanyrust (?), 14-Июл-23, 19:53 
> А для этого режима нужно слегка больше - более похожее на режим работы в Infinityband.

не надо усложнять

https://lore.kernel.org/lkml/20230710223304.1174642-1-almasr.../

> * NIC dependencies:

1. (strict) Devmem TCP require the NIC to support header split, i.e. the
   capability to split incoming packets into a header + payload and to put
   each into a separate buffer. Devmem TCP works by using dmabuf pages
   for the packet payload, and host memory for the packet headers.

2. (optional) Devmem TCP works better with flow steering support & RSS support,
   i.e. the NIC's ability to steer flows into certain rx queues. This allows the
   sysadmin to enable devmem TCP on a subset of the rx queues, and steer
   devmem TCP traffic onto these queues and non devmem TCP elsewhere.

The NIC I have access to with these properties is the GVE with DQO support
running in Google Cloud, but any NIC that supports these features would suffice.
I may be able to help reviewers bring up devmem TCP on their NICs.

кроме обязательной поддержки header split автор ничего не говорит

Ответить | Правка | Наверх | Cообщить модератору

107. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 23:11 
да я и неусложняю. Просто так получилось что в этой теме пришлось покопаться достаточно плотно.
Ибо стояла задача поиметь нормальный TCP ZС. Но перелопатив кучи кода и спецификаций - стало понятно что это очень ограничивает набор железа который можно будет использовать.
Хотя я думаю линки на более или менее новые презентации из linux net - должны были вас убедить.


В некотором смысле - да, header split хватит. Когда ты наоборот из адреса буфера получишь адрес внутри GPU и будешь использовать в своей программе. Этакое убогое решение ибо прийдется держать под буфера достаточно много памяти и потом пытаться объединить эти куски в последовательные данные.
Но не о какому удобстве работы который дает GPUfs / GDS (Nvidia) - речи уже не идет.


PS. что люди не придумают лишь бы RoCE v2 не использовать - который это режим даст штатно.
PPS. TCP в этом месте это тихий ужас. Окошко маленькое - reorder пакетов на раз - два, или прийдется отключить selective/delayed ack.

Ответить | Правка | Наверх | Cообщить модератору

115. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (115), 16-Июл-23, 12:08 
> Но не о какому удобстве работы который дает GPUfs / GDS (Nvidia) - речи уже не идет.

то что гугловский патч использует стандартные ядерные интерфейсы вместо вендор-костылей огромный плюс - видимо вендор лок винтеля вас ничему не научил, кактус nvidia кажется слаще  но это ведь до определённой поры.

Ответить | Правка | Наверх | Cообщить модератору

116. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (116), 16-Июл-23, 12:29 
Nvidia дает нормальный POSIX API для работы с файлами из GPU программ. что позволяет обрабатывать на GPU объемы больше чем память GPU с минимальным простоем. И когда ваш GPU будет стоять и ждать пока вы прочитаете данные и закачаете потом их в память - дабы как-то обработать, GDS закончит обрабатывать весь объем.
Привет тормозам :-)

PS. ты видимо не в курсе что такое GDS и чем он облегчает жизнь.

Ответить | Правка | Наверх | Cообщить модератору

117. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (115), 16-Июл-23, 12:38 
> Nvidia дает нормальный POSIX API для работы с файлами из GPU программ

они так же дают eglstream, только он никому не нужен

> ты видимо не в курсе что такое GDS и чем он облегчает жизнь

обычный вендорлок, не удивительно что тут за меланокс топят и не понимают почему гугл универсальные интерфейсы использует - он ведь уже нвидии принадлежит и это один большой сладкий кактус

Ответить | Правка | Наверх | Cообщить модератору

109. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 23:22 
pps. я ниже кидал ссылки на работы Facebook по той же теме. Там тоже завязка на CX4+.
наверно не спроста ?
Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

105. "Google предложил Device Memory TCP для сетевой передачи данн..."  +/
Сообщение от Аноним (22), 14-Июл-23, 19:09 
если глянуть в более ранную публикацию
https://netdevconf.info/0x14/pub/slides/62/Implementing%...
Ability for a NIC to dissect packets and place header and
data into separate places.
Not all NIC implement header-data split, unfortunately.
Google has for instance a fair amount of servers using Mellanox CX-3 (mlx4)

Опять Mellanox.

Ответить | Правка | К родителю #102 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру