La biblioteca jVerbs (solo Linux)

La biblioteca jVerbs contiene una verbs API y una endpoint API que permiten el desarrollo de aplicaciones Java™ que utilizan infraestructuras de red de alto rendimiento, como InfiniBand, iWARP, o RoCE. La interfaz verbs es una API de redes alternativa a la interfaz sockets. La interfaz verbs proporciona comunicaciones de envío y de recepción, y la interfaz endpoint es una API simplificada que proporciona una abstracción de un punto final jVerbs.

Nota: Inicio de cambios para la actualización del servicio 8 fixpack 30La implementación RDMA que anteriormente estaba obsoleta se elimina de IBM® SDK, Java Technology Edition, Version 8.Fin de los cambios para el Service Refresh 8 Fix Pack 30

jVerbs se implementa como una biblioteca Java que se basa en las bibliotecas de usuario RDMA de Open Fabrics Enterprise Distribution (OFED). jVerbs utiliza una capa JNI ligera para establecer un puente entre el código Java y las bibliotecas de usuario OFED. Para evitar todos los impactos en el rendimiento que están asociados al paso de matrices y parámetros RDMA complejos a través de la interfaz JNI, la biblioteca jVerbs implementa un concepto llamado método SVM (stateful verbs method). Con este enfoque, cada estado de serialización JNI para una llamada verb se almacena en memoria caché en el contexto de un objeto SVM y puede volver a utilizarse muchas veces.

El diagrama siguiente ilustra el diseño de alto nivel para implementar comunicaciones RDMA utilizando la biblioteca jVerbs.
El diagrama ilustra una aplicación Java en ejecución, que requiere la JVM y la interfaz de verbos jVerbs o la interfaz de punto final jVerbs para comunicarse con un adaptador RDMA. Se utilizan dos vías de acceso diferentes para la comunicación entre estas interfaces y el adaptador RDMA: la vía de acceso a datos rápida y la vía de acceso de control lenta.
La vía de control lenta se utiliza para operaciones RDMA como registrar memoria y crear pares de colas para las comunicaciones. La vía de acceso a datos rápida se utiliza para la transferencia de datos.

API de verbs

La finalidad de la interfaz verbs es separar datos y control. Asignando previamente recursos de comunicación como fijando la memoria para el acceso directo a la memoria (DMA), los datos se transfieren sin implicar el sistema operativo o la JVM. Este principio mejora el rendimiento de operaciones de transferencia de datos, un factor clave en la obtención de la baja latencia y alto ancho de banda en infraestructuras de red con capacidad para RDMA.

La interfaz verbs proporciona API para las siguientes funciones:
Enviar y recibir tipos de comunicación RDMA
Enviar y recibir comunicaciones RDMA son operaciones de dos caras. El remitente envía un mensaje, mientras que el receptor crea un almacenamiento intermedio de aplicación e indica donde deben recibirse los datos. Este mecanismo es parecido a la comunicaciones basadas en sockets TCP tradicionales.
Operaciones RDMA
Las operaciones RDMA son operaciones de una cara en las que solo un homólogo lee, graba o manipula almacenamientos intermedios de aplicaciones remotos.
Para todas las funciones, la transferencia de datos es eficaz porque el hardware de red accede directamente a los almacenamientos intermedios de datos utilizando DMA. Los almacenamientos intermedios de datos de aplicación deben registrarse con el subsistema RDMA utilizando llamadas de la API verbs específicas. Como consecuencia, el subsistema RDMA garantiza que la memoria esté fija y que no se pueda intercambiar.

API de endpoint

La interfaz endpoint es más sencilla que la interfaz verbs. Puede crear un punto final y una conexión de una forma parecida a las comunicaciones de sockets TCP utilizando operaciones de enlace, conexión y desconexión. Sin embargo, cuando un punto final se conecta representa un par de colas RDMA sencillo, que puede utilizarse para publicar operaciones de una cada o dos caras.

Para obtener más información sobre la programación con estas API, consulte Escribir aplicaciones Java que utilicen la biblioteca jVerbs (Linux).