Slob 2: EAL Pplication Lusters
Slob 2: EAL Pplication Lusters
Slob 2: EAL Pplication Lusters
2
DISCLAIMER
PURPOSE
SLOB
2
FUNCTIONALITY
IN
COMMON
WITH
PRIOR
VERSIONS
TABLESPACE
REQUIREMENT
SYS
V
IPC
SEMAPHORES
DATABASE
CREATION
KIT
THE
RUNIT.SH
SCRIPT
CATCHING
UP
ON
THE
PAST
SLOB
2
WHAT'S
NEW?
USER
CONFIGURABLE
RUN
CHARACTERISTICS
TIMED
RUNIT.SH
COMPLETION
DATABASE
SCALE
SHARED
DATA
CONTENTION
REAL
APPLICATION
CLUSTERS
NO
MORE
READERS
WITH
WRITERS
THE
AWR_INFO.SH
SCRIPT
OS-LEVEL
PERFORMANCE
DATA
ABOUT
THE
DB_STATS.OUT
FILE
CONFIGURABLE
SELECT
UPDATE
RATIO
DATA
LOADING
INTRODUCING
THE
SLOB.CONF
FILE
LEGEND
UPDATE_PCT
RUN_TIME
WORK_LOOP
SCALE
WORK_UNIT
REDO_STRESS
SHARED_DATA_MODULUS
LOAD_PARALLEL_DEGREE
ABOUT
SQL*NET
CONNECTIVITY
AND
REAL
APPLICATION
CLUSTERS
SUPPORTMORE
USES
FOR
THE
SLOB.CONF
FILE
A
WARNING
ABOUT
SQL*NET
WITH
SLOB
ADMIN_SQLNET_SERVICE
SQLNET_SERVICE_BASE
SQLNET_SERVICE_MAX
SYSDBA_PASSWD
INTRODUCING
THE
AWR_INFO.SH
SCRIPT
LEGEND
FOR
AWR_INFO.SH
SCRIPT
COLUMNS
2
3
3
3
3
3
3
4
4
4
4
4
4
4
5
5
5
5
5
5
6
6
6
6
6
7
7
7
7
7
7
7
8
8
8
8
9
9
FILE SESSIONS ELAPSED EXECUTES PREADS READ_MBS PWRITES WRITE_MBS REDO_MBS DFSR_LAT DPR_LAT DFPR_LAT DFPW_LAT LFPW_LAT ADVANCED TOPICS WHERE TO GET MORE INFORMATION
9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 11
Disclaimer
THIS DOCUMENTATION IS PROVIDED FOR REFERENCE PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS DOCUMENTATION, THIS DOCUMENTATION IS PROVIDED "AS IS" WITHOUT ANY WARRANTY WHATSOEVER AND TO THE MAXIMUM EXTENT PERMITTED, PEAK PERFORMANCE SYSTEMS DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE SAME. PEAK PERFORMANCE SYSTEMS SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT, CONSEQUENTIAL OR INCIDENTAL DAMAGES, ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS DOCUMENTATION OR ANY OTHER DOCUMENTATION. NOTWITHSTANDING ANYTHING TO THE CONTRARY, NOTHING CONTAINED IN THIS DOCUMENTATION OR ANY OTHER DOCUMENTATION IS INTENDED TO, NOR SHALL HAVE THE EFFECT OF, CREATING ANY WARRANTIES OR REPRESENTATIONS FROM PEAK PERFORMANCE SYSTEMS (OR ITS SUPPLIERS OR LICENSORS), OR ALTERING THE TERMS AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT GOVERNING THE USE OF THIS SOFTWARE.
Purpose
SLOB
is
a
collection
of
computer
software
suitable
for
educational
purposes.
SLOB
is
helpful
for
studying
computer
systems
performance
including
server
hardware
and
software,
storage
system
hardware
and
firmware
and
storage
networking
hardware
and
firmware.
Users
should
seek
advice
regarding
license
to
use
any
third-party
software
involved
during
SLOB
testing
such
as
Operating
System
Software,
Storage
(and
Storage
Networking
Infrastructure)
Firmware
and
Oracle
Database.
The runit.sh script is used in SLOB 2 in the same manner as SLOB 1. Please see the section below that explains the changes to execution arguments for runit.sh.
The runit.sh script will now (optionally) run for N seconds. It is now possible to have SLOB execute for N iterations of the work loop for every session or to execute for a fixed number of seconds.
Database
Scale
The
setup.sh
script
now
supports
configurable
database
scale.
The
traditional
reference
scale
is
10,000
rows
into
blocks
that
each
hold
only
a
single
row.
Thus,
a
reference
scale
unit
is
roughly
82MB.
With
the
default
maximum
schema
users
the
traditional
SLOB
IOPS
tablespace
consumes
roughly
10.5GB.
Thusly,
setting
SCALE
in
slob.conf
to
1,000,000
generates
roughly
1TB
when
loading
128
SLOB
schema
users.
If you configure the slob.conf file appropriately every Nth operation will access the user0 schema. There is more information on this below in the section covering slob.conf parameters.
Data
Loading
There
is
a
configurable
parameter
to
drive
how
many
SLOB
schemas
are
populated
concurrently
when
executing
setup.sh.
A
good
limit
to
abide
by
is
1
stream
of
data
loading
per
processor
thread.
For
example,
as
per
the
information
in
the
following
tweet
about
pre-release
SLOB,
I
shared
timings
for
256GB
scale
loading
results
taken
from
a
2s16c32t
E5
Xeon
system
with
internal
PCI
Flash
DAS.
The
database
was
ready
to
test
in
roughly
26
minutes:
https://twitter.com/kevinclosson/status/330042240187650050 The parallelism for the loading process is controlled by slob.conf LOAD_PARALLEL_DEGREE parameter as discussed in further detail below.
SLOB is now configurable via settings in the slob.conf file. The following is the default slob.conf:
LEGEND
UPDATE_PCT
Set
to
N
where
N
is
the
percentage
of
all
SQL
that
will
be
UPDATE
DML
executions.
Values
between
51
and
99
are
non-deterministic.
Setting
to
0
or
100
are
the
functional
equivalent
of
prior
generations
of
SLOB
where
one
might
either
execute
100%
SELECT
or
100%
UPDATE
workload.
RUN_TIME
Set
to
N
where
N
is
the
number
of
seconds
you
want
the
test
to
run
(runit.sh).
This
can
be
overridden
with
WORK_LOOP.
If
you
set
RUN_TIME
you
should
set
WORK_LOOP
to
0.
WORK_LOOP
Set
to
N
where
N
is
the
fixed
number
of
loop
iterations.
Testing
in
this
manner
is
a
way
to
measure
job
completion
(drag
race)
as
opposed
to
fixed
test
period
with
sampling
of
stats.
If
you
want
to
do
a
fixed-iteration
test
I
recommend
setting
RUN_TIME
large
enough
to
make
sure
the
run
doesn't
end
based
on
RUN_TIME.
SCALE Set to N where N=10000 is the old SLOB scale. N==250000 is ~256GB with 8KB block and 128 schema users. WORK_UNIT SLOB picks a random 256 blocks to work on in each iteration of the work loop. You can make this a smaller "bite if you wish. This is not a very well tested tunable parameter so expect the unexpected. REDO_STRESS Set either to HEAVY or any other non-null value. HEAVY maps to the old writer.sql.heavy. Any value other than HEAVY reduces the redo payload in MB/s by about 80%. SHARED_DATA_MODULUS This parameter controls the degree of shared data contention. If set to a non-zero value it is used in modulo arithmetic for every UPDATE (as per UPDATE_PCT) to direct either to the session's private schema or shared data manipulation (the user0 schema). For example, if UPDATE_PCT is 25 and SHARED_DATA_MODULUS is 2 then 25% of all SQL will be UPDATE and of that half will settle on the shared schema (user0). In other words UPDATE_PCT=25 and SHARED_DATA_MODULUS=2 results in 12.5% of all SQL directed at the shared data schema. Setting this parameter to 1 results in 100% shared data UPDATE contention. If you enable shared data contention by setting SHARED_DATA_MODULUS expect to see the wait event enq: TX - row lock contention. LOAD_PARALLEL_DEGREE The setup.sh script uses this to control concurrent data loading. I recommend 1 per core at a minimum and 1 per processor thread at a maximum. Note: if your instance has Parallel Query Option enabled, setting LOAD_PARALLEL_DEGREE will result in concurrent parallel query loading. Concurrent loading that involves Parallel Query Option has been tested to varying degrees but your results may vary and require tuning of Parallel Query initialization parameters.
About
SQL*Net
Connectivity
and
Real
Application
Clusters
SupportMore
Uses
For
The
slob.conf
File
A
Warning
About
SQL*Net
With
SLOB
Its
best
to
ensure
your
SQL*Net
connectivity
worksas
intendedbefore
you
set
slob.conf
SQL*Net
parameters
and
start
executing
scripts.
Both the runit.sh and setup.sh scripts validate the slob.conf SQL*Net connections at runtime, however, the limit of that validation is whether or not a connection can be made. If you have slob.conf SQL*Net parameters configured to connect to database you do not intest to test with SLOB, well, SLOB has no knowledge of that. ADMIN_SQLNET_SERVICE If you want all SYSDBA connections to go through a specific tnsnames service then set this parameter accordingly. For example, you might care to have a SQL*Net service called SLOB_DBA. As such you would set: ADMIN_SQLNET_SERVICE=SLOBDBA. SQLNET_SERVICE_BASE This parameter serves multiple purposes. If SQLNET_SERVICE_BASE is set but SQLNET_SERVICE_MAX is NULL then SQLNET_SERVICE_BASE will be used during execution of runit.sh to direct all SLOB sessions to this service. On the other hand, if SQLNET_SERVICE_MAX is a non-zero integer then runit.sh will treat this value as the highest integer value to append to SQLNET_SERVICE_BASE during a round-robin connection test. In other words, if both of the parameters SQLNET_SERVICE_BASE and SQLNET_SERVICE_MAX are set then SQLNET_SERVICE_BASE becomes a base name and integer values 1 through SQLNET_SERVICE_MAX will be appended in a round-robin fashion. See SQLNET_SERVICE_MAX for more information. SQLNET_SERVICE_MAX If set to a non-zero integer SQLNET_SERVICE_MAX is the highest integer value appended to SQLNET_SERVICE_BASE in a Real Application Clusters testing scenario. For example, if SQLNET_SERVICE_MAX is 4 and SQLNET_SERVICE_BASE is set to SLOB then runit.sh will round-robin the connections from the SLOB1 service to SLOB2 then SLOB3 and so forth and back to SLOB1 once SQLNET_SERVICE_MAX has been reached. Its best to set this parameter to an equal divisor of the number of sessions you will test with (specifically the argument passed to runit.sh). SYSDBA_PASSWD If ADMIN_SQLNET_SERVICE is set then the scripts (setup.sh and runit.sh) will need a password to connect to the database via a SQL*Net service as SYSDBA. For example, if ADMIN_SQLNET_SERVICE is set to SLOB and youve configured the Oracle password file (via the orapwd utility) for SYSDBA to change_on_install then the scripts will use the following connect string for sqlplus to connect as SYSDBA:
sys/change_on_install@slob as sysdba
The awr_info.sh script takes awr.txt filesnamed as per the requisite naming conventionand produces helpful pipe-delimited output that can be pasted into a spreadsheet. When a run is complete, and awr.txt is named to awr.txt.N simply use awr_info.sh to get the facts about the run. In the following example there have been two executions of SLOB with different session counts and slob.conf configuration:
REDO_MBS Redo write throughput in megabytes per second. DFSR_LAT Latencies (service times) in microseconds for db file sequential read wait events. DPR_LAT Latencies (service times) in microseconds for direct path read wait events. DFPR_LAT Latencies (service times) in microseconds for db file parallel read wait events. DFPW_LAT Latencies (service times) in microseconds for db file parallel write background wait events. LFPW_LAT Latencies (service times) in microseconds for log file parallel write background wait events.
Advanced Topics
In the main SLOB directory you can find a subdirectory called advanced_topics such as:
This directory has the output produced by a bona fide run of SLOB using the slob.conf also in this directory. Additionally the directory contains the init.ora file andmost importantlythe screen capture from the run in the file called typescript. I highly recommend examining the contents of this directory once youve worked out the basics.
SLOB has gained a great deal of popularity. In addition to the above-cited web pages you can simply enter the search term oracle slob in your favorite search engine to learn what others in the user community are sharing about their use and knowledge of SLOB: