statistics

NAME
SYNOPSIS
DESCRIPTION
USAGE
TABLES
VIEWS
DATES
NOTES
COPYRIGHT
SEE ALSO

NAME

rwlman − RWP*Load Simulator execution statistics

SYNOPSIS

An important feature of the RWP*Load Simulator is to save execution statistics and make these available for later processing, graphing, reporting, etc. To do this, a repository database is required that typically is different from the database under test. In your rwloadsim program, procedures executing sql are the items on which various times are measured and saved. Through options to rwloadsim, you can decide how much statistics will be saved.

The actual save of statistics to the repository database takes place just before termination of rwloadsim, except when using the --flush-every option.

DESCRIPTION

Consider the example shown at threadexecution(1rwl) where three procedures named abc, def, and xyz, are declared. Each of them is assumed to implement some business logic that is being simulated. When one of these procedures execute against a database using a session pool, these steps are involved:

get session from pool

execute business logic

release session back to pool

When simple statistics (using -s or --statistics option to rwloadsim), the times taken to get the session and to execute the business logic are measured and the sum from all executions of these two measurements together with an execute count are saved in the repository database together with the name of the procedure.

The total time to get the session from the pool and to execute the business logic would be the time perceived by an end-user who cannot distinguish between the two. If you are using -ss or --histograms rwloadsim will additionally save histograms of this total time. After each execution, the total time is grouped into a bucket that is a factor two wide, so buckets may be intervals like [1ms;2ms], [2ms;4ms], [4ms;8ms], etc and the count of executions in each bucket together with the total time for that bucket is saved in the repository.

By using -sss or --persecond rwloadsim will additionally keep track of the number of executions and time spent of each procedure per second through the whole run.

USAGE

In order to save any statistics, you need to have a database declared with the results attribute. For each execution of rwloadsim with a results database and with one of the statistics options, a sequence number is retrieved from the results database. This sequence number is saved in various tables in the RUNNUMBER column and it is available in your rwloadsim program in the variable runnumber.

In multi-process runs, a number of rwloadsim processes are using the same number; however each process is saving its own statistics values to the repository tables. Therefore, all such tables have a column named PROCNO, which is the Operating System process number unless provided by a -p procno option to rwloadsim.

To get aggregated results for all processes in one multi-process run, there are additional views in the repository database; these are roughly the same as their underlying tables but have a PCOUNT column in stead of the PROCNO column.

TABLES

The repository contains the following tables:

rwlrun

Stores information about each run such as its runnumber, a key and a comment provided as options to rwloadsim, common start time, etc.

runres

Saves statistics from the -s option including procedure name, total time spent getting a session and total time executing.

histogram

Saves statistics from the -ss option including procedure name, bucket interval, count and total time in each bucket.

persec

Saves statistics from the -sss option including procedure name, second after the common start time, the count of executions in that second, the time spent to potentially get a session from a pool and the time spent executing these.

oerstats

Saves statistics from the -r option, which effectively is a log of all ORA- errors received. Note that the default behavior of rwloadsim after receiving an ORA- error is to continue unless you have used the $oraerror:stop directive.

rwlcpu, sysres, rwlash, ashdata

These tables are not used by rwloadsim but are created in the repository. There are used by the standard oltp workload.

VIEWS

In addition to tables, the repository has views. For the three primary tables, runres, histogram, persec and for the auxiliary table rwlcpu views named runres_a, histogram_a, persec_a, rwlcpu_a, perform aggregation.

The following additional views exist:

percentiles

For each run and procedure, the view shows average and 50%, 90%, etc. percentiles of the user perceived execution times; i.e. the sum of the time to get a session and to execute the actual code.

fractiles

For each run and procedure, the view shows the histogram information and additionally show the percentage of all executions that is at least as fast as the upper limit in each histogram bucket.

DATES

The rwlrun table has a column, rdate, that stores the common start time for control loops, which is the time rwloadsim (the prepare step in case of multi-process) was started plus the value of the --startseconds option. The column is of type DATE, and the value for this date is always in UTC timezone irrespective of your settings for environment variables that control timezone settings.

NOTES

Several tables contain a column named seconds which represents the number of seconds into a run. You cannot use that column to do joins between tables as the actual value is with microsecond resolution.

Several tables have evolved over time and have had columns added in specific releases of rwloadsim. As a result, the order of columns may not be the same as in the documentation to the various tables. You should thefore never depend on ’select *’ returning columns in some specific order.

COPYRIGHT

Copyright © 2023 Oracle Corporation

Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl

SEE ALSO

rwloadsim(1rwl), directive(1rwl), rwlrun(1rwl), runres(1rwl), histogram(1rwl), persec(1rwl), oerstats(1rwl), percentiles(1rwl), rwlcpu(1rwl), sysres(1rwl), multiprocess(1rwl), rwlash(2rwl), ashdata(2rwl), oltp(2rwl)