next up previous contents
Next: Language Implementations Up: Converse: A Message-Driven Runtime Previous: An Example Language Implementation   Contents


Performance

Converse has been implemented on IBM SP, SGI Origin 2000, CRAY T3E, Intel Paragon (ASCI Red), Convex Exemplar, and networks of Unix/Windows workstations connected by Ethernet/ATM, Myrinet, and Quadrics Elan.

The first set of performance experiments (Figure 2.4) involves simple message passing performance. This was measured using a round trip program that sends a large number of messages back and forth between two processors. On the receiving processor, every message was delivered to a user-level handler that responded by sending a return message. Using this, the average time for one individual message send, transmission, receipt and handling was computed for the following machines:

Linux-Myrinet
2-way 1 GHz Intel Pentium III nodes running Linux connected with Myrinet interconnect. Converse runs atop MPICH-GM as well as directly on top of GM.

Origin 2000
195MHz MIPS R10000 processor connected with proprietary interconnect. Converse is implemented on top of SGI MPI.

Sun-Ethernet
60MHz Sun Sparc node connected with 10baseT Ethernet. Converse uses UDP for communication.

Linux-Fast-Ethernet
4-way 500 MHz Pentium III nodes running Linux connected with 100baseT fast Ethernet. Converse uses UDP for communication.

IBM-SP
8-way 375 MHz Power3 nodes running AIX 4.3 connected with proprietary interconnect. Converse uses MPI for communication.

Figure 2.4: Converse message-passing performance
\includegraphics[width=4in]{figures/pingpong}

Figure 2.5: Converse scheduler overhead
\includegraphics[width=4in]{figures/schedover}

Overall, the performance is almost as good as that of the lowest level communication layer available to us on these machines. For example, the MPICH-GM library using Myrinet switches delivers messages of 256 bytes in 35 microseconds, whereas Converse messages need 37.14 microseconds.

In the second experiment, we incorporated queuing to investigate the overhead seen by languages that use scheduling. Each handler enqueues the received message in the scheduler's queue. The scheduler then picks a message from its queue and invokes its handler. Only languages that use the queue for scheduling objects pay this cost of scheduling. This experiment was done on Intel workstations connected by Myrinet switches to illustrate the magnitude of scheduling overhead (figure 2.5). The scheduling is seen to add about 1.5 to 2 microseconds.


next up previous contents
Next: Language Implementations Up: Converse: A Message-Driven Runtime Previous: An Example Language Implementation   Contents
Milind Bhandarkar 2002-06-12