480 likes | 563 Views
Performance Evaluation of JXTA-* Communication Layers. Mathieu Jan PARIS Research Group. Paris, November 2004. Outline. Overview of JXTA communications layers Experimental setup and benchmarks used Evaluation of JXTA-J2SE Fast-Ethernet Myrinet Evaluation of JXTA-C Fast-Ethernet
E N D
Performance Evaluation of JXTA-* Communication Layers Mathieu Jan PARIS Research Group Paris, November 2004
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
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
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
TCP, HTTP, etc Endpoint service Pipe service JXTA Socket Endpoint service Pipe service JXTA Socket JXTA-J2SE communications layers
JXTA-J2SE communication layers • JXTA Socket • Java Socket interface • Data-stream interface • Reliability • Pipe service • Pipe ID • Unreliable • Endpoint service • Peer ID • Unreliable
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
Raw bandwidth results of JXTA Socket Java socket = 11.22 MB/s JXTA 2.3 = 9.72 MB/s JXTA 2.2.1 = 9.48 MB/s
Raw latency results of JXTA Socket Java socket = < 0.1 ms JXTA 2.3 =~ 3 ms JXTA 2.2.1 =~ 4 ms
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!
Tunning the output buffer size of JXTA Socket output buffer size = size of a pipe message Java socket = 11.22 MB/s JXTA 2.2.1 (512KB) = 11.12 MB/s
Raw bandwidth results of unicast pipe Java socket = 11.22 MB/s JXTA 2.3 = 9.59 MB/s JXTA 2.2.1 = 10.74 MB/s
Raw latency result of unicast pipe Java socket = < 0.1 ms JXTA 2.3 =~ 2 ms JXTA 2.2.1 =~ 35 ms
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!
JXTA Socket vs unicast pipe (bandwidth) JXTA Socket = 9.72 MB/s JXTA unicast pipe = 9.59 MB/s
JXTA Socket vs unicast pipe (latency) JXTA Socket =~ 3 ms JXTA unicast pipe =~ 2 ms
Removing limit on message size (unicast pipe) Java socket = 11.22 MB/s JXTA 2.2.1 = 11.14 MB/s
IBM JVM vs Sun JVM on unicast pipe JXTA 2.3 IBM =~ 1.2 ms JXTA 2.3 SUN =~ 1.8 ms
Raw bandwidth results of endpoint service Java socket = 11.22 MB/s JXTA 2.3 = 10.47 MB/s JXTA 2.2.1 = 11.01 MB/s
Raw latency results of endpoint service Java socket = < 100 us JXTA 2.3 IBM =~ 480 us JXTA 2.3 SUN =~ 730 us Issue 1228: 2 TCP messages for 1 JXTA message!
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
Performance Evaluation of JXTA-J2SE on Myrinet Or how to desperately reach the Gb/s!
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
JXTA Socket bandwidth results Results are not very good! Java socket = 159.20 MB/s JXTA 2.3 = 14.70 MB/s JXTA 2.2.1 = 12.10 MB/s
Tuning the output buffer size of JXTA Socket Above 80 MB/s
Unicast pipe bandwidth results Above 1 Gb/s! :-) Java socket = 159.20 MB/s JXTA 2.3 = 106.54 MB/s JXTA 2.2.1 = 136.78 MB/s
Endpoint service bandwidth results Java socket = 159.20 MB/s JXTA 2.3 = 112.32 MB/s JXTA 2.2.1 = 144.97 MB/s
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
Raw bandwidth results of unicast pipe JXTA-J2SE 2.3 = 11.1 MB/s JXTA-J2SE 2.2.1 = 11.1 MB/s JXTA-C = 11.1 MB/s Similar results compared to JXTA-J2SE
Raw latency results of unicast pipe JXTA-J2SE 2.3 =~ 1.8 ms JXTA-J2SE 2.2.1 =~ 35 ms JXTA-C =~ 2 ms
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
Raw bandwidth results of endpoint service JXTA-J2SE 2.3 = 11.15 MB/s JXTA-J2SE 2.2.1 = 11.19 MB/s JXTA-C = 11.16 MB/s
Raw latency results of endpoint service JXTA-J2SE 2.3 =~ 0.8 ms JXTA-J2SE 2.2.1 =~ 1 ms JXTA-C =~ 0.8 ms
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
Performance Evaluation of JXTA-C on Myrinet Still using « Ethernet emulation » feature of GM
Unicast pipe bandwidth results JXTA-J2SE 2.3 = 106 MB/s JXTA-J2SE 2.2.1 = 136 MB/s JXTA-C = 107 MB/s
Endpoint service bandwidth results JXTA-J2SE 2.3 = 112.32 MB/s JXTA-J2SE 2.2.1 = 144.97 MB/s JXTA-C = 109 MB/s
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 …
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
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
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