Performance Evaluation of JXTA- Communication Layers by ytq86025

VIEWS: 5 PAGES: 48

									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
                                             2
     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
                                                             3
4
5
     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

                                                              6
JXTA-J2SE communications layers

  JXTA Socket                         JXTA Socket




   Pipe service                        Pipe service


                    TCP, HTTP, etc

 Endpoint service                    Endpoint service



                                                        7
     JXTA-J2SE communication layers

   JXTA Socket
          Java Socket interface
          Data-stream interface
          Reliability
   Pipe service
          Pipe ID
          Unreliable
   Endpoint service
          Peer ID
          Unreliable

                                      8
     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
                                                          9
 Performance Evaluation of
JXTA-J2SE on Fast-Ethernet
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




                                              11
Raw latency results of JXTA Socket




                       Java socket = < 0.1 ms
                         JXTA 2.3 =~ 3 ms
                        JXTA 2.2.1 =~ 4 ms

                                             12
     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!
                                                                       13
 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


                                                       14
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




                                    15
Raw latency result of unicast pipe




                        Java socket = < 0.1 ms
                          JXTA 2.3 =~ 2 ms
                         JXTA 2.2.1 =~ 35 ms

                                               16
     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!




                                            17
JXTA Socket vs unicast pipe (bandwidth)




                        JXTA Socket = 9.72 MB/s
                      JXTA unicast pipe = 9.59 MB/s


                                                  18
JXTA Socket vs unicast pipe (latency)



     JXTA Socket =~ 3 ms
   JXTA unicast pipe =~ 2 ms




                                        19
Removing limit on message size (unicast pipe)




                            Java socket = 11.22 MB/s
                             JXTA 2.2.1 = 11.14 MB/s




                                                   20
IBM JVM vs Sun JVM on unicast pipe



JXTA 2.3 IBM =~ 1.2 ms
JXTA 2.3 SUN =~ 1.8 ms




                                     21
  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




                                          22
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!

                                                              23
     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

                                                 24
Cost of each layer (bandwidth)




                                 25
Cost of each layer (latency)




                               26
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




                                                          28
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




                                            29
Tuning the output buffer size of JXTA Socket




   Above 80 MB/s




                                               30
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




                                 31
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




                                     32
Performance Evaluation of
 JXTA-C on Fast-Ethernet
     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                     34
 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




                                             35
Raw latency results of unicast pipe



                     JXTA-J2SE 2.3 =~ 1.8 ms
                     JXTA-J2SE 2.2.1 =~ 35 ms
                         JXTA-C =~ 2 ms




                                                36
     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


                                                        37
  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




                                          38
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

                                                  39
     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
                                                 40
Unicast pipe vs endpoint service




                                   41
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




                                 43
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




                                     44
      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 …


                                                           45
       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
                                                     46
     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
                                                            47
     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


                                                  48

								
To top