Performance Evaluation of JXTA-* Communication Layers
Mathieu JanPARIS Research Group
Paris, November 2004
2
Outline
Overview of JXTA communications layers
Experimental setup and benchmarks used
Evaluation of JXTA-J2SE Fast-Ethernet Myrinet
Evaluation of JXTA-C Fast-Ethernet Myrinet
3
Motivations: performance of JXTA?
Papers from Emir Halepovic Pipe service only No in-depth explanations about the results No precise details about the experimental
setup Mainly JXTA 1.x Complex topologies (relays, etc)
Not clear what is benchmarked
Results from the P3 project =~ XtremWeb over JXTA
4
5
6
Project JuxTest A set of benchmarks for JXTA-J2SE 2.x
Focuses of JXTA-J2SE Communications layers Uses JXTA Distributed Framework project (JDF)
Co-written with David A. Noblet Undergraduate at the University of New
Hampshire
Source code soon available! (22/11) http://jdf.jxta.org/ Results already on-line
7
JXTA-J2SE communications layers
Endpoint service Endpoint service
Pipe service Pipe service
JXTA Socket JXTA Socket
TCP, HTTP, etc
8
JXTA-J2SE communication layers JXTA Socket
Java Socket interface Data-stream interface Reliability
Pipe service Pipe ID Unreliable
Endpoint service Peer ID Unreliable
9
Experimental setup Nodes
2.4GHz Intel P4, 1GB of RAM, linux 2.4.22 Networks
Fast-Ethernet (MTU of 1500) Myrinet (GM 2.0.11, MTU of 9000)
JVMs Sun 1.4.2_01-b06 (-server -Xms256M -Xmx256M) IBM 1.4.1 (-Xms256M -Xmx256M)
JXTA-J2SE peers via JDF 1 rdv peer and 2 edge peers
Benchmarks used RTT and protocol efficiency
Performance Evaluation of JXTA-J2SE on Fast-
Ethernet
11
Raw bandwidth results of JXTA Socket
Java socket = 11.22 MB/sJXTA 2.3 = 9.72 MB/s
JXTA 2.2.1 = 9.48 MB/s
12
Raw latency results of JXTA Socket
Java socket = < 0.1 msJXTA 2.3 =~ 3 ms
JXTA 2.2.1 =~ 4 ms
13
Protocol efficiency of JXTA Socket
4 message elements in a JXTA message ACK_NUMBER
Message payload + reliability EndpointRouterMsg (XML doc)
Used by the endpoint router service 565 bytes! Not even needed!
EndpointSourceAddress TCP address
EndpointDestinationAddress TCP address + EndpointService (Net group) +
Endpoint Router
1 byte = 909 bytes sent on the wires!
14
Tunning the output buffer size of JXTA Socket
output buffer size =size of a pipe message
Java socket = 11.22 MB/sJXTA 2.2.1 (512KB) = 11.12 MB/s
15
Raw bandwidth results of unicast pipe
Java socket = 11.22 MB/sJXTA 2.3 = 9.59 MB/s
JXTA 2.2.1 = 10.74 MB/s
16
Raw latency result of unicast pipe
Java socket = < 0.1 ms
JXTA 2.3 =~ 2 msJXTA 2.2.1 =~ 35 ms
17
Protocol efficiency of unicast pipe
4 message elements in a JXTA message PAYLOAD EndpointRouterMsg (XML doc) EndpointSourceAddress EndpointDestinationAddress
1 byte = 877 bytes sent on the wires!
18
JXTA Socket vs unicast pipe (bandwidth)
JXTA Socket = 9.72 MB/sJXTA unicast pipe = 9.59 MB/s
19
JXTA Socket vs unicast pipe (latency)
JXTA Socket =~ 3 msJXTA unicast pipe =~ 2 ms
20
Removing limit on message size (unicast pipe)
Java socket = 11.22 MB/sJXTA 2.2.1 = 11.14 MB/s
21
IBM JVM vs Sun JVM on unicast pipe
JXTA 2.3 IBM =~ 1.2 msJXTA 2.3 SUN =~ 1.8 ms
22
Raw bandwidth results of endpoint service
Java socket = 11.22 MB/sJXTA 2.3 = 10.47 MB/s
JXTA 2.2.1 = 11.01 MB/s
23
Raw latency results of endpoint service
Java socket = < 100 usJXTA 2.3 IBM =~ 480 usJXTA 2.3 SUN =~ 730 us
Issue 1228: 2 TCP messages for 1 JXTA message!
24
Protocol efficiency of endpoint service
3 message elements in a JXTA message PAYLOAD EndpointSourceAddress EndpointDestinationAddress
1 byte = only 300 bytes sent on the wires! If we can say only …
No EndpointRouterMsg message element Removed 565 bytes! Removed XML parsing
25
Cost of each layer (bandwidth)
26
Cost of each layer (latency)
Performance Evaluation of JXTA-J2SE on Myrinet
Or how to desperately reach the Gb/s!
28
Experimental setup « Ethernet emulation » feature of GM
No OS-bypass mode :-(
Same benchmarks A different IP address when configuring JXTA
Focus on bandwidth Removed limit on message size
29
JXTA Socket bandwidth results
Results are not very
good!Java socket = 159.20 MB/s
JXTA 2.3 = 14.70 MB/sJXTA 2.2.1 = 12.10 MB/s
30
Tuning the output buffer size of JXTA Socket
Above 80 MB/s
31
Unicast pipe bandwidth results
Above 1 Gb/s! :-)
Java socket = 159.20 MB/sJXTA 2.3 = 106.54 MB/s
JXTA 2.2.1 = 136.78 MB/s
32
Endpoint service bandwidth results
Java socket = 159.20 MB/sJXTA 2.3 = 112.32 MB/s
JXTA 2.2.1 = 144.97 MB/s
Performance Evaluation of JXTA-C on Fast-
Ethernet
34
Short overview of JXTA-C Needs Apache Portable Runtime (APR)
Threads, Network, etc Newly added support for TCP communications
PeerCom, Seoul (South Korea) Does not support rdv peers
Need to use a J2SE rdv peer No JXTA Socket layer
Only pipe service and endpoint service Several bug fixes
Mostly EndpointRouterMsg TCP_NODELAY on
Several TCP messages
35
Raw bandwidth results of unicast pipe
Similar results compared to JXTA-J2SE
JXTA-J2SE 2.3 = 11.1 MB/sJXTA-J2SE 2.2.1 = 11.1
MB/sJXTA-C = 11.1 MB/s
36
Raw latency results of unicast pipe
JXTA-J2SE 2.3 =~ 1.8 msJXTA-J2SE 2.2.1 =~ 35
msJXTA-C =~ 2 ms
37
Protocol efficiency of unicast pipe
4 message elements in a JXTA message PAYLOAD EndpointRouterMsg (XML doc) EndpointSourceAddress EndpointDestinationAddress
1 byte = 834 bytes sent on the wires! JXTA-J2SE = 877 bytes + GatewayForward tag in EndpointRouter
Waiting for Bernard Traversat answear - charset tag for each message element
38
Raw bandwidth results of endpoint service
JXTA-J2SE 2.3 = 11.15 MB/sJXTA-J2SE 2.2.1 = 11.19
MB/sJXTA-C = 11.16 MB/s
39
Raw latency results of endpoint service
JXTA-J2SE 2.3 =~ 0.8 msJXTA-J2SE 2.2.1 =~ 1 ms
JXTA-C =~ 0.8 ms
40
Protocol efficiency of endpoint service
3 message elements in a JXTA message PAYLOAD EndpointSourceAddress EndpointDestinationAddress
1 byte = only 239 bytes sent on the wires! If we can say only … JXTA-J2SE = 300 bytes
No EndpointRouterMsg Removing 595 bytes! Removed XML parsing
41
Unicast pipe vs endpoint service
Performance Evaluation of JXTA-C on Myrinet
Still using « Ethernet emulation » feature of GM
43
Unicast pipe bandwidth results
JXTA-J2SE 2.3 = 106 MB/sJXTA-J2SE 2.2.1 = 136
MB/sJXTA-C = 107 MB/s
44
Endpoint service bandwidth results
JXTA-J2SE 2.3 = 112.32 MB/sJXTA-J2SE 2.2.1 = 144.97 MB/s
JXTA-C = 109 MB/s
45
JXTA-C on top of PadicoTM :-) JXTA-C is working on top of PadicoTM! (17/11)
« sed » modifications in apr Using marcel threads instead of pthread
JXTA-C configured to use GDBM instead of SDBM
Goal: stop using « ethernet emulation » of GM …
But JXTA-C is not yet zero-copy :-(
Performance evaluation in progress …
46
Conclusion Performance evaluation of the communication
layers of JXTA-* (J2SE and C) Fast-Ethernet Myrinet
Much better results compared to other related work and explained results
Known costs of JXTA JXTA-J2SE nearly saturate a Fast-Ethernet link JXTA-J2SE on Myrinet bandwidth greater than
1Gb/s JXTA-J2SE > JXTA-C on Myrinet
JXTA-C is not zero-copy
47
Ongoing work Performance evaluation of JXTA-C on top of
PadicoTM
JuxMem client in C for DIET Better knowledge of JXTA-C tricks ;-)
Write papers GP2PC (1/12) on JXTA raw performance
Fast-ethernet ? on JXTA tuned performance for grid
computing Myrinet
48
Future work Benchmark secure and propagate pipes
Update JuxTest results JXTA 2.3.1
Unidirectional throughput test
Plug-in for Ethereal An easier analysis of JXTA protocols