Рубрики
Без категории

RDMA как потерянная абстракция

Когда я мысленно представляю себе сетевое общение двух программ, то автоматически в голове проносится TCP, IP, сокеты и другая специфика такого взаимодействия. И невольно ловлю себя на мысли — почему мои программы должны знать обо всех этих сложностях.

Скажем, простая операция по выборке данных из СУБД. Я со своей стороны подготовил и описал структуру и содержание искомых данных, по сути этим является SQL-запрос. Она их подготовила и вот они лежат в одном из буферов адресного пространства её памяти. Казалось бы, надо просто перенести их мне. Но тут на сцене появляется дополнительный протокол, который закодирует их в другую бинарную форму, снабжённую метаинформацией. Та, в свою очередь, упаковывается в какие-то пакеты, передаётся через замысловатые сокеты, знание о которых только усложняет картину мира и нарушает слабую связанность.

TODO: Ведь этот же принцип работал хороше и раньше. Был shared memory как инструмент IPC. Ну и, конечно, устройства могли между собой взаимодействовать через DMA без участия процессора. Что логично. Он предназначен для вычислений.

TODO: DMA. По сути, мы можем говорить о двух принципах — состоянии и истории (named pipes/unix sockets). Где-то я это обсуждение уже затевал.

TODO: Infiniband, NVMe to GPU.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *