Do we need a serial I/O benchmark (BAUDSTONE)?
George Pajari
pajari at grads.cs.ubc.ca
Tue Apr 12 04:00:19 AEST 1988
With all the discussions regarding performance of serial I/O
cards (especially 'intelligent' vs 'smart' vs 'dumb' vs 'retarded')
it would seem useful if we had a serial I/O benchmark (BAUDSTONE?)
which could be used to compare boards. The idea is that such
a benchmark would be written and distributed over the net and results
would be collected. Obviously the device driver/OS/CPU are significant
factors but (a) we've got to start somewhere, and (b) the collected
results would list the important variables so that they could be
factored out (to some extent) during comparisons.
If this has been done already then my apologies and please enlighten me.
Otherwise I would like to propose the following design for such a BAUDSTONE.
The idea is to solicit comments (either over the net or mailed to me)
so that a consensus :-) may be reached, a benchmark written (I'll
volunteer if someone else hasn't/doesn't beat me to it), code distributed,
and results collected and summarised (me again).
Obviously if someone has done this already, please let us know. This
is one wheel which I have no desire to reinvent unless necessary.
BAUDSTONE A: Output Loading
===========================
attempt on 1, 2, 4, and n ports simultaneously
(where n = number of ports on the board)
1. Initialize self and wait for common starting signal.
2. Write 100K to the chosen port using 1K writes and write(2)
calls (each 1K buffer to contain 20 newlines equally distributed).
(Nothing to be connected to the port.)
3. Note time it took to transmit 100K and compute effective baud rate.
Communications parameters for output port:
9600 baud 7-bits, even parity, 1 stop bit, OPOST, ONLCR, no delays
Simultaneously, run a CPU loop program at low priority to detect host CPU
consumption.
The results of interest include:
- the range of effective baud rates
- the average effective baud rate
- the % of host CPU consumed
BAUDSTONE B: Input/Output Loading (Loopback)
============================================
attempt on 1, 2, 4, and n ports simultaneously
(where n = number of ports on the board)
(Each port to have a loopback connector, i.e. TXD to RXD on same port).
for each port start two processes:
PROCESS A
---------
1. Initialize self and wait for common starting signal.
2. Write 100K to the chosen port using 1K writes and write(2)
calls (each 1K buffer to contain 20 lines of equal length
with five to contain erase characters and five to contain
line kill characters at the end of the line).
3. Note time it took to transmit 100K and compute effective baud rate.
PROCESS B
---------
1. Initialize self
2. Read from the chosen port using 1K reads and the read(2)
call and store the data in a buffer.
3. Note time it took to receive the data and check that the correct
canonical processing took place and that no characters were
dropped.
Communications parameters for output port:
9600 baud 7-bits, even parity, 1 stop bit, OPOST, ONLCR, no delays
Communications parameters for input port:
9600 baud 7-bits, even parity, 1 stop bit, INPCK, ISTRIP, IGNCR
Note that no flow control is enabled.
Simultaneously, run a CPU loop program at low priority to detect host CPU
consumption.
The results of interest include:
- the range of effective baud rates (output & input)
- the average effective baud rate (output & input)
- number of characters dropped (total, max per line, average)
- the % of host CPU consumed
-------------------------------------------------------------------------
Comments please!
George Pajari
More information about the Comp.unix.microport
mailing list