home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume9 / tbench / README < prev   
Text File  |  1989-11-12  |  24KB  |  516 lines

  1. ####################################################
  2. #     This software released to the public domain  #
  3. #     without restrictions of any kind.            #
  4. ####################################################
  5.  
  6.              @(#)README    3.4 11/12/89
  7.  
  8. The programs included in this, the first release of TBENCH
  9. were all developed by DigiBoard Incorporated (St. Louis Pk, MN)
  10. for internal performance testing.  DigiBoard used these to
  11. test their own, and competitors multiport communication
  12. boards.  Some of those results have been published in trade
  13. magazines.
  14.  
  15. These benchmarks are a another attempt at developing objective
  16. benchmarks to compare the performance of tty subsystems under
  17. extreme load.  An earlier benchmark suite developed by ANVIL
  18. (Australia) was posted to comp.sys.i386 some time ago.  Those
  19. were a fine first attempt, but did suffer from some limitations.
  20.  
  21. At DigiBoard, we believe these benchmarks provide a much
  22. better indication of steady state tty I/O performance.
  23. In particular they send data for a length of time before
  24. benchmarking begins, and after it completes, so that the
  25. results are closer to indicating steady-state performance.
  26. They also check input data automatically, and provide a
  27. summary of the errors detected.
  28.  
  29. DigiBoard has made an attempt to keep these benchmarks as
  30. objective as possible.   However DigiBoard is a for-profit
  31. company, and as such must have included some bias.  Anyone
  32. using these benchmarks is heartily encouraged to analyze
  33. them, improve them, and if they see fit, to criticize them
  34. as needed.
  35.  
  36. These programs have been tested on essentially all UNIX
  37. ports to 286/386 PC-compatible systems, and also on Suns.
  38.  
  39. Send bug fixes, enhancements, comments (and flames) to:
  40.  
  41. Gene H. Olson                  uunet!digibd!gene
  42. Member of Technical Staff
  43. DigiBoard Inc.
  44. St. Louis Park, MN             (612) 922-8055
  45.  
  46. ------------------------------------------------------------
  47.  
  48. The remainder of this file describes how to use the terminal
  49. benchmark programs.  We assume the reader is an experienced
  50. UNIX user, thoroughly familiar with the concept of tty devices
  51. and modes, and very comfortable at the UNIX command level.
  52. Novice UNIX users may find these notes incomprehensible.
  53.  
  54.  
  55. THE PROGRAMS
  56. ------------
  57.  
  58. Before you can use these benchmarks, you need to compile two
  59. programs, and run one of them to calibrate it for use on your
  60. system.  Enter the following commands:
  61.  
  62.                     cc -o perf -O perf.c
  63.                     cc -o cpu cpu.c
  64.                     ./cpu -c
  65.  
  66. When compiling perf.c and cpu.c you are wise to make sure your
  67. system is using setvbuf() with the correct parameter sequence.
  68. The original UNIX 5.2 release had parameters 2 and 3 reversed
  69. from the setbuf(3) manual page, and from subsequent releases of
  70. UNIX.  However while the manual pages were different, the lint(1)
  71. library file was consistent with the way the parameters were
  72. actually used.  I suggest you run lint on these programs before
  73. attempting to use them.  If you get an error on the setvbuf()
  74. declaration, then use instead:
  75.  
  76.                cc -DSETVBUF -o perf -O perf.c
  77.                cc -DSETVBUF -o cpu cpu.c
  78.                ./cpu -c
  79.  
  80. The programs now available include:
  81.  
  82. perf      C program which may be invoked for either input or
  83.           output testing.
  84.  
  85.           In output mode, the program writes 6 digit numbers
  86.           (plus checksum) to standard output, which should be
  87.           redirected to the tty under test.  The program reports
  88.           the output speed, real (elapsed) time, and system
  89.           time consumed.
  90.  
  91.           In input mode, perf reads the output of another perf
  92.           in output mode, redirected through a pair of tty ports.
  93.           The program compares the actual data received to the
  94.           expected input and reports error statistics.  The
  95.           report includes the speed of input, real time, system
  96.           time, the number of codes missing or in error, and
  97.           the number of stray characters received.
  98.  
  99.  
  100. cpu       C program to determine how busy the system is during
  101.           input/output testing.
  102.  
  103.           This program must first be run on an idle system to
  104.           calibrate its internal loop.  Thereafter it may be
  105.           invoked to drop its priority and absorb all available
  106.           idle time.  Using a combination of reported system time
  107.           and its own internally calibrated loop, it displays
  108.           the amount of CPU time consumed elsewhere at both
  109.           process and interrupt levels.
  110.  
  111.           The assignment of time to process and interrupt levels
  112.           is very approximate, but the total is an accurate
  113.           reflection of the CPU being utilized by other programs.
  114.           If the only other programs running are the terminal
  115.           benchmarks, the results are quite good.
  116.  
  117.           If your system contains memory of different speeds,
  118.           this program may report grossly inaccurate results.
  119.           There is no solution, except to change memory boards
  120.           or move to another system.
  121.  
  122.  
  123. obench    A shell file to supervise output testing.
  124.  
  125.           The program takes as parameters a list of ttys,
  126.           test modes and baud rates.  It runs the perf program
  127.           on 1 to n of these terminals in all of the mode and
  128.           baud rate combinations given.  The results of these
  129.           tests are written to standard output, and should be
  130.           captured to a file.
  131.  
  132.  
  133. oprint    A shell file to summarize the results reported by
  134.           the obench shell file above.
  135.  
  136.  
  137. islave    A shell file to monitor input terminals and report
  138.           the speed and accuracy of the input actually received.
  139.  
  140.           This program takes as parameters a baud rate,
  141.           and a list of terminals to be monitored.  The
  142.           data coming into the terminals may include test
  143.           commands and data supplied by the ibench program
  144.           below.  The results are written to standard output,
  145.           and should be captured to a file.
  146.  
  147.  
  148. ibench    A shell file to supervise input testing and to produce
  149.           test data for by the islave program above.
  150.  
  151.           Ibench takes as parameters a list of ttys, test modes,
  152.           and baud rates.  It runs the perf program to write
  153.           test commands and data to the given ttys. These
  154.           ttys are then connected to terminals monitored by the
  155.           islave program above.
  156.  
  157.           The commands sent out by ibench cause the islave program
  158.           to print messages, change input modes and baud rates
  159.           as the test progresses.
  160.  
  161.  
  162. iprint    A shell file to summarize the results reported by
  163.           the islave shell file above.
  164.  
  165.  
  166.  
  167. OUTPUT TEST PROCEDURE
  168. ---------------------
  169.  
  170. Output testing is straightforward, and requires minimal hardware
  171. setup.
  172.  
  173. The benchmark writes data out to multiple ports as fast as possible,
  174. without flow control, so it is not necessary to hookup the cables to
  175. terminals.
  176.  
  177. To perform the test on a DigiBoard PC/8e under SCO Xenix, type
  178. the following command on the system console:
  179.  
  180.     obench 9600 exta extb opost -opost /dev/ttyi1[a-h] | tee junk
  181.  
  182. This command outputs data at baud rates 9600, exta (19200),
  183. and extb (38400) to the given ports in both opost (cooked) and
  184. -opost (raw) modes.  All combinations of baud rates and modes
  185. are tested, using 1-8 terminals each.  This yields a total of 3 baud
  186. rates * 2 modes * 8 terminals = 48 different tests, each writing
  187. about 100K characters to 1 or more terminals.
  188.  
  189. If all goes well, the test takes about 2 hours.  The test output
  190. is displayed on the terminal and written to the file junk.  The
  191. output should look similar to:
  192.  
  193. TEST tty=1, baud=9600, mode=opost
  194. TIME process=5.7, interrupt=-0.1, total=5.6
  195. /dev/ttyi1a : OUT cps=965, real=103.58, user=0.4, sys=5.1
  196. TEST tty=2, baud=9600, mode=opost
  197. TIME process=11.3, interrupt=-0.1, total=11.2
  198. /dev/ttyi1b : OUT cps=965, real=103.54, user=0.5, sys=5.1
  199. /dev/ttyi1a : OUT cps=965, real=103.54, user=0.4, sys=4.9
  200. TEST tty=3, baud=9600, mode=opost
  201. TIME process=16.1, interrupt=0.5, total=16.6
  202. /dev/ttyi1b : OUT cps=965, real=103.58, user=0.4, sys=5.0
  203. /dev/ttyi1c : OUT cps=965, real=103.56, user=0.5, sys=5.2
  204. /dev/ttyi1a : OUT cps=965, real=103.56, user=0.3, sys=5.0
  205. TEST tty=4, baud=9600, mode=opost
  206. TIME process=21.7, interrupt=0.7, total=22.3
  207. /dev/ttyi1b : OUT cps=965, real=103.56, user=0.4, sys=5.1
  208. /dev/ttyi1c : OUT cps=965, real=103.56, user=0.6, sys=5.0
  209. /dev/ttyi1d : OUT cps=965, real=103.62, user=0.4, sys=5.0
  210. /dev/ttyi1a : OUT cps=965, real=103.62, user=0.4, sys=5.0
  211. TEST tty=5, baud=9600, mode=opost
  212. TIME process=28.3, interrupt=-0.3, total=27.9
  213. /dev/ttyi1b : OUT cps=965, real=103.60, user=0.6, sys=5.1
  214. /dev/ttyi1d : OUT cps=965, real=103.56, user=0.4, sys=5.0
  215. /dev/ttyi1e : OUT cps=965, real=103.56, user=0.6, sys=5.1
  216. /dev/ttyi1a : OUT cps=965, real=103.60, user=0.5, sys=5.1
  217. /dev/ttyi1c : OUT cps=963, real=103.82, user=0.6, sys=4.8
  218. TEST tty=6, baud=9600, mode=opost
  219. TIME process=32.4, interrupt=1.0, total=33.5
  220. /dev/ttyi1c : OUT cps=964, real=103.64, user=0.5, sys=4.8
  221. /dev/ttyi1f : OUT cps=965, real=103.56, user=0.6, sys=5.1
  222. /dev/ttyi1a : OUT cps=965, real=103.60, user=0.4, sys=5.0
  223. /dev/ttyi1e : OUT cps=965, real=103.56, user=0.4, sys=5.2
  224. /dev/ttyi1b : OUT cps=965, real=103.56, user=0.5, sys=4.8
  225. /dev/ttyi1d : OUT cps=965, real=103.56, user=0.6, sys=4.9
  226. TEST tty=7, baud=9600, mode=opost
  227. TIME process=36.8, interrupt=3.1, total=39.9
  228. /dev/ttyi1d : OUT cps=965, real=103.62, user=0.4, sys=5.1
  229. /dev/ttyi1f : OUT cps=964, real=103.70, user=0.4, sys=5.1
  230. /dev/ttyi1b : OUT cps=957, real=104.48, user=0.5, sys=4.9
  231. /dev/ttyi1g : OUT cps=964, real=103.72, user=0.4, sys=4.9
  232. /dev/ttyi1c : OUT cps=962, real=103.94, user=0.4, sys=5.0
  233. /dev/ttyi1a : OUT cps=964, real=103.64, user=0.5, sys=4.9
  234. /dev/ttyi1e : OUT cps=958, real=104.34, user=0.7, sys=5.0
  235. TEST tty=8, baud=9600, mode=opost
  236. TIME process=45.0, interrupt=0.5, total=45.5
  237. /dev/ttyi1a : OUT cps=961, real=103.96, user=0.6, sys=4.9
  238. /dev/ttyi1d : OUT cps=963, real=103.78, user=0.6, sys=5.1
  239. /dev/ttyi1f : OUT cps=964, real=103.66, user=0.5, sys=5.1
  240. /dev/ttyi1c : OUT cps=963, real=103.74, user=0.6, sys=5.1
  241. /dev/ttyi1h : OUT cps=957, real=104.46, user=0.5, sys=5.1
  242. /dev/ttyi1b : OUT cps=955, real=104.70, user=0.4, sys=4.8
  243. /dev/ttyi1g : OUT cps=963, real=103.80, user=0.4, sys=5.1
  244. /dev/ttyi1e : OUT cps=964, real=103.68, user=0.6, sys=5.0
  245. TEST tty=1, baud=9600, mode=-opost
  246. TIME process=1.6, interrupt=0.0, total=1.6
  247. /dev/ttyi1a : OUT cps=960, real=104.16, user=0.5, sys=1.1
  248. TEST tty=2, baud=9600, mode=-opost
  249. TIME process=2.9, interrupt=0.2, total=3.1
  250. /dev/ttyi1b : OUT cps=959, real=104.18, user=0.5, sys=0.9
  251. /dev/ttyi1a : OUT cps=960, real=104.14, user=0.4, sys=0.9
  252. TEST tty=3, baud=9600, mode=-opost
  253.                        ...
  254.  
  255. When the test is complete, you may summarize the data in tabular
  256. form by typing:
  257.  
  258.           oprint junk
  259.  
  260. This prints a summary of the input received in tabular format with
  261. column headers.  The output should resemble:
  262.  
  263.  ports     baud      mode        cps      real      %sys     %host
  264.  -----    ------    ------      -----    ------    -----     ----
  265.     1      9600      opost      965.0     103.6      5.1     5.31
  266.     2      9600      opost      965.0     103.5     10.2     5.31
  267.     3      9600      opost      965.0     103.6     15.2     5.24
  268.     4      9600      opost      965.0     103.6     20.4     5.28
  269.     5      9600      opost      964.6     103.6     25.5     5.29
  270.     6      9600      opost      964.8     103.6     30.6     5.29
  271.     7      9600      opost      962.0     103.9     36.6     5.43
  272.     8      9600      opost      961.3     104.0     41.7     5.42
  273.  
  274.     1      9600     -opost      960.0     104.2      1.1     1.17
  275.     2      9600     -opost      959.5     104.2      2.2     1.12
  276.     3      9600     -opost      959.0     104.2      3.2     1.11
  277.     4      9600     -opost      959.5     104.2      4.3     1.12
  278.     5      9600     -opost      958.8     104.2      5.3     1.11
  279.     6      9600     -opost      959.7     104.2      6.4     1.10
  280.     7      9600     -opost      958.6     104.2      8.7     1.29
  281.     8      9600     -opost      958.6     104.2      9.7     1.27
  282.  
  283.     1     19200      opost     1919.0     104.2     10.2     5.29
  284.     2     19200      opost     1922.0     104.0     20.4     5.31
  285.     3     19200      opost     1921.7     104.0     30.5     5.28
  286.     4     19200      opost     1920.8     104.1     40.6     5.29
  287.     5     19200      opost     1920.4     104.1     50.8     5.29
  288.     6     19200      opost     1920.2     104.1     61.0     5.30
  289.     7     19200      opost     1919.6     104.2     71.5     5.32
  290.     8     19200      opost     1917.4     104.3     81.3     5.30
  291.  
  292.     1     19200     -opost     1921.0     104.1      2.1     1.07
  293.         ...
  294.  
  295.  
  296. The columns printed are:
  297.  
  298. baud    The test baud rate.
  299.  
  300. mode    The communication mode, either opost (cooked) or -opost
  301.     (raw).
  302.  
  303. flow    The flow control mode, either ixon (output flow control)
  304.     -ixon (no flow control).
  305.  
  306. cps    The character per second (cps) output speed actually measured.
  307.     Under ideal conditions, this will be the baud rate divided
  308.     by 10.  Lower numbers indicate a reduction in performance.
  309.  
  310. %sys    Percent of system time used during the steady-state portion of
  311.     the test.  This is computed by starting with 100%, subtracting
  312.     the "perf" program user time, and the idle time measured by
  313.     the "cpu" program.   Because it is a subtractive method, it
  314.     is less accurate at lower loads, and progressively more
  315.     accurate as the load increases.
  316.  
  317. %host    Percent of system time used per kilo-character of output.
  318.  
  319.  
  320. INPUT TEST PROCEDURE
  321. --------------------
  322.  
  323. Input testing is much harder than output testing.  To do a good job,
  324. you need two systems, the system being tested, and another system
  325. to produce the test data.   You must cable the two systems together,
  326. and run programs on both systems.  In all, it is about 3 times as
  327. much work as the output test procedure.
  328.  
  329. For reference, call the system producing the test data the "producer",
  330. and the system under test the "consumer".   If you wish to test
  331. input on 8 lines simultaneously, you must cable 8 ports on the
  332. producer to 8 ports on the consumer system.   You will probably need
  333. a gender changer and a null modem connector for each line as well.
  334.  
  335. Most intelligent cards will do output much faster than they do input,
  336. so generally the consumer system will overload before the producer
  337. system begins to slow down.  This is not always true however, so
  338. you should make sure your results do not suffer because the producer
  339. system cannot run full speed.
  340.  
  341. I suggest you check out the lines with "cu" before you start testing
  342. to make sure everything really works.  I can tell you from experience
  343. it is frustrating to discover a bad line when the input test is
  344. 3/4 complete.
  345.  
  346. With a DigiBoard PC/8e under SCO Xenix, begin the test by typing the
  347. following command on the console of the consumer system:
  348.  
  349.           islave 9600 /dev/ttyi1[a-h] | tee junk
  350.  
  351. Then go to the console of the producer system and type:
  352.  
  353.           ibench 9600 exta extb ixoff -icanon /dev/ttyi1[a-h]
  354.  
  355. The producer system will begin sending commands and test data to
  356. the consumer system; the consumer system will report test results
  357. on the console and in the file "junk".
  358.  
  359. Since the producer system sends commands as well as test data to
  360. the consumer system, it is essential that communication between the
  361. two systems remains intact during the test.  Remember that you may
  362. be seriously overloading the input capacity of the consumer system,
  363. causing test commands to be lost.  If this phenomenon occurs, it
  364. may be necessary to run the tests by hand.
  365.  
  366. You should check the output on the consoles of both the producer
  367. and consumer systems as the test progresses.  The same number of
  368. display lines are written to both terminals in a very similar format,
  369. so it is easy to see if there is a problem.
  370.  
  371. The output written to the consumer display, and captured in the
  372. file junk should be very similar to the following:
  373.  
  374. TEST tty=1, baud=9600, mode=-icanon, flow=ixoff
  375. TIME process=0.0, interrupt=6.5, total=6.5
  376. /dev/ttyi1a : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  377. TEST tty=2, baud=9600, mode=-icanon, flow=ixoff
  378. TIME process=0.0, interrupt=12.4, total=12.4
  379. /dev/ttyi1e : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  380. /dev/ttyi1a : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  381. TEST tty=3, baud=9600, mode=-icanon, flow=ixoff
  382. TIME process=0.0, interrupt=16.7, total=16.8
  383. /dev/ttyi1b : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  384. /dev/ttyi1a : IN  cps=959, real=104.20, user=0.0, sys=0.0, errs=0, stray=0
  385. /dev/ttyi1e : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  386. TEST tty=4, baud=9600, mode=-icanon, flow=ixoff
  387. TIME process=0.0, interrupt=21.7, total=21.7
  388. /dev/ttyi1e : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  389. /dev/ttyi1b : IN  cps=959, real=104.18, user=0.0, sys=0.0, errs=0, stray=0
  390. /dev/ttyi1f : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  391. /dev/ttyi1a : IN  cps=959, real=104.18, user=0.0, sys=0.0, errs=0, stray=0
  392. TEST tty=5, baud=9600, mode=-icanon, flow=ixoff
  393. TIME process=0.1, interrupt=26.5, total=26.6
  394. /dev/ttyi1a : IN  cps=959, real=104.18, user=0.0, sys=0.0, errs=0, stray=0
  395. /dev/ttyi1f : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  396. /dev/ttyi1e : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  397. /dev/ttyi1b : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  398. /dev/ttyi1c : IN  cps=959, real=104.18, user=0.0, sys=0.0, errs=0, stray=0
  399. TEST tty=6, baud=9600, mode=-icanon, flow=ixoff
  400. TIME process=0.0, interrupt=31.2, total=31.2
  401. /dev/ttyi1e : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  402. /dev/ttyi1b : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  403. /dev/ttyi1f : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  404. /dev/ttyi1a : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  405. /dev/ttyi1c : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  406. /dev/ttyi1g : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  407. TEST tty=7, baud=9600, mode=-icanon, flow=ixoff
  408. TIME process=0.1, interrupt=36.1, total=36.1
  409. /dev/ttyi1b : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  410. /dev/ttyi1f : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  411. /dev/ttyi1e : IN  cps=959, real=104.18, user=0.0, sys=0.0, errs=0, stray=0
  412. /dev/ttyi1a : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  413. /dev/ttyi1c : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  414. /dev/ttyi1g : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  415. /dev/ttyi1d : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  416. TEST tty=8, baud=9600, mode=-icanon, flow=ixoff
  417. TIME process=0.2, interrupt=40.1, total=40.3
  418. /dev/ttyi1b : IN  cps=956, real=104.52, user=0.0, sys=0.0, errs=0, stray=0
  419. /dev/ttyi1a : IN  cps=956, real=104.52, user=0.0, sys=0.0, errs=0, stray=0
  420. /dev/ttyi1f : IN  cps=956, real=104.56, user=0.0, sys=0.0, errs=0, stray=0
  421. /dev/ttyi1e : IN  cps=956, real=104.52, user=0.0, sys=0.0, errs=0, stray=0
  422. /dev/ttyi1d : IN  cps=956, real=104.52, user=0.0, sys=0.0, errs=0, stray=0
  423. /dev/ttyi1c : IN  cps=956, real=104.52, user=0.0, sys=0.0, errs=0, stray=0
  424. /dev/ttyi1g : IN  cps=956, real=104.60, user=0.0, sys=0.1, errs=0, stray=0
  425. /dev/ttyi1h : IN  cps=956, real=104.60, user=0.0, sys=0.0, errs=0, stray=0
  426. TEST tty=1, baud=9600, mode=icanon, flow=ixoff
  427. TIME process=0.0, interrupt=13.4, total=13.4
  428. /dev/ttyi1a : IN  cps=960, real=104.14, user=0.0, sys=0.0, errs=0, stray=0
  429. TEST tty=2, baud=9600, mode=icanon, flow=ixoff
  430. TIME process=0.0, interrupt=24.4, total=24.5
  431. /dev/ttyi1e : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  432. /dev/ttyi1a : IN  cps=960, real=104.16, user=0.0, sys=0.0, errs=0, stray=0
  433. TEST tty=3, baud=9600, mode=icanon, flow=ixoff
  434. TIME process=12.6, interrupt=22.6, total=35.2
  435.               ...
  436.  
  437. Note that both the "errs" and "stray" counts should ideally be zero
  438. during this test until the consumer system becomes overloaded.
  439. Each system is different, but it is usually easy to see when things
  440. are beginning to go wrong.
  441.  
  442. When the test is complete, you should then run iprint to format
  443. the input results you got above.  Type the following command on
  444. the consumer system:
  445.  
  446.           iprint junk
  447.  
  448. This action will produce a report similar to the following:
  449.  
  450.  ports     baud      mode     flow      cps      errs      %sys      %host
  451.  -----    ------    ------   ------    -----    ------    -------   ------
  452.  
  453.     1     19200    -icanon    ixoff   1920.0      0.0       8.51     4.43
  454.     2     19200    -icanon    ixoff   1913.0      0.0      14.03     3.67
  455.     3     19200    -icanon    ixoff   1919.0      0.0      20.44     3.55
  456.     4     19200    -icanon    ixoff   1919.3      0.0      26.65     3.47
  457.     5     19200    -icanon    ixoff   1919.8      0.0      33.17     3.46
  458.     6     19200    -icanon    ixoff   1919.5      0.0      38.88     3.38
  459.     7     19200    -icanon    ixoff   1919.4      0.0      44.79     3.33
  460.     8     19200    -icanon    ixoff   1919.1      0.0      49.69     3.37
  461.     9     19200    -icanon    ixoff   1919.6      0.0      57.42     3.32
  462.    10     19200    -icanon    ixoff   1919.2      0.0      63.54     3.31
  463.    11     19200    -icanon    ixoff   1919.6      0.0      69.85     3.31
  464.    12     19200    -icanon    ixoff   1919.0      0.0      75.96     3.30
  465.    13     19200    -icanon    ixoff   1919.5      0.0      81.57     3.27
  466.    14     19200    -icanon    ixoff   1918.3      0.0      83.60     3.11
  467.    15     19200    -icanon    ixoff   1872.4      0.0      83.60     2.98
  468.    16     19200    -icanon    ixoff   1828.6      0.0      83.24     2.84
  469.  
  470.     1     38400    -icanon    ixoff   3839.0      0.0      12.03     3.13
  471.     2     38400    -icanon    ixoff   3840.0      0.0      21.45     2.79
  472.     3     38400    -icanon    ixoff   3839.7      0.0      31.28     2.72
  473.     4     38400    -icanon    ixoff   3838.8      0.0      41.11     2.68
  474.     5     38400    -icanon    ixoff   3839.6      0.0      50.43     2.63
  475.                              ...
  476.  
  477. The columns printed are:
  478.  
  479. baud    The test baud rate.
  480.  
  481. mode    The communication mode, either icanon (cooked) or -icanon
  482.     (raw).
  483.  
  484. flow    The flow control mode, either ixoff (input flow control)
  485.     -ixoff (no flow control).
  486.  
  487. cps    The character per second (cps) input speed actually measured.
  488.     Under ideal conditions, this will be the baud rate divided
  489.     by 10.  Lower numbers indicate a reduction in performance.
  490.     Higher numbers indicate the consumer system clock is running
  491.     slow during the test; check with a stopwatch.
  492.  
  493. errors    Number of 6 digit + checksum codes missing from the input
  494.     stream.  When this number goes non-zero, you may assume you
  495.     have begun to overload the producer system.
  496.  
  497. %sys    Percent of system time used during the steady-state portion of
  498.     the test.  This is computed by starting with 100%, subtracting
  499.     the "perf" program user time, and the idle time measured by
  500.     the "cpu" program.   Because it is a subtractive method, it
  501.     is less accurate at lower loads, and progressively more
  502.     accurate as the load increases.
  503.  
  504. %host    Percent of system time used per kilo-character of input
  505.     data received.
  506.  
  507. If there are any obvious inconsistencies in the input,  iprint will
  508. insert an error line to let you know.  You may wish to just edit out
  509. the input data in error, and replace it with corresponding comment
  510. lines explaining the problem.
  511.  
  512. If you wish, you may edit comment lines into your raw data files
  513. to identify details of the test, and problems you encountered.
  514. Such comments lines must contain a pound sign (#) in column 1.
  515. Comments are passed transparently through both oprint and iprint.
  516.