2011-10-19 16 views
6

"DMA" oznacza tutaj: Bezpośredni dostęp do pamięci, a "RDMA" to: zdalny dostęp do pamięci bezpośredniej.Jak korzystać z DMA lub RDMA w java?

Użyłem Java do utworzenia aplikacji do przesyłania danych giełdowych, ale stwierdziłem, że opóźnienie jest większe niż się spodziewałem. Słyszałem, że ktoś opracował tę samą aplikację typu "DMA/RDMA", która ma dobrą wydajność, więc zastanawiam się, czy mogę używać "DMA/RDMA" w Javie?

Jeśli nie, jakiego języka powinienem używać i czy istnieją dobre biblioteki do użycia?

Odpowiedz

1

RDMA, ponieważ wiem, że jest to właściwość infrastruktury sieciowej (wraz z odpowiednimi modułami jądra itp.), A nie języka programowania na poziomie aplikacji.

Innymi słowy, musisz uzyskać specjalistyczny zestaw, aby użyć RDMA w celu zmniejszenia opóźnień sieci. Oto przykład karty sieciowej 10GbE obsługującej RDMA: link.

1

Aplikacje Java mogą odtwarzać pliki mmaping za pośrednictwem pakietów nio. Te mmaped pliki można dostęp przez wielu programów - Mam się bać to zamyka rzecz do DMA dostępny w java

5

This artykuł z programistów IBM pracują dać wielki przegląd w jaki sposób dostęp DMA można osiągnąć przy użyciu języka Java

+1

W artykule pokazano, w jaki sposób zezwolić innym częściom systemu na wykonywanie DMA na danych tworzonych w języku Java i uzyskać zerowe kopiowanie danych. (Super, jeśli mnie pytasz.) – 9000

+0

@LordDoskias, dziękuję, zerocopy to dobra rada, spróbuję później – Freewind

+0

Cóż, aby uzyskać dostęp DMA jakiegokolwiek rodzaju, musisz polegać na bazowym systemie operacyjnym. Tak więc każda wersja JVM ma specyficzny dla platformy kod, który eksponuje tę możliwość za pomocą filechannel. Więc w pewnym sensie dostajesz wszystkie gadżety, które pochodzą z używania DMA – LordDoskias

0

Java 7 obsługuje protokół SDP w systemie Solaris i Linux (ze sterownikami OpenFabrics.org). Niestety protokół SDP został wycofany z wersji OFED w wersji 2.x. Ludzie używają opakowań JNI takich jak jVerbs.

1

Masz dwie opcje (które znam):

  1. Java SDP - została zaniechana
  2. JXIO [1], wysoką wydajność biblioteki wiadomości zbudowany na RDMA i wspierane przez Mellanox

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

1

jest DiSNI, nowe biblioteki do programu RDMA w Javie. DiSNI jest wariantem open source JVerbs IBM. Istnieją pewne numery wydajności here, które ilustrują porównanie RDMA z Javą do gniazd w językach C i Java, a także do RDMA w C.