Xref: utzoo comp.unix.xenix:1932 comp.unix.microport:470 Path: utzoo!mnetor!uunet!ncc!alberta!ubc-cs!grads.cs.ubc.ca!pajari From: pajari@grads.cs.ubc.ca (George Pajari) Newsgroups: comp.unix.xenix,comp.unix.microport Subject: Do we need a serial I/O benchmark (BAUDSTONE)? Message-ID: <1974@ubc-cs.UUCP> Date: 11 Apr 88 18:00:19 GMT Sender: nobody@ubc-cs.UUCP Lines: 93 Keywords: rs232 serial data communications benchmark 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