ARM SAS Documentation for Version 9
Syntax Overview | V9 ARM Log Format | SAS 9 Examples
Syntax Overview
ARM V9 is shipped with Base SAS. Additional Arm Macros are now available with SAS v9 to supplement the list of macros defined
in
SAS Arm Macros .
ARMAGENT= System Option (SAS Language Reference: Dictionary)
ARMLOC= System Option (SAS Language Reference: Dictionary)
ARMSUBSYS= System Option (SAS Language Reference: Dictionary)
Specifies an ARM agent, which is an executable module that contains a vendor's implementation of
the ARM API
Valid in:
|
configuration file, SAS invocation, OPTIONS statement, System Options window
|
Category:
|
System administration: Performance
|
PROC OPTIONS GROUP=
|
PERFORMANCE
|
-
module
-
is the name of the module that contains an ARM agent, which is a program module that contains a vendor's
implementation of the ARM API.
Default:
|
SAS ARM agent
|
Limitation:
|
The name cannot exceed eight characters.
|
An ARM agent is an executable module that contains a vendor's implementation of the ARM API. The ARM agent is a set of
executable routines that are called from an application. The ARM agent and SAS run concurrently. The SAS application passes
transaction information to the ARM agent, which collects and manages the writing of the ARM records to the ARM log. SAS, as
well as other vendors, provide an ARM agent.
You can specify another vendor's ARM agent in order to monitor both the internal SAS processing transactions (using
ARMSUBSYS=) as well as for user-defined transactions (using ARM macros).
|
"Monitoring Performance Using Application Response Measurement (ARM)" in SAS Language Reference:
Concepts.
|
|
System Options:
|
Specifies the location of the ARM log
Valid in:
|
configuration file, SAS invocation, OPTIONS statement, System Options window
|
Category:
|
System administration: Performance
|
PROC OPTIONS GROUP=
|
PERFORMANCE
|
ARMLOC=fileref | filename
|
-
fileref
-
is a SAS name that is associated with the physical location of the ARM log. To assign a fileref, use the FILENAME
statement.
-
'filename'
-
is the physical location of the log. Include the complete pathname and the filename. You can use either single or double
quotation marks.
Default:
|
Filename: ARMLOG.LOG
|
Restriction:
|
For all operating environments except OS/390, if you specify the ARMLOC= system option in your configuration
file, you must specify the filename, not a fileref.
|
The ARM log is an external output text file that contains the logged ARM transaction records. The ARM log gathers
transaction information for both the internal SAS processing transactions (depending on the value of the ARMSUBSYS= system
option) as well as for user-defined transactions (using ARM macros).
You can change the location of the ARM log after initializing an ARM subsystem, but records that were written to the old ARM
log are not copied to the new ARM log. Therefore, you should issue ARMLOC= before issuing the first ARMSUBSYS= so that all
records are written to the same ARM log.
|
"Monitoring Performance Using Application Response Measurement (ARM)" in SAS Language Reference:
Concepts.
|
|
System Options:
|
Enables and disables the ARM subsystems that determine the internal SAS processing transactions to be
logged
Valid in:
|
configuration file, SAS invocation, OPTIONS statement, System Options window
|
Category:
|
System administration: Performance
|
PROC OPTIONS GROUP=
|
PERFORMANCE
|
Restriction:
|
After you enable the ARM subsystems, you cannot specify a different ARM agent using ARMAGENT=.
|
Default:
|
Disabled
|
ARMSUBSYS=(ARM_NONE | ARM_ALL | subsystem1 <item1 <item2 <...> > > <, subsystem2 <item1 <item2 <...> > > >)
|
-
ARM_NONE
-
specifies that no internal SAS processing transactions are written to the ARM log. This is the default setting.
-
ARM_ALL
-
specifies that all available internal SAS processing transactions are written to the ARM log.
-
subsystem
-
specifies an ARM subsystem, which is a group of internal SAS processing transactions that are to be written to the ARM
log. The available subsystems are
-
ARM_DSIO
-
collects SAS data set I/O processing information.
-
ARM_IOM
-
collects IOM Server processing information.
-
ARM_PROC
-
collects SAS procedure and DATA step processing information.
-
ARM_OLAP_SESSION
-
collects SAS OLAP Server session information.
-
item
-
specifies a name that determines the type and amount of transaction logging for each subsystem. Use the item
specification(s) as a filtering technique so that only the details that you are interested in are logged. For example, if
you want only one type of transaction, list the single item, or if you want multiple transactions for a subsystem, list
each item that you want. Items are associated with each subsystem as follows:
-
ARM_DSIO
-
-
OPENCLOSE
-
logs a SAS data set open and close transaction as a start record when a data set is opened and 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 index that is selected as a result of WHERE processing
optimization. This update is 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 Version 9, MIN logs the OPENCLOSE records.
-
MAX
-
logs the maximum amount of information. For SAS Version 9, 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_IOM
-
logs records for IOM server methods to monitor performance of IOM servers. For more information about the logged
records, see Understanding the Records Written by the ARM_IOM Subsystem.
-
ARM_PROC
-
logs PROC and DATA step execution time, that is, when the step begins and when it terminates as a start and a stop
record. For more information about the logged records, see Understanding the Records Written
by the ARM_PROC Subsystem.
-
ARM_OLAP_SESSION
-
-
OLAP_SESSION
-
logs initialization and termination records in order to tell you which server was used and for how long. This
is the default transaction for the ARM_OLAP_SESSION subsystem.
-
MDX_QUERY
-
logs a record for each query sent. This transaction stores the cube name and the size of the result set in
cells, which are additional identifiers or metrics.
-
DATA_QUERY
-
logs a record for each region execution, that is, each individual data retrieval from stored cube
aggregations or from the cache. The transaction class stores the following additional identifiers or metrics:
|
region ID
|
|
aggregate ID
|
|
number of returned records
|
|
source type (MOLAP, CSAS, CACHE, CSPDS)
|
The DATA_QUERY transaction serves as the primary input for both automatic and manual cube optimization.
-
MDX_STRING
-
logs a record for the MDX_QUERY transaction that contains the actual MDX query string.
For more Information about the logged records, see Understanding the Records Written by
the ARM_OLAP_SESSION Subsystem.
The ARMSUBSYS= system option enables and disables the ARM subsystems, which determine the internal SAS transaction
processing for which you want to monitor. An ARM subsystem is a group of internal SAS processing transactions such as DATA
and PROC step processing and file input/output processing.
If you want to specify a different ARM log location by using the ARMLOC= system option, be sure to issue ARMLOC= before you
enable an ARM subsystem so that the subsystem initialization record is written to the new log.
Note: There is a subsystem for collecting memory usage information. For more information about that subsystem, contact SAS
Technical Support.
The ARM_DSIO subsystem writes records to the ARM log that collects SAS data set input/output processing information. These
are the records written to the ARM log:
-
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, and a user ID:
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, an application ID from the I record, a transaction class ID, a transaction name, a
transaction description, then a description of the values provided in subsequent S (start) and P (stop) records. LIBNAME
refers to the libref for a SAS data library, MEMTYPE refers to the member type (either DATA or VIEW), and MEMNAME refers
to a SAS data set name.
G,1326479452.447000,1,1,MVA_DSIO.OPEN_CLOSE,DATA SET OPEN/CLOSE,
LIBNAME,ShortStr,MEMTYPE,ShortStr,MEMNAME,LongStr
-
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, an application ID from the I record, transaction class ID from the G record, a
transaction ID, a user start time, a system start time, then the actual libref, member type, and member name of the
opened file:
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, an application ID from the I record, a transaction class ID from the G record, a
transaction ID from the associated S record, a user start time, a system start time then the actual libref, member type,
and member name of the closed file:
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 displays the text of a WHERE expression. It starts with a U, followed by the SAS
datetime value when the record was written, an application ID from the I record, a transaction class ID from the G
record, a transaction ID from the associated S record, a user start time, a system start time followed by 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 numeric or a 2 for character, then
the name of the variable followed by DEF for definition or SEL for selection:
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 a C for complex, then 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:
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, an application ID from the I record, a user stop time, anda system stop time:
E,1326480210.737000,1,2.533643,4.25788
The ARM_IOM subsystem writes records to the ARM Log that collects IOM server method processing information. These records
are written to the ARM log:
-
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, and a user ID:
I,1327874323.742000,1,0.220316,0.320460,SAS,sasxxx
-
G (GetID) record
-
is a transaction ID record, with one record written for each method and attribute and one record written for creating the
correlator. It starts with a G, followed by the SAS datetime value when the record was written, an application ID from
the I record, a transaction class ID, then method and attribute transaction names. Method and attribute transactions are
named component name::method/attribute name, or, if the interface and component names are not
the same, component name::interface name::method/attribute name:
G,1327874341.77000,1,2,TestTypes::SetParent,
-
S (start) record
-
is a start record, with one record written upon entering each method or attribute. If a correlator is available, it is
placed on the transaction. (The correlator is created by a separate Start transaction on the transaction defined for that
purpose.) The record 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 start time, a system start time:
S,1327874344.1000,1,1,1,0.620892,0.741065
-
P (stop) record
-
is a stop record, with one record written upon exiting each method or attribute. 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 start time, and a system start time:
P,1327874348.658000,1,9,2,0.620892,0.741065,0
Here is an ARM log for the ARM_IOM subsystem:
ARM Log for ARM_IOM Subsystem
I,1327874323.742000,1,0.220316,0.320460,SAS,sasmaa
G,1327874328.28000,1,1,IOMCOMPETrans,Transaction for creating correlator
G,1327874341.77000,1,2,TestTypes::SetParent,
G,1327874341.77000,1,3,TestTypes::TypeBoolean,
G,1327874341.77000,1,4,TestTypes::TypeDateTime,
G,1327874341.77000,1,5,TestTypes::TypeDouble,
G,1327874341.77000,1,6,TestTypes::TypeEnum,
G,1327874341.77000,1,7,TestTypes::TypeFloat,
G,1327874341.77000,1,8,TestTypes::TypeInterface,
G,1327874341.77000,1,9,TestTypes::TypeLong,
G,1327874341.77000,1,10,TestTypes::TypeOctet,
G,1327874341.77000,1,11,TestTypes::TypeShort,
G,1327874341.77000,1,12,TestTypes::TypeString,
G,1327874341.77000,1,13,TestTypes::TypeUUID,
G,1327874341.77000,1,14,TestTypes::TypeAny,
G,1327874341.77000,1,15,TestTypes::TypeBoolean1dArray,
G,1327874341.77000,1,16,TestTypes::TypeDateTime1dArray,
G,1327874341.77000,1,17,TestTypes::TypeDouble1dArray,
G,1327874341.77000,1,18,TestTypes::TypeEnum1dArray,
G,1327874341.77000,1,19,TestTypes::TypeFloat1dArray,
G,1327874341.77000,1,20,TestTypes::TypeLong1dArray,
G,1327874341.77000,1,21,TestTypes::TypeOctet1dArray,
G,1327874341.77000,1,22,TestTypes::TypeShort1dArray,
G,1327874341.87000,1,23,TestTypes::TypeString1dArray,
G,1327874341.87000,1,24,TestTypes::TypeUUID1dArray,
G,1327874341.87000,1,25,TestTypes::TypeAny1dArray,
G,1327874341.87000,1,26,TestTypes::TypeBoolean2dArray,
G,1327874341.87000,1,27,TestTypes::TypeDateTime2dArray,
G,1327874341.87000,1,28,TestTypes::TypeDouble2dArray,
G,1327874341.87000,1,29,TestTypes::TypeEnum2dArray,
G,1327874341.87000,1,30,TestTypes::TypeFloat2dArray,
G,1327874341.87000,1,31,TestTypes::TypeLong2dArray,
G,1327874341.87000,1,32,TestTypes::TypeOctet2dArray,
G,1327874341.87000,1,33,TestTypes::TypeShort2dArray,
G,1327874341.87000,1,34,TestTypes::TypeString2dArray,
G,1327874341.87000,1,35,TestTypes::TypeUUID2dArray,
G,1327874341.87000,1,36,TestTypes::TypeAny2dArray,
G,1327874341.87000,1,37,TestTypes TestMult Name Get,
G,1327874341.87000,1,38,TestTypes::ExceptionTest,
G,1327874341.87000,1,39,TestTypes::ExceptionTestAttr Get,
G,1327874341.87000,1,40,TestTypes::ExceptionTestAttr Set,
G,1327874341.87000,1,41,TestTypes::ServerAdmin::ServerAdminStart,
G,1327874341.87000,1,42,TestTypes::ServerAdmin::ServerAdminStop,
G,1327874341.87000,1,43,TestTypes::ServerAdmin::ServerAdminDeferredStop,
G,1327874341.87000,1,44,TestTypes::ServerAdmin::ServerAdminPause,
G,1327874341.87000,1,45,TestTypes::ServerAdmin::ServerAdminContinue,
G,1327874341.87000,1,46,TestTypes::ServerAdmin::ServerAdminUniqueID Get,
G,1327874341.87000,1,47,TestTypes::ServerAdmin::ServerAdminName Get,
G,1327874341.87000,1,48,TestTypes::ServerAdmin::ServerAdminName Set,
G,1327874341.87000,1,49,TestTypes::ServerAdmin::ResetServerPerformance,
G,1327874341.87000,1,50,TestTypes::ServerAdmin::GetServerPerformance,
G,1327874341.87000,1,51,TestTypes::ServerAdmin::GetServerPerformanceByCLSID,
G,1327874341.87000,1,52,TestTypes::ServerAdmin::GetServerPerformanceByUserID,
G,1327874341.87000,1,53,TestTypes::ServerAdmin::JnlAccess,
G,1327874341.87000,1,54,TestTypes::CreateSession,
G,1327874341.87000,1,55,TestTypes::RemoveChild,
G,1327874341.87000,1,56,TestTypes::SeveralTypes,
G,1327874341.87000,1,57,TestTypes::Several1dArrays,
G,1327874341.87000,1,58,TestTypes::Several2dArrays,
G,1327874341.87000,1,59,TestTypes::FireEvents,
S,1327874344.1000,1,1,1,0.620892,0.741065
C,1327874348.658000,1,9,2,1,1,0.620892,0.741065
P,1327874348.658000,1,9,2,0.620892,0.741065,0
P,1327874348.658000,1,1,1,0.620892,0.741065,0
S,1327874348.688000,1,1,3,0.620892,0.741065
C,1327874348.688000,1,3,4,1,3,0.620892,0.741065
P,1327874348.688000,1,3,4,0.620892,0.741065,0
P,1327874348.688000,1,1,3,0.620892,0.741065,0
The ARM_PROC subsystem writes records to the ARM log that collects SAS procedure and DATA step processing information. These
are the records written to the ARM log:
-
S (start) record
-
is a start record, with one record written immediately before the procedure starts execution. 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 start time, a system start time, then the procedure or DATA step name:
S,1323716628.571000,1,1,2,2.834075,8.482196,PRINT
-
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 start time, and a system start time:
P,1323716633.398000,1,1,2,2.944233,8.772614,0
The ARM_OLAP_SESSION subsystem writes records to the ARM log that collects information about a SAS OLAP Server session.
These records are written for the OLAP_SESSION transaction. The initialization and termination records tell you who was
logged on to which server and for how long:
-
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 of session start, an application ID, a user CPU time, a system CPU time, an
application name OLAP_SESSION, and a user ID:
I,1320592800.822000,2,0.380547,0.630907,OLAP_SESSION,sasabc
-
E (end) record
-
is a termination record, with one record written per session. It starts with an E, followed by the SAS datetime value of
session end, an application ID from the I record, a user CPU time for session, and a system CPU time for session:
E,1320592802.805000,2,1.281843,0.791137
These records are written for the MDX_QUERY transaction, which records each query sent. These records provide the cube name
and the size of the result set in cells:
-
G (GetID) record
-
is an MDX_QUERY transaction record, with one record written per session. It starts with a G, followed by the SAS datetime
value when the record was written, an application ID from the I record, a transaction class ID, a transaction name
MDX_QUERY, a transaction description MDX Query, then a description of the values that are provided in subsequent S
(start) and P (stop) records. Result Set Size refers to the size of the returned query in cells, and Cube Name is the
name of the cube being queried.
G,1320594857.747000,3,2,MDX_QUERY,Mdx Query,Result Set Size,Gauge32,
Cube name,LongStr
-
S (start) record
-
is a start record, with one record written for each query. It starts with an S, followed by the SAS datetime value when
the query started, an application ID from the I record, a transaction class ID from the G record, a transaction ID, a
user CPU time, a system CPU time:
S,1320594857.787000,3,2,2,1.341929,0.731051,,
-
P (stop) record
-
is a stop record, with one record written for each query. It starts with a P, followed by the SAS datetime value when the
query ended, an application ID from the I record, a transaction class ID from the G record, a transaction ID from the
associated S record, a user CPU time, a system CPU time, the status (0=OK, 2=query failed), the size of returned query in
cells, and the name of the cube that was queried:
P,1320594858.948000,3,2,2,2.52952,0.781123,0,5,MDDBCARS
These records are written for the DATA_QUERY transaction, which records each region execution, that is, each individual data
retrieval from stored cube aggregations or from cache. These records provide region IDs, aggregate IDs, the number of
returned records, the source type, and the thread index. The DATA_QUERY transaction is the primary input for both automatic
and manual cube optimization.
-
G (GetID) record
-
is a DATA_QUERY transaction identifier record, with one record written per session. It starts with a G, followed by the
SAS datetime value when the record was written, an application ID from the I record, a transaction class ID, a
transaction name DATA_QUERY, a transaction description plug-in call, then a description of the values that are provided
in subsequent S (start) and P (stop) records:
G,1326641491.169000,3,10,DATA_QUERY,Plugin Call,Query #,Id32,Source #,
Id32,Result Set Size,Gauge32,Source Type,Id32,Thread Index,Gauge32
-
S (start correlated subquery) record
-
is a start correlated subquery record if there is no MDX_QUERY record to correlate to, with one record written for each
data access. It starts with an S, followed by the SAS datetime value when the subquery started, an application ID from
the I record, a transaction class ID from the G record, a transaction ID, a user CPU time, and a system CPU time:
S,1320596204.653000,2,2,2,1.51512,0.630907
-
C (start correlated subquery) record
-
is a start correlated subquery record if there is an MDX_QUERY record to correlate to, with one record written for each
data access. It starts with a C, followed by the SAS datetime value when the subquery started, an application ID from the
I record, a transaction class ID from the G record, a transaction ID, a parent transaction class ID, a parent transaction
ID, a user CPU time, and a system CPU time:
C,1320596204.653000,2,2,2,1,1,1.51512,0.630907
-
P (stop correlated subquery) record
-
is a stop correlated subquery record, with one record written for each data access. It starts with a P, followed by the
SAS datetime value when the subquery ended, an application ID from the I record, a transaction class ID from the G
record, a transaction ID, a user CPU time, a system CPU time, a status (0=OK, 2=subquery failed), an ID of subquery, an
ID of data source, the size of returned query in records, the plug-in type (0=MOLAP, 1=CSAS, 2=CACHE, 3=CSPDS), and
thread index:
P,1320596205.485000,2,2,2,1.181699,0.670964,0,1,31,5,0,0
This record is written for the MDX_STRING transaction, which writes an additional record for the MDX_QUERY transaction. The
record contains the actual MDX query string.
-
U (update) record
-
is an update record, with one record written for each query. It starts with a U, followed by the SAS datetime value when
the record was written, an application ID from the I record, a transaction class ID from the G record, a transaction ID
from the S record, a user CPU time, a system CPU time, a buffer type (always 2, which indicates that 1,024 bytes of text
will follow), and then the actual MDX string:
U,1320589796.262000,2,1,1,0.670964,2,SELECT {.[DATEH].[ALL DATE].
CHILDREN} ON COLUMNS, {[MEASURES].[MEASURES].[SALES_SUM]}
ON ROWS FROM MDDBCARS
|
"Monitoring Performance Using Application Response Measurement (ARM)" in SAS Language Reference:
Concepts.
|
|
System Options:
|