Measures reported by AsAbapTaskLdTest
Typically, every work process in the SAP AS ABAP system specializes in a particular task type. These task types are as follows:
| Task Type |
Explanation |
| B.INPUT |
Transaction step in batch input mode; it is processed by the dialog work process (update dialogs generated in batch input are always processed synchronously, they belong to the UPDATE task type). |
| BACKGROUND |
Transaction step that was started by a background processing work process. |
| DIALOG |
Usually a transaction step started online by a user (for example, editor dialogs or manual postings). |
| SPOOL |
Transaction step of a spool work process |
UPDATE |
Transaction step of the SAP update task; it is automatically started by the dispatcher on a host with an active update process (update processes are usually installed on the database host) |
| UPDATE2 |
V2 update |
| LCOM |
The Fast RFC (fRFC or LCOM-RFC) is a very fast form of data transfer that uses a shared memory pipeline. It is only used in internal communication between ABAP and Java in the SAP Web AS. |
| HTTP, HTTPS, NNTP, SMTP, FTP |
Requests from the ICM that are based on the corresponding Internet protocols |
| ENQUEUE |
Enqueue handler |
| DIALOG(-)GUI |
Dialog without GUI |
EXT.PLUGIN
AUTOTH (Auto task handler)
RPCTH (Task handler remote procedure call)
RFCVMC (RFC inside VMC)
DDLOG CLEANUP
DEL. THCALL (Delayed task handler call)
AUTOJAVA
HTTP/JSP, HTTPS/JSP
|
The statistical evaluations of these task types are only relevant for internal SAP purposes. |
In addition to the above, there are some task types that do not correspond to any work process; these tasks represent specific applications in the dialog work process. Such task types are as follows:
| Task Type |
Explanation |
| AUTOABAP |
Automatically-processed report (for example, for monitoring tools) |
| BUFFERSYNC |
A synchronization of the local table buffers regularly requested by the SAP system (the time interval is controlled by the profile parameter rdisp/bufreftime). |
| RFC |
Remote Function Call in the ABAP system; it is processed by the dialog work process |
| CPIC |
Other communication using the CPIC interface; it is processed by the dialog work process |
| ALE |
iDoc processing; it is processed by the dialog work process |
Tasks, regardless of their type, add to the workload of a SAP AS ABAP system. In the event of a slowdown therefore, administrators should check the workload generated by each task type, analyze whether/not the ABAP system has the processing power to handle the load, isolate the task types where processing is bottlenecked, and understand where the bottleneck occurred - at the dispatcher? When rolling in user contexts? When loading objects? When waiting for RFC calls? When interacting with the database? when performing enqueue operations? The AsAbapTaskLdTest test provides administrators with answers to these questions!
This test auto-discovers the task types handled by the SAP ABAP system, and for each task type, reports the resource usage of the transactions of that type, measures the processing time of the transactions at various stages, and accurately pinpoints the following:
- The task type(s) that is consuming more resources than normal;
- The task type(s) that is taking too long to be processed and why;
The measures made by this test are as follows:
| Measurement |
Description |
Measurement Unit |
Interpretation |
| Activity |
Indicates the rate of steps executed for transactions of this task type in the last measurement period. |
Steps/Sec |
This is a good indicator of the workload imposed by a task type on the SAP ABAP instance. You can compare the value of this measure across task types to know which task type is generating the maximum load. |
| AvgCpuUtil |
Indicates the percentage of CPU resources utilized by the transactions of this task type. |
Percent |
Compare the value of this measure across task types to know which task type is using the maximum CPU and is probably causing a CPU contention on the system. You may then want to observe how this task type has been using CPU over time and figure out whether the CPU usage of that task type remains consistently high; if so, it could mean that that task type requires more processing power to execute. You may then want to consider resizing the SAP ABAP system with more CPU resources. |
| ExtSessMem |
Indicates the total memory used by the transactions of this task type during the last measurement period. |
MB |
This measure is the sum total of the roll memory, extended memory, and heap memory used by a process.
By comparing the value of this measure across transactions, you can accurately identify that task type which is consuming the maximum memory. If the memory usage of this transaction has been abnormally high consistently, it could indicate that the transaction is basically memory-intensive and requires more memory resources for proper execution. You should then figure out how much memory and of what type should be allocated to the task. For this, you may want to determine which memory type was being used the highest over time - is it heap memory? Roll memory? Or extended memory. The values of the PrivMem and the IntSessMem metrics will help administrators figure this out.
You can also use the detailed diagnosis of this measure to identify the top 3 memory-consuming transactions of a particular task type. |
| PrivMem |
Indicates the maximum PRIV mode heap memory consumed by transactions of this task type in the last measure period. |
MB |
SAP's memory management system assigns memory to a work process. The order in which a work process is assigned the memory type depends on the work process type, either dialog or non-dialog), and the underlying operating system. Some of the memory types are as follows:
- Roll area: The roll area memory is used for the initial memory assigned to a user context, and (if available) for additional memory if the expanded memory is full. The roll area consists of 2 segments. The first segment is assigned to the work process first as memory. If this is used up, the work process has more memory assigned to it.
- Extended memory: Each ABAP work process has a part reserved in its virtual address space for extended memory. The majority of the user context is stored in the extended memory. You can map the extended memory from the common resource onto any work process, and after onto another process on the same address in the virtual address space. This is important if you work with pointers in the ABAP program. The value of the IntSessMem measure indicates how each user is using this memory type.
- Private memory: If a dialog work process has used up the roll area assigned to it and the extended memory, private memory is assigned to the work process. The work process goes into PRIV mode (private). Other processes cannot use private (heap) memory. After releasing the assigned memory, the operating system still considers the (virtual) memory as being occupied by the allocating process.
A consistent increase in the value of the PrivMem measure for a user therefore indicates that transactions of that user are continuously using up all the roll area and extended memory, and are being forced to reach out to the private memory. This could mean that the user transactions are memory-intensive. If too many transactions are found to be using PRIV heap memory, it could mean that the work processes are sized with insufficient roll area and extended memory. You may hence want to allocate more roll area and extended memory to make sure that private memory usage is minimal.
|
| IntSessMem |
Indicates the maximum extended memory used by transactions of this task type in the last measure period. |
MB |
| WPRestarts |
Indicates the number of work process restarts caused by transactions of this task type in the last measure period. |
Number |
One of the common reasons for work process restarts is excessive usage of private memory. The work process, if it has used a lot of private memory, is restarted when the user context is terminated and the local memory is returned. The restart makes the local memory available again for other processes.
Regardless of what caused it, work process restarts are performance-impacting and need to be kept at a minimum. |
| MaxRespTime |
Indicates the maximum response time of the transaction steps of this task type in the last measurement period. |
Secs |
An SAP transaction normally extends over several transaction steps. During these steps, data such as variables, internal tables, and screen lists are built up and stored in the main memory of the application server.
This measure compares the response time of all the transaction steps executed by a transaction in the last measurement period and reports the highest response time.
Use the detailed diagnosis of this measure to identify the top 3 steps executed by this transaction with highest response times. This leads you to the probable cause for delay in the execution of a transaction in the last five minutes. Apart from the response time break up, the report and CUA programs that were running are also shown as part of detailed diagnosis. |
| StepRespTime |
Indicates the average response time of the transaction step of this task type in the last measurement period. |
Seconds/Step |
This measure is used by the BASIS administrators for comparing the response time across all the transaction steps executed by a transaction to determine which step is taking longer duration for execution. |
| AvgUserRespTime |
Indicates the total response time per transaction of this task type within the last measure period. |
Seconds/transaction |
This measure includes the response time taken at the server and the round trip times. Ideally, the value of this measure should be low. High values are indicative of poor responsiveness.
Compare the value of this measure across task types to identify the task type that is least responsive. To know the reason for the delay, you can compare the value of the guitime, guiNetTime, AvgRespTime, proctime, WPwaitTime, loadGenTime, avgRollTime, DBReqTime, locktime, and rfctime measures for that transaction. This will accurately pinpoint where a transaction spent maximum time - in the dispatcher queue? at the server end? in processing? when loading objects? when rolling in user contexts? when performing database operations? when performing enqueue operations? Or in waiting for RFC calls?
You can also use the detailed diagnosis of this measure to view the details of the top 3 transaction invocations that were least responsive. |
| guitime |
Indicates the average time taken for round trip communication steps between client and server in between a transaction of this task type. |
Seconds/transaction |
If the values of these measures are excessive, check that the hardware requirements for the presentation server are met and that the network between the application servers and the presentation servers is not experiencing shortages or slow traffic. |
| guiNetTime |
Indicates the average front end net time taken for the first and last steps of transactions of this task type. |
Seconds/transaction |
| AvgRespTime |
Indicates the average response time of a transaction of this task type at the server end. |
Seconds/transaction |
In the event of a processing slowdown, you can compare the value of this measure with other response time measures reported by this test to understand where the processing bottleneck lies. |
| proctime |
Indicates the average time taken to process a transaction of this task type. |
Seconds/transaction |
A high value for this measure may indicate that ABAP programs are very complex and the work processes spend a large amount of time interpreting what is to be done.
The processing time of the DIALOG task type for instance should be below twice the CPU time. The same for the UPDATE task type should be about 50% higher than that of the DIALOG task type. |
| WPwaitTime |
Indicates the average time that the transactions of this task type spent waiting for a free work process at the dispatcher. |
Seconds/transaction |
When the dispatcher receives a processing request, it looks for a free SAP work process of the required type and then sends the request to this work process, which begins the work. If all SAP work processes of the required type are busy when the request initially reaches the dispatcher, the request is placed in the dispatcher queue. In the dispatcher queue, the request waits until a work process of the required type is free. As soon as a work process is free, the dispatcher sends the request to it. This time the request spends in the dispatcher queue is indicated as the WPwaitTime.
For the DIALOG task type for instance, the value of this measure should be less than 10% of the value of the AvgUserRespTime measure. Higher values are indicative of performance problems. One common cause of such performance problems may be insufficient work processes. |
| loadGenTime |
Indicates the average time spent for a transaction of this task type for loading and generation. |
Seconds/transaction |
All ABAP programs and screens that are required but not yet available in the application server buffers must be loaded or generated. The time it takes to do this is indicated as loadGenTime. Loading a program also entails accessing database tables that store the ABAP programs.
Typically, for a DIALOG task type, the load time per step should not be greater than 50 ms.
High values could indicate problems with memory configuration, small buffer sizes, wrong parameter settings or a CPU bottleneck. |
| avgRollTime |
Indicates the average time spent by a transaction of this task type for rolling in user contexts or when waiting for roll out. |
Secs |
AN SAP transaction normally extends over several transaction steps. During these steps, data such as variables, internal tables, and screen lists are built up and stored in the main memory of the application server. This data is known as user context. Different transaction steps are normally processed by different dialog work processes. At the beginning of a transaction step, the user context is made available to the appropriate work process.This procedure is called roll-in. Roll-out on the other hand saves the current user-context data to virtual memory at the conclusion of a transaction step. The time a transaction step waited in the roll-area is called roll wait time.
The value of this measure is the sum total of roll-in time and roll wait time.
A high value for this measure indicates that the user transaction is either taking too long to roll in user contexts or is waiting too long in the roll-area for a roll-out to occur. Since a user context is moved out of the local memory of a work process and moved into the roll buffer during the roll-in process, improperly sized roll buffers can cause slowdowns in this process. Lack of adequate space in the extended memory can also contribute to a slowdown when rolling in user contexts.
Possible causes for high roll wait times may be due to having all work processes in the target system occupied. It is very important to configure the instances properly, especially when they are designed to handle RFC communication. |
| DBReqTime |
Indicates the average time spent by transactions of this task type for performing database operations such as selects, inserts, updates, deletes and commits. |
Seconds/transaction |
When data is read or changed in the dataase, the time required is known as DBReqTime. This time is measured from the moment the database request is sent to the database server and runs until the moment the data is returned to the application server.
Ideally, for the DIALOG task type, the value of this measure should be 40% of the total response time. Many factors can can cause worrysome spikes in this value. This could be problems in the database such as expensive SQL statement or wrong parameter settings in the database level. In addition, issues in network connectivity between the application server and the database can also adversely impact this value. This is because, the DBReqTime not only includes the time required by the database to produce the requested data, but also the time required for network transfer of that data. In addition, I/O contention experienced by the physical disks can also affect this time. |
| locktime |
Indicates the average time spent performing enqueue operations for a transaction of this task type. |
Seconds/Transaction |
The enqueue service allows SAP ABAP applications to lock data so that only they can use it. Locking the data prevents parallel changes to the same data, which would lead to data inconsistency.
The locktime measure reports the time from sending an enqueue request to the SAP enqueue server to the receipt of the results.
For a DIALOG task type typically, the locktime should be less than 5 ms. Any value higher than that would represent a problem that migh affect system stability. Network problems can also increase the value of this measure. |
| rfctime |
Indicates the average time spent waiting for RFC calls to get executed in a transaction of this task type. |
Seconds/Transaction |
The value of this measure includes CPIC (Common Programming Interface Communication) time as well. CPIC is typically used by the SAP system for program-to-program communication.
An increase in RFC time can increase roll wait time considerably. When synchronous RFCs are called, the work process executes a roll out and may have to wait for the end of the RFC in the roll area, even if the dialog step is not yet completed. In the roll area, RFC server programs can also wait for other RFCs sent to them. The time a transaction step waited in the roll-area is called roll wait time.
The absence of adequate work processes can cause the RFC time and consequently, the roll wait time to increase. Besides ensuring that the SAP ABAP system is sized with sufficient work processes, you can also set the following parameters properly to better balance RFC load:
- rdisp/rfc_max_comm_entries: This specifies the maximum number of communications in an instance. No more dialog work processes will be given to the program calling the target system after this number is reached.
- rdisp/rfc_min_wait_dia_wp: This specifies the number of work processes to be always available for online users.
|
| Invocations |
Indicates the number of active transaction invocations for this task type in the last measurement period. |
Number |
Ideally, the value of this measure is preferred to be low. A high value indicates high load on the transaction level. |
| NewInvocations |
Indicates the number of new transaction invocations for this task type in the last measurement period. |
Number |
Use detailed diagnosis of this measure to findout the exact invocation timestamp, program, terminal and other details for first transaction step of each new invocation. |
|