Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
neo
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
Kirill Smelkov
neo
Commits
16ac482c
Commit
16ac482c
authored
Mar 02, 2018
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
f5fec740
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
72 additions
and
16 deletions
+72
-16
go/neo/t/benchlib.py
go/neo/t/benchlib.py
+1
-2
go/neo/t/benchplot
go/neo/t/benchplot
+71
-14
No files found.
go/neo/t/benchlib.py
View file @
16ac482c
...
...
@@ -27,7 +27,6 @@ from __future__ import print_function
import
re
,
io
,
numpy
as
np
from
collections
import
OrderedDict
from
cStringIO
import
StringIO
# Benchmark is a collection of benchmark lines.
...
...
@@ -216,7 +215,7 @@ def xload(r):
extv
=
[]
for
lineno
,
text
in
xr
.
extblockv
:
bext
,
lext
=
load
(
StringIO
(
text
.
encode
(
'utf-8'
)
))
bext
,
lext
=
load
(
io
.
StringIO
(
text
))
if
len
(
bext
)
!=
0
:
raise
RuntimeError
(
"%s:%d: neotest extension block contains benchmark line"
\
%
(
getattr
(
r
,
name
,
'?'
),
lineno
))
...
...
go/neo/t/benchplot
View file @
16ac482c
...
...
@@ -29,8 +29,6 @@ from matplotlib.patches import Rectangle
from
mpl_toolkits.axes_grid1.inset_locator
import
zoomed_inset_axes
,
mark_inset
,
\
TransformedBbox
,
BboxPatch
,
BboxConnectorPatch
from
pprint
import
pprint
# BenchSeries represents several runs of a benchmark with different "-<n>".
#
...
...
@@ -226,6 +224,7 @@ def plotseries(ax, labkey, S):
# show on the right ticks for last y values
ax2
=
ax
.
twinx
()
ax2
.
set_ylim
(
ax
.
get_ylim
())
# same y scale as on ax
ax2
.
set_yticks
([])
# no other ticks except for values
add_yvalueticks
(
ax2
,
yticks_
)
...
...
@@ -256,6 +255,32 @@ def plotlat1(ax, S):
# labtext returns text representation of ordered label {}.
def
labtext
(
labels
,
nowarnings
=
False
):
textv
=
[]
for
k
,
v
in
labels
.
items
():
if
k
==
'WARNING'
:
if
not
nowarnings
:
for
warn
in
v
:
textv
.
append
(
'WARNING: '
+
warn
)
else
:
textv
.
append
(
'%s: %s'
%
(
k
,
v
))
return
'
\
n
'
.
join
(
textv
)
# labwarn returns warning text, if any.
def
labwarn
(
labels
):
warnv
=
labels
.
get
(
'WARNING'
)
if
not
warnv
:
return
''
textv
=
[]
for
warn
in
warnv
:
textv
.
append
(
'WARNING: '
+
warn
)
return
'
\
n
'
.
join
(
textv
)
def
main
():
...
...
@@ -266,8 +291,7 @@ def main():
date
=
None
for
ext
in
extv
:
if
'xnode'
not
in
ext
:
textv
=
[
'%s: %s'
%
(
k
,
v
)
for
k
,
v
in
ext
.
items
()]
raise
RuntimeError
(
'ext block without xnode:
\
n
%s'
%
(
'
\
n
'
.
join
(
textv
),))
raise
RuntimeError
(
'ext block without xnode:
\
n
%s'
%
labtext
(
ext
))
xnode
=
ext
[
'xnode'
]
# kirr@deco.navytux.spb.ru (... XXX vvv hacky, not robust
_
=
xnode
.
split
()[
0
]
# kirr@deco.navytux.spb.ru
...
...
@@ -275,7 +299,9 @@ def main():
node
=
_
.
split
(
'.'
)[
0
]
nodemap
[
node
]
=
ext
if
'date'
in
ext
:
if
date
is
None
:
date
=
ext
[
'date'
]
del
ext
[
'date'
]
# XXX if date = None -> warning "no date found"
...
...
@@ -287,8 +313,6 @@ def main():
Bl
=
B
.
bylabel
(
splitby
)
for
labkey
in
Bl
:
print
labkey
# FIXME hack
if
labkey
==
():
# cpu benchmarks
continue
...
...
@@ -296,12 +320,15 @@ def main():
Bu
=
Bl
[
labkey
].
byunit
()
fig
=
plt
.
figure
(
figsize
=
(
2
*
7.5
,
10
))
# XXX figsize - temp?
fig
.
suptitle
(
"ZODB server handling read requests"
)
fig
.
text
(
0.5
,
0.04
,
"XXX number of clients running simultaneously"
,
ha
=
'center'
)
#fig = plt.figure(figsize=(2*7.5,10)) # XXX figsize - temp?
fig
=
plt
.
figure
(
figsize
=
(
12
,
11
))
# XXX figsize - temp?
fig
.
suptitle
(
"ZODB server handling read requests"
,
y
=
0.995
)
#fig.text(0.5, 0.04, "XXX number of clients running simultaneously", ha='center')
fig
.
text
(
0.5
,
0.204
,
"XXX number of clients running simultaneously"
,
ha
=
'center'
)
ax1
=
plt
.
subplot
(
121
)
#ax1 = plt.subplot(121)
ax1
=
plt
.
subplot2grid
((
7
,
2
),
(
0
,
0
),
rowspan
=
6
)
ax1
.
set_title
(
u'#requests, object/s (↑ is better)'
)
# XXX add vspace between title and plot
# XXX req/s hardcoded. XXX other units?
...
...
@@ -313,7 +340,10 @@ def main():
plt
.
text
(
"xxx not found"
)
ax2
=
plt
.
subplot
(
122
)
#ax2 = plt.subplot(122)
#ax2 = plt.subplot2grid((1,2), (0,1))
ax2
=
plt
.
subplot2grid
((
7
,
2
),
(
0
,
1
),
rowspan
=
6
)
ax2
.
set_title
(
u'latency, µs/object (↓ is better)'
)
Slat
=
xseriesof
(
Bu
[
Unit
(
u'latency-µs/object'
)])
...
...
@@ -353,13 +383,40 @@ def main():
#fig.tight_layout()
fig
.
subplots_adjust
(
left
=
0.05
,
# no big marging on the left
right
=
0.95
,
# ----//---- r
top
=
1.00
-
0.045
,
#bottom=0.05,
#wspace=0.1
)
# date
fig
.
text
(
0.003
,
0.995
,
date
,
ha
=
'left'
,
va
=
'top'
)
fig
.
text
(
0.003
,
0.995
,
date
,
ha
=
'left'
,
va
=
'top'
,
fontsize
=
8
)
# XXX fs -> 7
# text about nodes
# XXX also verify we have all nodes from `cluster`
assert
len
(
nodemap
)
<=
2
# XXX fragile
nodemap
[
'rio'
]
=
nodemap
[
'deco'
]
# FIXME temp
for
i
,
node
in
enumerate
(
nodemap
):
ax
=
plt
.
subplot2grid
((
7
,
2
),
(
6
,
i
),
rowspan
=
1
)
# XXX 7,6 hardcoded
ax
.
set_axis_off
()
h
=
1.00
-
0.10
hmargin
=
0.01
tsty
=
{
'fontsize'
:
6
,
'linespacing'
:
0.9
,
'ha'
:
'left'
,
'va'
:
'top'
}
warn
=
labwarn
(
nodemap
[
node
])
if
warn
:
t
=
ax
.
text
(
0.01
,
h
-
hmargin
,
warn
,
color
=
'red'
,
**
tsty
)
#print t.get_position(), t.get_unitless_position()
#print t.get_window_extent(renderer=fig.canvas.get_renderer())
#print t.axes
h
-=
0.08
*
len
(
warn
.
split
(
'
\
n
'
))
# XXX hack
ax
.
text
(
0.01
,
h
-
hmargin
,
labtext
(
nodemap
[
node
],
nowarnings
=
True
),
**
tsty
)
#plt.savefig('2.svg')
plt
.
show
()
return
# XXX temp to show only first
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment