ARMSUBSYS= System Option

Specifies whether to initialize the ARM subsystems, which determine the internal SAS processing transactions to be monitored.
Valid in: configuration file, SAS invocation, OPTIONS statement, SAS System Options window
Category: System administration: Performance
Default: (ARM_NONE)
Restriction: After you initialize the ARM subsystems, you cannot specify a different ARM agent using ARMAGENT=.

Syntax

ARMSUBSYS=(ARM_NONE | ARM_ALL | subsystem1 <item1<item2<...>>>
<, subsystem2<item1<item2<...>>>> <OFF> )

Syntax Description

ARM_NONE
specifies that no internal SAS processing transactions are written to the SAS logging facility or the ARM log. This is the default setting.
ARM_ALL
specifies that all internal SAS processing transactions are written to the SAS logging facility or the ARM log.
subsystem
specifies an ARM subsystem, which is a group of internal SAS processing transactions that are to be written to the SAS logging facility or the ARM log. The following subsystems are available:
ARM_DSIO
collects SAS data set I/O processing information.
ARM_PROC
collects SAS procedure and DATA step processing information.
item
specifies a name that determines the type and amount of transaction logging for each subsystem. Use item specifications as filters so that only the information that you are interested in is logged. For example, if you want one type of transaction, list the single item. If you want multiple transactions for a subsystem, list each item. Items are associated with each subsystem as follows:
ARM_DSIO
OPENCLOSE
logs a SAS data set open and close transactions as a start record when a data set is opened, and as a stop record when it is closed.
VARDEF
logs OPENCLOSE records and an update record for each defined variable (output opens).
VARSEL
logs OPENCLOSE records and an update record for each selected variable (input and update opens).
VARINFO
logs OPENCLOSE, VARDEF, and VARSEL records.
WHEREOPT
logs OPENCLOSE records and an update record for each selected index from a WHERE processing optimization. Available for the default Base SAS engine and the V6 compatibility engine only.
WHEREINFO
logs OPENCLOSE, WHEREOPT, and WHERETXT records.
WHERETXT
logs OPENCLOSE records and one or more update records that contain a textual representation of the active WHERE expression. Each record can hold approximately 1,000 bytes.
MIN
logs the minimum amount of information. For SAS 9, MIN logs the OPENCLOSE records.
MAX
logs the maximum amount of information. For SAS 9 and later, MAX logs all of the ARM_DSIO records. This is the default for ARM_DSIO.
LEVEL1
logs OPENCLOSE, VARDEF, and VARSEL records.
LEVEL2
logs LEVEL1, WHEREOPT, and WHERETXT records.
For more information about the logged records, see Understanding the Records Written by the ARM_DSIO Subsystem.
ARM_PROC
For more information about the logged records, see Understanding the Records Written by the ARM_PROC Subsystem.
OFF
disables the specified subsystem. In the following code, all subsystems are enabled for the DATA step, and then the ARM_PROC subsystem is disabled for the PRINT procedure:
options armsubsys=(arm_all);
data a; 
   x=1; 
run;
options armsubsys=(arm_proc off);
proc print; 
run;

Details

Overview of ARM Subsystems

The ARMSUBSYS= system option specifies whether to initialize the ARM subsystems, which determine the internal SAS processing transactions to be monitored. An ARM subsystem is a group of internal SAS processing transactions. When using the SAS logging facility and ARM 2.0, the records are routed to ARM2.Record.
If you want to specify a different ARM log location by using the ARMLOC= system option, be sure to issue the ARMLOC= option before you initialize an ARM subsystem. The subsystem start record is written to the new ARM log using the ARM2.Record pattern layout. For more information about pattern layouts, see ARM Appender Pattern Layouts for ARM Messages.

Understanding the Records Written by the ARM_DSIO Subsystem

The ARM_DSIO subsystem writes records to the SAS logging facility or the ARM log. This subsystem collects SAS data set I/O processing information. The records that are written to the SAS logging facility or the ARM log are:
I (initialization) record
is an initialization record, with one record written per session when the ARM subsystem is initialized. It starts with an I, followed by:
  • the SAS datetime value for session start
  • an application ID
  • a user start time
  • a system start time
  • an application name
  • a user ID
Output
I,1326479452.427000,1,1.171684,1.532203,SAS,sasabc"
G (GetID) record
is a transaction ID record, with one record written per transaction. It starts with a G, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • a transaction class ID
  • a transaction name
  • a transaction description
  • a description of the values provided in subsequent S (start) and P (stop) records
Output:
G,1326479452.447000,1,1,MVA_DSIO.OPEN_CLOSE,DATA SET OPEN/CLOSE,
   LIBNAME,ShortStr,MEMTYPE,ShortStr,MEMNAME,LongStr
LIBNAME refers to the libref for a SAS library, MEMTYPE refers to the member type (DATA or VIEW), and MEMNAME refers to a SAS data set name.
S (start) record
is a start record, with one record written each time a file is opened. It starts with an S, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • the transaction class ID from the G record
  • a transaction ID
  • a user (start) time
  • a system (start) time
  • the actual libref, member type, and member name of the opened file
Output:
S,1326479486.396000,1,1,1,1.311886,2.22908,WORK,DATA,GRADES
P (stop) record
is a stop record, with one record written each time a file is closed. It starts with a P, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • the transaction class ID from the G record
  • the transaction ID from the associated S record
  • a user (stop) time
  • a system (stop) time
  • the actual libref, member type, and member name of the closed file
Output:
P,1326479486.706000,1,1,1,1.331915,2.22908,0,WORK DATA,GRADES
U (update) record
is an update record, with one record written each time a variable is defined or selected, and each time an index is used during WHERE processing optimization. A U record displays the text of a WHERE expression. It starts with a U, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • the transaction class ID from the G record
  • the transaction ID from the associated S record
  • a user start time
  • a system start time
  • the detailed information for the type of U record being written
For variable definition and selection, the variable type is specified with a 1 for a numeric variable, or with a 2 for a character variable. The variable type with the name of the variable are followed by DEF for definition or SEL for selection.
Output:
U,1326479486.406000,1,1,1,1.321900,2.22908,2,VAR(2,Student),DEF
U,1326479508.508000,1,1,2,1.612318,2.443513,2,VAR(2,Student),SEL
For index selection, the index type is specified with an S for simple, or with a C for complex, followed by the name of the index.
U,1326479606.48000,1,1,4,2.403456,3.915630,2,INDEX(S,Test1),SEL
For WHERE expression text information, the expression is specified as:
U,1326479606.48000,1,1,4,2.403456,3.915630,2,WHERE(0),test1>60
E (end) record
is an end record, with one record written per session. It starts with an E, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • a user stop time
  • a system stop time
Output:
E,1326480210.737000,1,2.533643,4.25788

Understanding the Records Written by the ARM_PROC Subsystem

The ARM_PROC subsystem writes records to the SAS logging facility or the ARM log. This subsystem collects SAS procedure and DATA step processing information. The records that are written to the SAS logging facility or the ARM log are:
G (GetID) record
is a transaction ID record, with one record written per transaction. It starts with a G, followed by:
  • the SAS datetime value when the record was written
  • the application ID from the I record
  • a transaction class ID
  • a transaction name
  • a transaction description
  • a description of the values that are provided in subsequent S (start) and P (stop) records
Output:
G,1501177361.426000,1,2,PROCEDURE,PROC START/STOP,PROC_NAME,ShortStr,
     PROC_IO,Count64,PROC_MEM,Count64,PROC_LABEL,LongStr 
S (start) record
is a start record, with one record written immediately before the procedure executes. It starts with an S, followed by:
  • the SAS datetime value when the record was written
  • an application ID
  • a transaction class ID
  • a transaction ID
  • a user CPU (start) time
  • a system CPU (start) time
  • the procedure or DATA step name
  • the procedure or I/O count
  • the amount of memory used
  • the label name
Output:
S,1501177361.436000,1,2,2,0.350504,0.620892,DATASTEP,0,0,
GLMSTEPONE
P (stop) record
is a stop record, with one record written when the procedure terminates. It starts with a P, followed by:
  • the SAS datetime value when the record was written
  • an application ID
  • a transaction class ID
  • a transaction ID from the associated S record
  • a user CPU (stop) time
  • a system CPU (stop) time
  • the procedure or DATA step name
  • the procedure or I/O count
  • the amount of memory used
  • the label name
Output:
P,1501177361.776000,1,2,2,0.510734,0.741065,0,DATASTEP,8123483,333792,
GLMSTEPONE

Example

The following example shows the ARM subsystem ARM_DSIO, which collects SAS data set I/O processing information. The OPENCLOSE item logs the SAS data set open and close transaction.
options armsubsys=(ARM_DSIO OPENCLOSE);
The following example shows the ARM subsystem ARM_ALL, which specifies that all internal SAS processing transactions are written to the SAS logging facility or the ARM log.
options 
   armagent=SAS 
   armsubsys=arm_all;