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.xenix mailing list