Skip to content

Commit d59a072

Browse files
3.1.2 (#13)
* Starting 3.1.1 * Add parse failure to oltp with external control * errortime on also for debug RWL-601 * oltpforever new -s option; longoptions * oltpforever debug version by mistake * Don't drop session after banner * Only set OCI_ATTR_CONNECTION_CLASS on session pool if explictly given * Missing comment on cclass change * Improve misc output * Fix bug with ampersand at end of SQL * Fix bug with ampersand at end of sql * Improve some output resolution * rwl_min/max_pool in env file * gnuplotjs empty implies mousing standalone * Fix some double issues with sprintf, rwld2s * Arrival rate bursts in oltp can be repeated * Change burst_repeat, fix running plots * Plot dropped if time_out on oltprun command line * Add burst_function * Misc code for distributing oltpcore/mtitcore processes * Reservere test/362.rwl for trig functions * In 24h sim, make no hard parse/full scan the default * Add key option to oltpplot, oltpdirectory * Add oltprunnumber * trig code changes and test * sin cos atan2 added to rwlman * Fix RWL-236 / mute141 * Add title to running throughput plot * oltpplot --gnuplot-extra option * Final trigonometry stuff * $oraerror:nocount directive * Even more possibilities to change graphs in oltpplot * Typo fixes * External control parsefailure updates * oltpplot --no-client-cpu option * oltpplot --no-x2label * oltpplot: --ses-simplified option * CHanged text with --ses-simplified * xc logoff in more transactions * Allow not printing parse failure to stderr * ignore_parsefailure can be set ahead of oltpxcrun * Some doc updates, new oltp tags file * Cleanup bison warnings from missing %empty * Fix a shift/reduce conflict * Nicer html man pages using monospace for code * Missing ref from statement to simpledeclaration * Add ref to rwlprogram in statement rwlman page * A few error message changes * Update ERROR.md, ERRORLIST.md * $oraerror:nocount is now default * RWL-278 reported on wrong line * Test for incorrect RWL-217 * Create global awrreport * Add global awr generation * Wrap long awr lists * Add percentiles_oltp view for the oltp workload * fflush to make tail nicer * Add batch pool counts to cli.csv * Add plot of total open sessions client side * Change rampup for rwl_batch * Use *rand48_r on Linux, move all includes to rwl.h * Provide own rand48 implementation * Minor changes ro rwlrand48 * Replace getopt_long with own rwlgetopt * A few getopt fixes and code hardening * Windows \r\n stuff plus a few minor things * Updated ERRORLIST.md * Include bison/flex generated files in repository * Windows port * readlob with length and offset * Started writelob-lo, changes to relevant tests * Always find public directory; windows updates * oltpxc has cpu hog and wait * Three digits in double xc_marker * Windows slash convert and crnlreadline * Some Windows stuff * Cannot use regex in rwlbdident due to Windows * Some windows changes * Undo some incorrectly added obj files * Even more Windows work * Various MS Windows fixes * Allow sql_id() for anonymous sql * ociping uses filecommands.rwl * Windows slash conversions * ashplot on Windows * Update generated files * ashplot, ociping on Windows * More Windows updates * Fix typo * No error if dir exists * Windows documentation * Fix rwlunixepoch on Windows * Fix some timing etc on Windows * Changes to make and ship on Windows * $filelinename directive * wrong ++ * Recreated most html * Changes for dtime and atime * Only plot atime, dtime if available * Updated ERRORLIST.md * ERRORLIST.md is generated * OCIPing wrapped with o/d time * log scale default for end-to-end time graphs * HOMEDRIVE/HOMEPATH on Windows * Few man changes * include oci.h after all system includes * Windows command and makefile * Few doc updates before 3.1.1 release * 3.1.1 release * Add .cmd files * proper name for .zip * Doc updates for 3.1.1 * writelob --------- Co-authored-by: Jack Kennedy <jack.f.kennedy@oracle.com>
1 parent 69a870c commit d59a072

File tree

360 files changed

+40447
-6390
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

360 files changed

+40447
-6390
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@ new.git.branch
55
.nfs*
66
afiedt.buf
77
bin/rwloadsim??
8+
bin/*.exe
89
bin/rwloadsim.vg
910
bin/rwlerror
1011
genbin11/*
1112
genbin19/*
1213
lib/*.o
14+
lib/*.obj
15+
lib/*.lib
1316
dist-rwl-bin.sh
1417
push_to_remotes.sh
1518
make.generated.sh

CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# RWP\*Load Simulator Release Notes
22

3+
## 3.1.2
4+
5+
* Bug fixes
6+
* Statisitcs count only increased when no ORA- error during execution
7+
* Add parsefailure to oltp external control
8+
* awrreport can generate global report
9+
* You can use sql\_id() without a name to get sqlid of immediate or embedded sql
10+
* rwloadsim itself is available on Microsoft Windows; not the oltp workload
11+
* Changes to repository
12+
* Full end-to-end tracing (on Linux only)
13+
14+
Note that there was no release 3.1.1
15+
316
## 3.1.0
417

518
* Bug fixes

admin/.vim/syntax/rwl.vim

+31-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
" Vim syntax file
22
" Language: RWP*Worklod Simualator
33
" Maintainer: Bjørn Kisbye Ensig
4-
" Latest Revision: 13 sep 2023
4+
" Copyright (c) 2023 Oracle Corporation
5+
" Licensed under the Universal Permissive License v 1.0
6+
" as shown at https://oss.oracle.com/licenses/upl/
7+
" Latest Revision: 28 feb 2024
58

69
if exists("b:current_syntax")
710
finish
@@ -23,7 +26,7 @@ syn keyword rwlKeyword getenv system opensessioncount activesessioncount serverr
2326
syn keyword rwlKeyword unsigned hexadecimal octal printf fprintf encode decode elseif
2427
syn keyword rwlKeyword connectionpool connectionclass sprintf global querynotification
2528
syn keyword rwlKeyword normalrandom statisticsonly ceil trunc floor
26-
syn keyword rwlKeyword lobprefetch readlob writelob
29+
syn keyword rwlKeyword lobprefetch readlob writelob atan2 winslashf2b winslashf2bb
2730
syn keyword rwlKeyword getrusage instr instrb regexextract nextgroup=rwlNumber skipwhite
2831

2932
syn match rwlVariable "\$#"
@@ -38,7 +41,7 @@ syn match rwlNumber '\<\d\+[Ee][+-]\?\d\+'
3841
syn match rwlNumber '\<\d\+\.\d*[Ee][+-]\?\d\+'
3942

4043
syn match rwlComment "#.*$"
41-
syn region rwlString start=+"+ skip=+\\\n\\\\\|\\"+ end=+"+
44+
syn region rwlString start=+"+ skip=+\\\n\|\\\\\|\\"+ end=+"+
4245

4346
syn match rwlString '\$[A-Z][_A-Za-z0-9]*'
4447

@@ -94,6 +97,10 @@ syn region rwlSQL start='\<\ccreate[ \t\n]\+\(or[ \t\n]\+replace[ \t\n]\+\)\?lib
9497
syn match rwlDirective '\$statistics:basic'
9598
syn match rwlDirective '\$statistics:histograms'
9699
syn match rwlDirective '\$statistics:all'
100+
syn match rwlDirective '\$statsdbtime:on'
101+
syn match rwlDirective '\$statsdbtime:off'
102+
syn match rwlDirective '\$statsapptime:on'
103+
syn match rwlDirective '\$statsapptime:off'
97104
syn match rwlDirective '\$ampersand:on'
98105
syn match rwlDirective '\$ampersand:off'
99106
syn match rwlDirective '\$queueeverytiming:on'
@@ -113,6 +120,8 @@ syn match rwlDirective '\$reconnect1017:off'
113120
syn match rwlDirective '\$pre31fileassign:warn'
114121
syn match rwlDirective '\$pre31fileassign:on'
115122
syn match rwlDirective '\$pre31fileassign:off'
123+
syn match rwlDirective '\$trigonometry:radians'
124+
syn match rwlDirective '\$trigonometry:degrees'
116125
syn match rwlDirective '\$niceabort:on'
117126
syn match rwlDirective '\$niceabort:off'
118127
syn match rwlDirective '\$queue:on'
@@ -133,6 +142,7 @@ syn match rwlDirective '\$ora01013:stop'
133142
syn match rwlDirective '\$ora01013:continue'
134143
syn match rwlDirective '\$oraerror:stop'
135144
syn match rwlDirective '\$oraerror:continue'
145+
syn match rwlDirective '\$oraerror:nocount'
136146
syn match rwlDirective '\$oerstatistics:on'
137147
syn match rwlDirective '\$oerstatistics:off'
138148
syn match rwlDirective '\$implicit:off'
@@ -152,15 +162,16 @@ syn match rwlDirective '\$randseed:[0-9a-fA-F][0-9a-fA-F]*'
152162
syn match rwlDirective '\$randseed:0[xX][0-9a-fA-F][0-9a-fA-F]*'
153163
syn match rwlDirective '\$longoption:[a-z][-a-z]*'
154164
syn match rwlDirective '\$longoption:[a-z][-a-z]*=[^ ][^ ]*'
155-
syn match rwlDirective '\$userhelp:"[^"]*"'
165+
syn match rwlDirective '\$userhelp:"[^\n]*"'
156166
syn match rwlDirective '\$useroption:[a-zA-Z][-0-9a-zA-Z_]*'
157-
syn match rwlDirective '\$useroption:[a-zA-Z][-0-9a-zA-Z_]*:"[^"]*"'
167+
syn match rwlDirective '\$useroption:[a-zA-Z][-0-9a-zA-Z_]*:"[^\n]*"'
158168
syn match rwlDirective '\$userswitch:[a-zA-Z][-0-9a-zA-Z_]*'
159-
syn match rwlDirective '\$userswitch:[a-zA-Z][-0-9a-zA-Z_]*:"[^"]*"'
169+
syn match rwlDirective '\$userswitch:[a-zA-Z][-0-9a-zA-Z_]*:"[^\n]*"'
160170
syn match rwlDirective '\$debugon:[0-9A-Za-z][0-9a-zA-Z,]*'
161171
syn match rwlDirective '\$debugoff:[0-9A-Za-z][0-9a-zA-Z,]*'
162172
syn match rwlDirective '\$include:"[^"<>]*"'
163173
syn match rwlDirective '\$include:<[^"<>]*>'
174+
syn match rwlDirective '\$filelinename:[0-9][0-9]*:"[^"<>]*"'
164175
syn match rwlDirective '\$sqllogging:file:"[^"<>]*"'
165176
syn match rwlDirective '\$sqllogging:append:"[^"<>]*"'
166177
syn match rwlDirective '\$sqllogging:stdout'
@@ -170,13 +181,27 @@ syn match rwlDirective '\$if[^o]'
170181
syn match rwlDirective '\$then'
171182
syn match rwlDirective '\$else'
172183
syn match rwlDirective '\$endif'
184+
syn match rwlDirective '\$linux'
185+
syn match rwlDirective '\$solaris'
186+
syn match rwlDirective '\$windows'
187+
syn match rwlDirective '\$macos'
173188
syn match rwlDirective '\$embeddeddmlarray:\d\+'
174189
syn match rwlDirective '\$embeddedqueryarray:\d\+'
175190
syn match rwlDirective '\$bindoutname:on'
176191
syn match rwlDirective '\$bindoutname:on:[a-zA-Z][0-9a-zA-Z_]*'
177192
syn match rwlDirective '\$bindoutname:off'
178193
syn match rwlDirective '\$musymbol:[^ ][^ ]*'
179194
syn match rwlDirective '\$hostname:[a-zA-Z0-9_][-a-zA-Z0-9_\.]*'
195+
syn match rwlDirective '\$slashconvert:on'
196+
syn match rwlDirective '\$slashconvert:off'
197+
syn match rwlDirective '\$crnlreadline:on'
198+
syn match rwlDirective '\$crnlreadline:off'
199+
syn match rwlDirective '\$crnlwriteline:on'
200+
syn match rwlDirective '\$crnlwriteline:off'
201+
syn match rwlDirective '\$crnlstring:on'
202+
syn match rwlDirective '\$crnlstring:off'
203+
syn match rwlDirective '\$crnlgeneral:on'
204+
syn match rwlDirective '\$crnlgeneral:off'
180205

181206

182207
let b:current_syntax = "rwl"

admin/rwl312.sql

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-- update the RWP*Load Simulator repository
2+
-- for version 3.1.1
3+
--
4+
-- Copyright (c) 2023 Oracle Corporation
5+
-- Licensed under the Universal Permissive License v 1.0
6+
-- as shown at https://oss.oracle.com/licenses/upl/
7+
--
8+
-- Changes
9+
--
10+
-- NAME DATE COMMENTS
11+
-- bengsig 19-dec-2023 Add ignore_parsefailure column to oltpxc
12+
-- bengsig 3-oct-2023 Add parsefailure column to oltpxc
13+
-- bengsig 25-apr-2023 Creation
14+
--
15+
alter table oltpxc add
16+
( parsefailure number
17+
, ignore_parsefailure number)
18+
/
19+
20+
update oltpxc set parsefailure = 0
21+
, ignore_parsefailure=0
22+
/
23+
commit
24+
/
25+
26+
alter table oltpxc add
27+
( cpusec number
28+
, waitsec number
29+
)
30+
/
31+
update oltpxc set cpusec=0
32+
, waitsec=0
33+
/
34+
commit
35+
/
36+
37+
alter table persec add
38+
( atime number (*,6)
39+
, dtime number (*,6)
40+
)
41+
/
42+
43+
alter table runres add
44+
( atime number (*,6)
45+
, dtime number (*,6)
46+
)
47+
/

admin/rwloadsim.sql

+8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
-- Changes
88
--
99
-- NAME DATE COMMENTS
10+
-- bengsig 1-mar-2024 atime,dtime column
1011
-- bengsig 25-apr-2022 MTIT
1112
-- bengsig 1-nov-2022 Make sequence nocache to prevent many lost numbers
1213
-- bengsig 12-oct-2022 Add wtime,etime to persec
@@ -44,6 +45,8 @@ create table runres
4445
, vname varchar2(30) not null
4546
, wtime number(*,6)
4647
, etime number(*,6)
48+
, atime number(*,6)
49+
, dtime number(*,6)
4750
, ecount number
4851
, tcount number
4952
, constraint runres_pk primary key(runnumber, procno, vname)
@@ -70,6 +73,8 @@ create table persec
7073
, scount number
7174
, wtime number(*,6)
7275
, etime number(*,6)
76+
, atime number(*,6)
77+
, dtime number(*,6)
7378
, constraint persec_pk primary key(runnumber, procno, vname, second)
7479
)
7580
organization index
@@ -181,6 +186,9 @@ create table oltpxc
181186
, affinity number
182187
, rowspins number
183188
, arraysize number
189+
, parsefailure number
190+
, cpusec number
191+
, waitsec number
184192
, constraint oltpxc_pk primary key(key, hostname)
185193
)
186194
/

admin/rwlviews.sql

+133
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
-- as shown at https://oss.oracle.com/licenses/upl/
66

77
-- History
8+
-- bengsig 1-mar-2024 - dtime, atime
9+
-- bengsig 23-jan-2024 - Add percentiles_oltp for use by the oltp workload
810
-- bengsig 12-oct-2022 - Updated persec_a with wtime,etime
911
-- bengsig 09-sep-2020 - Remove legacy
1012
-- bengsig 2017 - Creation
@@ -44,6 +46,8 @@ select
4446
, sum(scount) scount
4547
, sum(wtime) wtime
4648
, sum(etime) etime
49+
, sum(atime) atime
50+
, sum(dtime) dtime
4751
from persec
4852
group by runnumber, vname, second
4953
/
@@ -54,9 +58,13 @@ create or replace view runres_a
5458
, vname
5559
, wtime
5660
, etime
61+
, atime
62+
, dtime
5763
, tcount
5864
, avgw
5965
, avge
66+
, avga
67+
, avgd
6068
, ecount
6169
)
6270
-- aggregate multi process runs
@@ -67,9 +75,13 @@ select
6775
, vname
6876
, sum(wtime) wtime
6977
, sum(etime) etime
78+
, sum(atime) atime
79+
, sum(dtime) dtime
7080
, sum(tcount) tcount
7181
, avg(decode(ecount,0,null,wtime/ecount)) avgw
7282
, avg(decode(ecount,0,null,etime/ecount)) avge
83+
, avg(decode(ecount,0,null,atime/ecount)) avga
84+
, avg(decode(ecount,0,null,dtime/ecount)) avgd
7385
, sum(ecount) ecount
7486
from runres
7587
group by runnumber, vname
@@ -211,3 +223,124 @@ group by runnumber
211223
-- ... and do the group by on the rounded value
212224
, round(second)
213225
/
226+
227+
-- The following view is used by the oltp workload
228+
-- and takes skipped transactions into account
229+
create or replace view percentiles_oltp
230+
-- show selected total execution time percentiles
231+
as
232+
select x.runnumber
233+
, x.vname
234+
, avg(y.avge+y.avgw/*+nvl(y.avgq,0)*/) avgt
235+
, avg(pct50) pct50
236+
, avg(pct90) pct90
237+
, avg(pct95) pct95
238+
, avg(pct98) pct98
239+
, avg(pct99) pct99
240+
, avg(pct995) pct995
241+
, avg(pct998) pct998
242+
, avg(pct999) pct999
243+
, avg(pct9995) pct9995
244+
from
245+
(
246+
select
247+
runnumber
248+
, vname
249+
, case when x5000 not between leftt and rightt then null else
250+
leftb+(rightb-leftb)*(x5000-leftt)
251+
/decode(rightt,leftt,null,rightt-leftt)
252+
end pct50
253+
, case when x9000 not between leftt and rightt then null else
254+
leftb+(rightb-leftb)*(x9000-leftt)
255+
/decode(rightt,leftt,null,rightt-leftt)
256+
end pct90
257+
, case when x9500 not between leftt and rightt then null else
258+
leftb+(rightb-leftb)*(x9500-leftt)
259+
/decode(rightt,leftt,null,rightt-leftt)
260+
end pct95
261+
, case when x9800 not between leftt and rightt then null else
262+
leftb+(rightb-leftb)*(x9800-leftt)
263+
/decode(rightt,leftt,null,rightt-leftt)
264+
end pct98
265+
, case when x9900 not between leftt and rightt then null else
266+
leftb+(rightb-leftb)*(x9900-leftt)
267+
/decode(rightt,leftt,null,rightt-leftt)
268+
end pct99
269+
, case when x9950 not between leftt and rightt then null else
270+
leftb+(rightb-leftb)*(x9950-leftt)
271+
/decode(rightt,leftt,null,rightt-leftt)
272+
end pct995
273+
, case when x9980 not between leftt and rightt then null else
274+
leftb+(rightb-leftb)*(x9980-leftt)
275+
/decode(rightt,leftt,null,rightt-leftt)
276+
end pct998
277+
, case when x9990 not between leftt and rightt then null else
278+
leftb+(rightb-leftb)*(x9990-leftt)
279+
/decode(rightt,leftt,null,rightt-leftt)
280+
end pct999
281+
, case when x9995 not between leftt and rightt then null else
282+
leftb+(rightb-leftb)*(x9995-leftt)
283+
/decode(rightt,leftt,null,rightt-leftt)
284+
end pct9995
285+
from
286+
(
287+
select runnumber
288+
, vname
289+
--, buckno
290+
, bucktim/2 leftb
291+
, bucktim rightb
292+
, bcount
293+
, nvl(sum(bcount)
294+
over
295+
( partition by runnumber, vname
296+
order by bucktim
297+
rows between unbounded preceding
298+
and 1 preceding)
299+
, 0) leftt
300+
, sum(bcount) over (partition by runnumber, vname order by bucktim) rightt
301+
, sum(bcount) over (partition by runnumber, vname) gtotal
302+
, sum(bcount) over (partition by runnumber, vname) * 0.5 x5000
303+
, sum(bcount) over (partition by runnumber, vname) * 0.9 x9000
304+
, sum(bcount) over (partition by runnumber, vname) * 0.95 x9500
305+
, sum(bcount) over (partition by runnumber, vname) * 0.98 x9800
306+
, sum(bcount) over (partition by runnumber, vname) * 0.99 x9900
307+
, sum(bcount) over (partition by runnumber, vname) * 0.995 x9950
308+
, sum(bcount) over (partition by runnumber, vname) * 0.998 x9980
309+
, sum(bcount) over (partition by runnumber, vname) * 0.999 x9990
310+
, sum(bcount) over (partition by runnumber, vname) * 0.9995 x9995
311+
, 100 * sum(bcount) over (partition by runnumber, vname order by bucktim)
312+
/ sum(bcount) over (partition by runnumber, vname)
313+
bcpct
314+
from ( select runnumber, vname, buckno, bucktim, bcount from histogram_a
315+
union all
316+
-- the following will add an artificial row with above all real rows
317+
-- which distributes the call_failure rows onto the vnames
318+
-- by the distrubution of really done calls
319+
select good.runnumber
320+
, good.vname
321+
, 30 buckno -- This value MUST match #define RWL_MAX_HIST_BUCK 30 in rwl.h
322+
, 2048 bucktim -- and the same here
323+
, fail.failcount * good.ecount / decode(fail.totalcount,0,null,fail.totalcount) bcount
324+
from
325+
(
326+
select runnumber, vname, ecount from runres_a
327+
where vname != 'call_failure'
328+
) good
329+
left join
330+
(
331+
select runnumber
332+
, sum(decode(vname,'call_failure',ecount,0)) failcount
333+
, sum(decode(vname,'call_failure',0,ecount)) totalcount
334+
from runres_a
335+
group by runnumber
336+
) fail
337+
on good.runnumber = fail.runnumber
338+
)
339+
)
340+
) x
341+
join runres_a y
342+
on x.runnumber = y.runnumber
343+
and x.vname = y.vname
344+
group by x.runnumber, x.vname
345+
/
346+

0 commit comments

Comments
 (0)