TASK 2 Overview(Unified Message Passing Benchmarking)

INTRODUCTION

UMP OVERVIEW

TEST CONFIGURATION

PROCEDURE

RESULTS

Introduction

This report presents results from a study of the communication performance measured when transferring data between two Indigo 2 Silicon graphics workstations using the Unified Message Passing (UMP) application program interface, the TCP/IP and UDP/IP internet transport protocols, and the fiber channel hardware. Test code utilizing the UMP interface was developed to send messages over the UMP/Fiber channel network.

There were two approaches taken to measure the performance. The first approach created a variable number of processes which transmitted and received messages over the network. The results were represented graphically by displaying the number of active processes versus the number of transactions per second. The second approach, a more traditional approach, varied the size of the message to be transmitted. The results of this method were represented graphically by displaying the message size versus the throughput.

UMP Overview

Unified Message Passing (UMP) is an application programming interface which provides interprocess and network communication. UMP supports message-based communication with any computer or I/O device using standard Internet protocols. Although many of the ideas in UMP are based off of Berkley Sockets, UMP provides the following extra features:

UMP supports the UDP (User Datagram Protocol) and TCP (Transmission Control Protocol) Internet transport protocols.

Test Configuration

Tests measures are obtained between two Indigo 2 Silicon Graphics workstations connected in a point-to-point topology via Fiber Channel hardware. The workstations are rated at 200 Million Instructions Per Second (MIPS) and are running the IRIS 5.3 operating system. Communication between the workstations is established via the UMP application program interface, the TCP/IP or UDP/IP internet transport protocols, and the fiber channel hardware. The laboratory setup for these experiments is depicted below.

Procedure

The UMP Driver code was compiled, linked and loaded onto the target Silicon Graphics workstations. Six programs were developed in the C programming language to utilize the UMP API to send messages over the fiber channel network.

The "send.c" and "recv.c" programs were written to measure the performance of the UMP/Fiber Channel network when a variable number of processes was used simultaneously to send and receive fixed size messages over the network. These two programs provided measurements using the TCP/IP and UDP/IP transport protocols. Peer-to-peer connections were established between the processes on the workstations when using the TCP/IP protocol. The broadcast flag was set and each process on the transmitting workstation sent a broadcast message to processes on the receiving workstations when using the UDP/IP protocol.

The "send_msg.c" and "recv_msg.c" programs were written to measure the performance of the UMP/Fiber Channel network when sending variable length messages across the network. These programs provided measurements using the TCP/IP transport protocol. Similarly to the "send.c" and "recv.c" programs, a peer-to-peer connection was established.

The "time_functs.h" and "time_functs.c" programs supplied three timing functions, "start_time()", "stop_time()", and "time_taken()". The "start_time()" function records the times returned by the "gettimeofday()" function and places them in the "begin" elements of the time_kept structure. The "stop_time()" function records the times returned by the "gettimeofday()" function and places them in the "end" elements of the time_kept structure. The "time_taken()" function calculates the difference in the "end" and "begin" elements of the time_kept structure and stores the value in the "total time" element of the time_kept structure. These functions were utilized by the send.c/recv.c and send_msg.c/recv_msg.c pairs to calculate the transaction times.

UNIX shell scripts were written to execute the above programs in series. For example, in the case of the send.c/recv.c pair the scripts ran the programs starting with 10 processes and incrementing by 10 each time. In the case of the send_msg.c/recv_msg.c pair the scripts ran the programs starting with a message size of 1024 bytes and doubling this value each time.

Results