Как использовать DMA или RDMA в Java? - PullRequest
8 голосов
/ 19 октября 2011

«DMA» здесь означает: прямой доступ к памяти, а «RDMA» - удаленный прямой доступ к памяти.

Я использовал Java для создания приложения для передачи биржевых данных, но обнаружил, что задержка больше, чем я ожидал. Я слышал, что кто-то разработал приложение такого же типа, использующее "DMA / RDMA", которое имеет хорошую производительность, поэтому мне интересно, могу ли я использовать "DMA / RDMA" в Java?

Если нет, какой язык мне использовать, и если есть какие-нибудь хорошие библиотеки для использования?

Ответы [ 6 ]

6 голосов
/ 19 октября 2011

В этой статье , написанной разработчиками IBM, представлен отличный обзор того, как можно получить доступ к DMA с помощью Java

3 голосов
/ 24 февраля 2016

У вас есть два варианта (о которых я знаю):

  1. Java SDP - устарело
  2. JXIO [1], высокопроизводительная библиотека сообщений, построенная на RDMA и поддерживаемая Mellanox

[1] https://github.com/accelio/JXIO

2 голосов
/ 09 августа 2016

Существует DiSNI , новая библиотека для программирования RDMA на Java. DiSNI - это открытый вариант IBM jVerbs. Вот некоторые показатели производительности здесь , которые показывают, как RDMA с Java сравнивается с сокетами в C и Java, а также с RDMA в C.

1 голос
/ 19 октября 2011

Java-приложения могут создавать файлы через пакеты nio.Эти mmaped файлы могут быть доступны для нескольких программ - я боюсь, что это закрывает доступ к DMA, доступному в java

1 голос
/ 19 октября 2011

RDMA, поскольку я знаю, что это свойство сетевой инфраструктуры (вместе с соответствующими модулями ядра и т. Д.), А не языка программирования уровня приложения.

Другими словами, вам нужно получитьспециализированный набор для использования RDMA для уменьшения задержки в сети.Вот пример сетевой карты 10GbE, которая поддерживает RDMA: link .

0 голосов
/ 05 марта 2015

Java 7 поддерживает протокол SDP в Solaris и Linux (с драйверами OpenFabrics.org).К сожалению, протокол SDP устарел в версии 2.x OFED.Люди прибегают к JNI-оболочкам, как jVerbs.

...