Communication benchmarks with the Ancor Fibre Channel Fabric
We evolved and ran a couple of programs using Direct Channel interface. The principle of these programs is as follows: one writes some data in an infinite loop and the other one reads them in the same way. Time is reported on both sides as soon as the amount of data written (or read according to the side) exceeds a predefined value. Now, the maximum size of the message to be transferred is factory-limited to 65500 bytes. If the user desires to send a larger packet, it is the user's responsibility to manage the packet splitting on the sender side and the packet merging on the receiver side.
For these programs, there are two input parameters, which can be chosen independently:
The number of times the message is sent is equal to 104.
The read function of the driver can be used either in a blocking mode or in a non blocking mode. In a non blocking mode the function will return immediately with data if there is any. In a blocking mode, it will wait for up to 10 seconds for incoming data before returning.
It is important to note that the direct channel is of a streaming type. For example, if a read is issued for 1000 bytes, and there are only 10 bytes that have come in, the read function will return the 10 bytes only and set the number of bytes read to 10. If there is more data than is requested, only the amount requested will be returned and rest will be returned on subsequent reads. In other words, no data is ever thrown out. It is handled in a first in first out manner.
The write function is quite straightforward: a non blocking write will send the data without waiting for an acknowledgment from the adapter. A blocking write waits for and returns the success or failure of the write to the calling process.
Generated with WebMaker