8
votes

Comment utiliser DMA ou RDMA dans Java?

"DMA" ici signifie ici: Accès à la mémoire directe et "RDMA" est: Accès à la mémoire directe à distance.

J'ai utilisé Java pour créer une application pour transférer des données sur actions, mais j'ai trouvé que la latence est plus grande que prévu. J'ai entendu quelqu'un de développer la même application de type utilisée "DMA / RDMA", qui a de bonnes performances, alors je me demande si je peux utiliser "DMA / RDMA" en Java?

Sinon, quelle langue devrais-je utiliser et s'il y a de bonnes bibliothèques à utiliser?


0 commentaires

6 Réponses :


1
votes

RDMA Comme je sais que c'est une propriété de l'infrastructure de réseautage (ainsi que les modules de noyau concernés, etc.), non du langage de programmation au niveau de l'application.

En d'autres termes, vous devez obtenir un kit spécialisé pour utiliser RDMA pour réduire la latence du réseau. Voici un exemple de carte réseau 10GBE prenant en charge RDMA: Lien < / a>.


0 commentaires

0
votes

Les applications Java sont capables de fichiers de lamapage via des packages Nio. Ces fichiers de lamapés peuvent être accès par plusieurs programmes - j'effray Ceci ferme la chose à DMA disponible en Java


0 commentaires

6
votes

Cet article d'IBM Les développeurs travaillent donnent un excellent aperçu de la DMA L'accès peut être atteint en utilisant Java


3 commentaires

L'article montre comment permettre à d'autres parties du système d'exploitation de faire DMA sur des données créées Java et de réaliser des transferts de données zéro-copie. (Cool, si tu me le demandes.)


@Lorddoskias, merci, zérocopy est un bon conseil, je vais l'essayer plus tard


Afin de réaliser un accès DMA de tout type, vous devez compter sur le système d'exploitation sous-jacent. Donc, chaque version JVM dispose de code spécifique à la plate-forme qui expose cette capacité par le biais de moyens de Filechannel. Donc, dans un sens, vous obtenez toutes les friandises qui viennent d'utiliser DMA



0
votes

Java 7 prend en charge le protocole SDP sur Solaris et Linux (avec des pilotes OpenFabrics.org). Malheureusement, le protocole SDP a été obsolète dans la version 2.x de OFEED. Les gens ont recours à des wrappers Jni comme des joybs.


0 commentaires

3
votes

Vous avez deux options (que je connais de):

  1. Java SDP - a été obsolète
  2. JXIO [1], une bibliothèque de messagerie hautes performances construite sur RDMA et soutenue par Mellanox

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



2
votes

Il y a Disni , une nouvelle bibliothèque pour programmer RDMA en Java. Désni est la variante open source des jversbs d'IBM. Il y a quelques numéros de performance ici qui illustre Comment RDMA avec Java se compare aux sockets en C et Java, ainsi qu'à RDMA dans C.


0 commentaires