                   				    NETTEST    				 James M Synge 				 (SQM::JMSYNGE)  				VMS Performance  				    SQM/SSG    			     COPYRIGHT (C) 1987 BY - 		     DIGITAL EQUIPMENT CORPORATION, MAYNARD , 		      MASSACHUSETTS.  ALL RIGHTS RESERVED.      			       INTERNAL USE ONLY     L NETTEST is a VAX/VMS tool for collecting network performance information. InL particular it  attempts to push as many bytes through a link as possible forL a specified  duration  while  collecting VAX/VMS CPU usage data. NETTEST canL test  both  DECnet  and  VOTS logical links. It replaces READER/WRITER whichL were  the  tools previously used in the VMS Performance group for DECnet-VAX performance measurements.      What is the test?   ! The test conducted is as follows:   ) 	o Transparent task-to-task communication   + 	o One-way data flow (from local to remote)   : 	o Overlapped $QIO calls (same number on local and remote)  & 	o AST driven after initial $QIO calls  : 	o Low overhead (except when checking for data corruption)   	o Data sequence always checked   L This test  is not designed to test all possible senarios, but rather to testL peak  performance.  Thus  it  is  usually  used  in a contolled environment,L without  other  traffic on the data-link, and without other processes on the systems.     Why a new DECnet-VAX test tool?   L In addition  to supplanting READER/WRITER, NETTEST also provides much of theL functionality of  DTS/DTR,  and provides more complete data than DTS/DTR. It has the following features:   E 	o NETTEST is run totally from the command line. No need to use DEBUG E 	  and/or   PATCH   to   define   a   test  (as  was  the  case  with  	  READER/WRITER);  4 	o Many tests may be run with a single command line;  & 	o NETTEST is a single image, not two;  E 	o NETTEST  produces  single,  comprehensive  file of results for all E 	  participating  nodes,  in addition to displaying a user summary of 
 	  each test;   6 	o It can optionally check for corruption of the data;  1 	o Data may be aligned on any byte within a page;   : 	o Performance data from VAX/VMS routers may be collected;  @ 	o Both DECnet-VAX and VOTS can be tested with the same program.     Defining a NETTEST experiment   A The following qualifiers are used to define the basic experiment:    /MSG_SIZE = bytes ' /MSG_SIZE = (size-1, size-2,...,size-n)  	 E 	This sets the size[s] of the user data buffers to send with the $QIO E 	calls. If more than one size is specified, then multiple experiments 	 	are run.    /QUEUE_SIZE = elements2 /QUEUE_SIZE = (element-1, element-2,...,element-n)  E 	This defines  the  number  of  $QIO calls to perform before enabling / 	ASTs (i.e. an attempt to 'fill the pipeline').    /OPERATIONS = count   : 	The number of user data transfers in a single experiment.  3 /TIME_LIMIT ="ddd hh:mm:ss" (VMS Delta-Time format)   E 	Instead of  an  operations  limit, a time limit may be placed on the  	experiment.   Example:  C 	NETTEST/MSG_SIZE=256/QUEUE=(1,2)/OPERATIONS=5000/DESTINATION=GUIDO      Specifying the nodes  L The channel  will  be  opened  between the local node and a remote node. The remote node is defined:   ; /DESTINATION = node["[username [password [account]]]""][::]   L By default  the  channel  that  is  opened  is a DECnet-VAX channel, but the	 qualifier   	 /[NO]VOTS   : can be used to explicitly designate the transport to used.  L In addition,  VAX/VMS  performance data may be gathered on additional nodes.2 These nodes are specified in the following manner:   /ROUTER = node% /ROUTER = (node-1, node-2,...,node-n)   L No attempt  is  made  to confirm that these machines are routers, or if theyL are  the  routers being used for this communication link. This option is forL use  in  a  controlled  test  environment.  In such an environment, on couldL gather  information  about  the  cost  of  routing each packet. There is not9 currently any collection of OSI routing performance data.     ( There are also these additional options:   /OUTPUT = filename [ /APPEND ]  E 	These two  qualifiers control the saving of the results. The default E 	filename  is  NETTEST_RESULTS  and  the default filetype is LIS. The E 	/APPEND  qualifier tells NETTEST to append to the end of the current > 	version of the output file rather than to open a new version.   /REPEAT = count   E 	The repeat  count  is  the  number  of  times  to  repeat all of the E 	experiments.  All experiments are performed before any are repeated.    /ALIGNMENT = byte   E 	This allows  the  user data buffer to be misaligned with its initial ? 	page. The values are in the range 0 to 511.  The default is 0.      What NETTEST actually does  L The following  is  an  extremely  brief  overview  of the flow of control in NETTEST:      o Start all remote slaves,     L    o Perform  a single trial of the link with constant MSG_SIZE, QUEUE_SIZE,       OPERATIONS (or TIME_LIMIT),  B 	- Collect pre-experiment data on all routers (mode-counters, time 	  stamps, etc.), . 	- Send experiment description to destination,- 	- Read pre-experiment data from destination, ! 	- Read local pre-experiment data # 	- Disable ASTs and Resource Waits,  	- Fill the queue with output, 	- Enable ASTs, $ 	- At each completion, send another,@ 	- When time runs out, or the operations count has been reached,) 	  mark the next $QIO buffer as the last, . 	- Read post-experiment data from destination,# 	- Read local post-experiment data,  	- Enable Resource Waits, 1 	- Collect post-experiment data from the routers, C 	- Record  local,  destination  and  router performance data in the 1 	  output file, and report a summary to the user.   L    o If  multiple MSG_SIZE's were specified, then select the next and return      to step 2,   L    o If multiple QUEUE_SIZE's were specified, then select the next, reset to-      the first MSG_SIZE and return to step 2,   L    o Decrement  the  REPEAT  count,  if  positive  then  reset  to the first4      MSG_SIZE, and QUEUE_SIZE, and return to step 2,      o Otherwise, we're done.      Interpreting the console output   L The console  output  from  NETTEST  consists of some of the fields which areL placed  in  the  results file, plus some figures computed from results. LetsL look  at  the  output  from  a  single experiment run from node BIAC to node ENIAC:  E $ NETTEST/OPERATIONS=1000/MSG_SIZE=537/QUEUE_SIZE=1/DESTINATION=ENIAC    K BIAC     IOsize:   537 Qsize: 1 IOcnt:  1000 Etime:   1378 TotalCPU:   1378 K Type M Seq:   0 IO/Sec: 72.6 CPU/IO:   1.4 Int:   223 Krnl:   268 Ex:     0 K                 Mb/Sec: 0.30 CPU/Mb:   336 Sup:     0 User:   887 NL:     0 K ENIAC    IOsize:   537 Qsize: 1 IOcnt:  1000 Etime:   1378 TotalCPU:    852 K Type S Seq:   0 IO/Sec: 72.6 CPU/IO:   0.9 Int:   567 Krnl:   273 Ex:     0 K                 Mb/Sec: 0.30 CPU/Mb:   208 Sup:     0 User:    12 NL:   526    L The output  we  see has two records, each with three lines. The first recordL is  the  results from the Master node (the local node, which is the writer),L and  second is from the Slave node (the remote, reader node). The fields are as follows:    Label		MeaningG ----------	------------------------------------------------------------ > 		The first field is the name of the node whose results appear 		in this record. 6 IOsize		The size of the user buffer being transmitted.= Qsize		The number of QIOs performed before ASTs were enabled. 4 IOcnt		The total number of user buffers transmitted.> Etime		Elapsed time of the experiment in 10 millisecond units.D TotalCPU	The sum of the Interrupt, Kernel, Executive, Supervisor and< 		User modes counters.  These counters are maintained by VMS? 		and are based on a 10 millisecond interrupt (known as ticks).   > Type		Types are M)aster (writer), S)lave (reader) and R)outer.@ Seq		Each experiment has a unique sequence number (unique within 		a single results file.* IO/Sec		Average number of QIOs per second.- CPU/IO		Average number of 10ms ticks per QIO. ? Int		Interrupt mode clock ticks recorded during the experiment.  Krnl		Kernel mode clock ticks. Ex		Executive mode clock ticks.     ? Mb/Sec		Average number of megabits of user data transmitted per 	 		second. 1 CPU/Mb		Average number of 10ms ticks per megabit. ! Sup		Supervisor mode clock ticks.  User		User mode clock ticks. NL		Null process clock ticks.   L The one  difference  to  note  about  routers  is  that the operations countL represents the number of transit packets on that node (the number of packets which it routed).      Interpreting the results file   L The records  in  the  results  file are not really designed for reading, butL instead  are designed so that they can be read by data reduction tools (suchL as SORT and the program MASSAGE.EXE which is in the NETTEST kit). But it canL sometimes  be  useful  to  check  the file to ensure that the data reductionL tools  aren't discarding any important information. There are three types of records in the results file.  L When NETTEST  starts,  it  opens the results file and writes a set of headerL records consisting of a record with the NETTEST version number, four commentL records,  and  one  node  description  record for each of the nodes on whichL NETTEST  will  be running during the experiment (i.e. the master node, slaveL node   and  router  node[s]).  The  comment  fields  are  identified  by  anL exclamation  point  in the left-most column. For example, the header records4 of the NETTEST run previously shown were as follows:   V NETTEST V01.1 F ! NETTEST Node Types are M)aster (writer), S)lave (reader) and R)outer !             _Versions__ & ! Seq  Node   VMS  DECnet CPU  Circuit) ! ---- ------ ---- ------ ---- ---------- ) M 0000 BIAC   T5.0        2000            ) S 0000 ENIAC  T5.0        2000              L The first  line  starts  with  a  V  indicating  that it is a version numberL record.  This  line  is then followed by 4 comment records which are used asL labels  for  the  fields of the records which follow. The first character ofL the node description records is the Type of the node (in the NETTEST sense).) This is followed by the following fields:    Label		MeaningL ---------------	------------------------------------------------------------@ Seq		Each experiment has a unique sequence number (unique within 		a single results file.' Node		Name of the node being described.RH VMS Version	First four characters of the VMS version string from GETSYI. DECnet Version	Unused.? CPU		Type of the CPU from SYS$GETSYI (2000 is a MicroVAX-2000).n Circuit		Unused.  L Following these  records  are  the  comment  lines for the experiment resultL records  which  will  be written after each experiment. The rest of the fileI from the experiment previously shown looked like this (126 columns wide):h  Q !       Node T       Note: ALL times (including mode counters) are in 10ms units.r@ !            y                             ________DECnet_______~ !            p _________Experiment________       _Executor_ Line ____________Mode Counters_______________ Total   Process Page~ !Seq  Node   e Bytes Q Algn Operat Elapsed SegSz PipeQ BufSz RB Interr Kernel Execut Superv User   Null P CPU     CPU     Flts~ !---- ------ - ----- -- --- ------ ------- ----- ----- ----- -- ------ ------ ------ ------ ------ ------ ------- ------- ----~  0000 BIAC   M   537  1   0   1000    1378   537 ***** ***** **    223    268      0      0    887      0    1378     280    0~  0000 ENIAC  S   537  1   0   1000    1378   537 ***** ***** **    567    273      0      0     12    526     852     247    2  L Note that  the  experiment  result records begin with a blank character. The fields are:d   Label		MeaningG ----------	------------------------------------------------------------m@ Seq		Each experiment has a unique sequence number (unique within 		a single results file.? Node		The name of the node whose results appear in this record. B Node Type	Types are M)aster (writer), S)lave (reader) and R)outer.@ Bytes		The size, in bytes, of the user buffer being transmitted.9 Q		The number of QIOs performed before ASTs were enabled. / Algn		Alignment of the first byte of user data.iB Operat		The total number of user buffers transmitted.  In the case= 		of a router, this field takes on a different meaning: it isr  		the number of transit packets.@ Elapsed		Elapsed time of the experiment in 10 millisecond units.A SegSz		The number of bytes of user data which can fit in a singleo 		DECnet packet. PipeQ		Unused. BugSz.		Unused.  LineRB		Unused.zB Interr		Interrupt mode clock ticks recorded during the experiment.  Kernel		Kernel mode clock ticks.# Execut		Executive mode clock ticks.i$ Superv		Supervisor mode clock ticks. User		User mode clock ticks.! Null P		Null process clock ticks.nE Total CPU	The sum of the Interrupt, Kernel, Executive, Supervisor andf 		User modes counters.; Process CPU	Number of ticks charged to the NETTEST process. < Page Flts	Total number of page faults during the experiment.