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
7a97206e
Commit
7a97206e
authored
Sep 07, 2017
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
X timings as of Sep 7 morning
parent
1fce1043
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
183 additions
and
66 deletions
+183
-66
go/neo/t/t.sh
go/neo/t/t.sh
+39
-35
go/neo/t/zsha1.go
go/neo/t/zsha1.go
+1
-1
go/time-sep7.txt
go/time-sep7.txt
+100
-0
go/todo.dot
go/todo.dot
+6
-3
go/todo.svg
go/todo.svg
+37
-27
No files found.
go/neo/t/t.sh
View file @
7a97206e
...
@@ -48,6 +48,8 @@ kill $j' EXIT
...
@@ -48,6 +48,8 @@ kill $j' EXIT
# M{py,go} ... - spawn master
# M{py,go} ... - spawn master
Mpy
()
{
Mpy
()
{
# XXX run via relative path to neomaster? (../../neo/neomaster) so we do not need to `pip install -e` ?
# XXX --autostart=1 ?
# XXX --autostart=1 ?
exec
-a
Mpy
\
exec
-a
Mpy
\
neomaster
--cluster
=
$cluster
--bind
=
$Mbind
--masters
=
$Mbind
-r
1
-p
1
--logfile
=
$log
/Mpy.log
$@
&
neomaster
--cluster
=
$cluster
--bind
=
$Mbind
--masters
=
$Mbind
-r
1
-p
1
--logfile
=
$log
/Mpy.log
$@
&
...
@@ -69,6 +71,8 @@ Spy() {
...
@@ -69,6 +71,8 @@ Spy() {
# Sgo <data.fs> - spawn NEO/go storage
# Sgo <data.fs> - spawn NEO/go storage
Sgo
()
{
Sgo
()
{
# XXX use `go run ...` so it does not need go install?
# -alsologtostderr
# -alsologtostderr
exec
-a
Sgo
\
exec
-a
Sgo
\
neo
-log_dir
=
$log
storage
-cluster
=
$cluster
-bind
=
$Sbind
-masters
=
$Mbind
$@
&
neo
-log_dir
=
$log
storage
-cluster
=
$cluster
-bind
=
$Sbind
-masters
=
$Mbind
$@
&
...
@@ -225,8 +229,8 @@ GENsql() {
...
@@ -225,8 +229,8 @@ GENsql() {
# ---- main driver ----
# ---- main driver ----
GENfs
GENfs
#
GENsqlite
GENsqlite
#
GENsql
GENsql
wait
wait
sync
sync
...
@@ -238,7 +242,7 @@ N=`seq 2` # XXX repeat benchmarks N time
...
@@ -238,7 +242,7 @@ N=`seq 2` # XXX repeat benchmarks N time
bench1
()
{
bench1
()
{
url
=
$1
url
=
$1
# time demo-zbigarray read $url
# time demo-zbigarray read $url
#
./zsha1.py $url
./zsha1.py
$url
if
[[
$url
==
zeo://
*
]]
;
then
if
[[
$url
==
zeo://
*
]]
;
then
echo
"(skipping zsha1.go on ZEO -- Cgo does not support zeo:// protocol)"
echo
"(skipping zsha1.go on ZEO -- Cgo does not support zeo:// protocol)"
return
return
...
@@ -252,38 +256,38 @@ for i in $N; do
...
@@ -252,38 +256,38 @@ for i in $N; do
bench1
$fs1
/data.fs
bench1
$fs1
/data.fs
done
done
#
echo -e "\n*** ZEO"
echo
-e
"
\n
*** ZEO"
#
Zpy $fs1/data.fs
Zpy
$fs1
/data.fs
#
for i in $N; do
for
i
in
$N
;
do
#
bench1 zeo://$Zbind
bench1 zeo://
$Zbind
#
done
done
#
killall runzeo
killall runzeo
#
wait
wait
#
echo -e "\n*** NEO/py sqlite"
echo
-e
"
\n
*** NEO/py sqlite"
#
NEOpylite
NEOpylite
#
for i in $N; do
for
i
in
$N
;
do
#
bench1 neo://$cluster@$Mbind
bench1 neo://
$cluster
@
$Mbind
#
done
done
#
xneoctl set cluster stopping
xneoctl
set
cluster stopping
#
wait
wait
#
echo -e "\n*** NEO/py sql"
echo
-e
"
\n
*** NEO/py sql"
#
NEOpysql
NEOpysql
#
for i in $N; do
for
i
in
$N
;
do
#
bench1 neo://$cluster@$Mbind
bench1 neo://
$cluster
@
$Mbind
#
done
done
#
xneoctl set cluster stopping
xneoctl
set
cluster stopping
#
xmysql -e "SHUTDOWN"
xmysql
-e
"SHUTDOWN"
#
wait
wait
#
echo -e "\n*** NEO/go"
echo
-e
"
\n
*** NEO/go"
#
NEOgo
NEOgo
#
for i in $N; do
for
i
in
$N
;
do
#
bench1 neo://$cluster@$Mbind
bench1 neo://
$cluster
@
$Mbind
#
done
done
#
xneoctl set cluster stopping
xneoctl
set
cluster stopping
#
wait
wait
# all ok
# all ok
trap
- EXIT
trap
- EXIT
...
...
go/neo/t/zsha1.go
View file @
7a97206e
...
@@ -100,7 +100,7 @@ func zsha1(ctx context.Context, url string, useprefetch bool) (err error) {
...
@@ -100,7 +100,7 @@ func zsha1(ctx context.Context, url string, useprefetch bool) (err error) {
}
}
before
:=
lastTid
+
1
// XXX overflow ?
before
:=
lastTid
+
1
// XXX overflow ?
if
tru
e
{
if
fals
e
{
defer
profile
.
Start
(
profile
.
TraceProfile
)
.
Stop
()
defer
profile
.
Start
(
profile
.
TraceProfile
)
.
Stop
()
}
}
...
...
go/time-sep7.txt
0 → 100644
View file @
7a97206e
(@ 7 Sep 2017)
(neo) (z-dev) (g.env) kirr@deco:~/src/neo/src/lab.nexedi.com/kirr/neo/go/neo/t$ time ./t.sh
*** generating fs1 data...
I: RAM: 7.48GB
I: WORK: 0.06GB
gen signal t=0...8.39e+06 float64 (= 0.06GB)
gen signal blk [0:4194304] (50.0%)
gen signal blk [4194304:8388608] (100.0%)
VIRT: 344 MB RSS: 104MB
*** generating sqlite data...
I: RAM: 7.48GB
I: WORK: 0.06GB
gen signal t=0...8.39e+06 float64 (= 0.06GB)
gen signal blk [0:4194304] (50.0%)
gen signal blk [4194304:8388608] (100.0%)
VIRT: 471 MB RSS: 149MB
2017-09-07 10:15:12.4942 ERROR NEO [ app: 91] primary master is down
Cluster state changed
*** generating sql data...
2017-09-07 10:15:12 140377545237376 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-1) starting as process 10026 ...
2017-09-07 10:15:16 139835902292864 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-1) starting as process 10055 ...
2017-09-07 10:15:19 140350144623488 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-1) starting as process 10085 ...
2017-09-07 10:15:22 139936065475456 [Note] mysqld (mysqld 10.1.26-MariaDB-1) starting as process 10112 ...
I: RAM: 7.48GB
I: WORK: 0.06GB
gen signal t=0...8.39e+06 float64 (= 0.06GB)
gen signal blk [0:4194304] (50.0%)
gen signal blk [4194304:8388608] (100.0%)
VIRT: 485 MB RSS: 162MB
2017-09-07 10:15:33.8986 ERROR NEO [ app: 91] primary master is down
Cluster state changed
*** FileStorage
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=0.292s (17.2μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=130.700046ms (7.69µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=159.584996ms (9.389µs / object) x=zsha1.go +prefetch
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=0.289s (17.0μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=129.699956ms (7.631µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=157.831648ms (9.286µs / object) x=zsha1.go +prefetch
*** ZEO
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=5.532s (325.5μs / object) x=zsha1.py
(skipping zsha1.go on ZEO -- Cgo does not support zeo:// protocol)
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=5.295s (311.6μs / object) x=zsha1.py
(skipping zsha1.go on ZEO -- Cgo does not support zeo:// protocol)
*** NEO/py sqlite
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=5.470s (321.8μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=3.701967602s (217.814µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=2.347308074s (138.109µs / object) x=zsha1.go +prefetch
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=5.512s (324.3μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=3.862412698s (227.254µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=2.35216104s (138.394µs / object) x=zsha1.go +prefetch
2017-09-07 10:16:17.7122 ERROR NEO [ app: 91] primary master is down
Cluster state changed
*** NEO/py sql
2017-09-07 10:16:17 140308575191936 [Note] mysqld (mysqld 10.1.26-MariaDB-1) starting as process 10486 ...
2017-09-07 10:16:19.1711 ERROR NEO [ app:233] Connection to None lost
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=11.605s (682.8μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=8.211994021s (483.172µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=6.879179752s (404.752µs / object) x=zsha1.go +prefetch
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=10.474s (616.3μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=7.878703192s (463.562µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=6.645186736s (390.985µs / object) x=zsha1.go +prefetch
2017-09-07 10:17:13.4350 ERROR NEO [ app: 91] primary master is down
Cluster state changed
*** NEO/go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=3.271s (192.4μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=1.042710741s (61.35µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=607.029828ms (35.716µs / object) x=zsha1.go +prefetch
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=3.140s (184.8μs / object) x=zsha1.py
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=1.03721356s (61.026µs / object) x=zsha1.go
50aa58a7d47d168ec550762c25d7aaaed3f4177b ; oid=0..16995 nread=68269354 t=634.242335ms (37.317µs / object) x=zsha1.go +prefetch
2017-09-07 10:17:28.5996 ERROR NEO [ app: 91] primary master is down
Cluster state changed
real 2m24,089s
user 2m29,765s
sys 0m22,275s
--------
t(getobject) client client client
zsha1.py zsha1.go zsha1.go + prefetch
server
fs1 17.0μs 7.6µs 9.3µs (*)
zeo 311.6μs - -
neo/sqlite 321.8μs 217.8µs 138.2µs
neo/sql 616.3μs 463.5µs 391.0µs
neo/go 184.8μs 61.0µs 37.3µs (+)
(*) prefetch is not working good yet
(+) Sgo (storage in neo/go) is not working good yet
go/todo.dot
View file @
7a97206e
...
@@ -12,7 +12,9 @@ digraph {
...
@@ -12,7 +12,9 @@ digraph {
Sgo_speed
->
Mmap_go
;
Sgo_speed
->
Mmap_go
;
Sgo_speed
->
sha1_index
;
Sgo_speed
->
sha1_index
;
Sgo_speed
->
B_link_recv
;
//Sgo_speed -> B_link_recv;
Sgo_speed
->
garbage
;
Sgo_speed
->
gosched
;
Cpy_r_Sgo
->
Sgo
;
Cpy_r_Sgo
->
Sgo
;
//Cpy_r_Sgo -> Protog_fix;
//Cpy_r_Sgo -> Protog_fix;
...
@@ -44,8 +46,9 @@ digraph {
...
@@ -44,8 +46,9 @@ digraph {
load_serial_next
[
label
=<
? GetObject return += serial
<sub>
next
</sub>
>
]
;
load_serial_next
[
label
=<
? GetObject return += serial
<sub>
next
</sub>
>
]
;
sha1_index
[
label
=
"? sha1 index"
]
;
sha1_index
[
label
=
"? sha1 index"
]
;
//B_link_recv [label="Bench link.Recv1/Ask1" style=filled fillcolor=lightyellow];
B_link_recv
[
label
=
"Bench link.Recv1/Ask1"
]
;
garbage
[
label
=
"garbage"
]
;
gosched
[
label
=
"? go scheduling"
]
;
//Cgo -> Cgo_tasks;
//Cgo -> Cgo_tasks;
//Cgo_tasks [label="- talkMaster\n- update nodeTab/partTab\n- dial S on demand\n..." style=filled fillcolor=lightyellow];
//Cgo_tasks [label="- talkMaster\n- update nodeTab/partTab\n- dial S on demand\n..." style=filled fillcolor=lightyellow];
...
...
go/todo.svg
View file @
7a97206e
...
@@ -4,11 +4,11 @@
...
@@ -4,11 +4,11 @@
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
-->
<!-- Title: %3 Pages: 1 -->
<!-- Title: %3 Pages: 1 -->
<svg
width=
"8
22
pt"
height=
"404pt"
<svg
width=
"8
05
pt"
height=
"404pt"
viewBox=
"0.00 0.00 8
22.13
404.00"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
viewBox=
"0.00 0.00 8
04.54
404.00"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<g
id=
"graph0"
class=
"graph"
transform=
"scale(1 1) rotate(0) translate(4 400)"
>
<g
id=
"graph0"
class=
"graph"
transform=
"scale(1 1) rotate(0) translate(4 400)"
>
<title>
%3
</title>
<title>
%3
</title>
<polygon
fill=
"white"
stroke=
"none"
points=
"-4,4 -4,-400 8
18.133,-400 818.133
,4 -4,4"
/>
<polygon
fill=
"white"
stroke=
"none"
points=
"-4,4 -4,-400 8
00.536,-400 800.536
,4 -4,4"
/>
<!-- Cgo -->
<!-- Cgo -->
<g
id=
"node1"
class=
"node"
><title>
Cgo
</title>
<g
id=
"node1"
class=
"node"
><title>
Cgo
</title>
<ellipse
fill=
"lightyellow"
stroke=
"black"
cx=
"416.242"
cy=
"-306"
rx=
"27"
ry=
"18"
/>
<ellipse
fill=
"lightyellow"
stroke=
"black"
cx=
"416.242"
cy=
"-306"
rx=
"27"
ry=
"18"
/>
...
@@ -96,36 +96,46 @@
...
@@ -96,36 +96,46 @@
</g>
</g>
<!-- Mmap_go -->
<!-- Mmap_go -->
<g
id=
"node8"
class=
"node"
><title>
Mmap_go
</title>
<g
id=
"node8"
class=
"node"
><title>
Mmap_go
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"3
85
.242"
cy=
"-18"
rx=
"92.0841"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"3
29
.242"
cy=
"-18"
rx=
"92.0841"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"3
85
.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
io.ReaderAt via mmap
</text>
<text
text-anchor=
"middle"
x=
"3
29
.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
io.ReaderAt via mmap
</text>
</g>
</g>
<!-- Sgo_speed->Mmap_go -->
<!-- Sgo_speed->Mmap_go -->
<g
id=
"edge9"
class=
"edge"
><title>
Sgo_speed
->
Mmap_go
</title>
<g
id=
"edge9"
class=
"edge"
><title>
Sgo_speed
->
Mmap_go
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M5
15.63,-73.9832C491.11,-63.6432 458.291,-49.8038 431.714,-38.5966
"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M5
07.382,-75.1703C472.467,-64.161 423.355,-48.6754 385.539,-36.7513
"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"
432.806,-35.2587 422.231,-34.5981 430.086,-41.7087 432.806,-35.2587
"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"
386.279,-33.3149 375.689,-33.6457 384.174,-39.9909 386.279,-33.3149
"
/>
</g>
</g>
<!-- sha1_index -->
<!-- sha1_index -->
<g
id=
"node9"
class=
"node"
><title>
sha1_index
</title>
<g
id=
"node9"
class=
"node"
><title>
sha1_index
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"
551
.242"
cy=
"-18"
rx=
"55.4913"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"
495
.242"
cy=
"-18"
rx=
"55.4913"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
551
.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
? sha1 index
</text>
<text
text-anchor=
"middle"
x=
"
495
.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
? sha1 index
</text>
</g>
</g>
<!-- Sgo_speed->sha1_index -->
<!-- Sgo_speed->sha1_index -->
<g
id=
"edge10"
class=
"edge"
><title>
Sgo_speed
->
sha1_index
</title>
<g
id=
"edge10"
class=
"edge"
><title>
Sgo_speed
->
sha1_index
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M5
51.242,-71.6966C551.242,-63.9827 551.242,-54.7125 551.242,-46.1124
"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M5
37.686,-72.055C530.876,-63.5427 522.496,-53.0684 514.987,-43.6815
"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"5
54.742,-46.1043 551.242,-36.1043 547.742,-46.1044 554.742,-46.104
3"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"5
17.653,-41.4113 508.673,-35.789 512.187,-45.7842 517.653,-41.411
3"
/>
</g>
</g>
<!--
B_link_recv
-->
<!--
garbage
-->
<g
id=
"node10"
class=
"node"
><title>
B_link_recv
</title>
<g
id=
"node10"
class=
"node"
><title>
garbage
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"
719.242"
cy=
"-18"
rx=
"94.7833
"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"
607.242"
cy=
"-18"
rx=
"38.1938
"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
719.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
Bench link.Recv1/Ask1
</text>
<text
text-anchor=
"middle"
x=
"
607.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
garbage
</text>
</g>
</g>
<!-- Sgo_speed->B_link_recv -->
<!-- Sgo_speed->garbage -->
<g
id=
"edge11"
class=
"edge"
><title>
Sgo_speed
->
B_link_recv
</title>
<g
id=
"edge11"
class=
"edge"
><title>
Sgo_speed
->
garbage
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M587.282,-73.9832C612.207,-63.5979 645.604,-49.6824 672.563,-38.4493"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M564.798,-72.055C571.708,-63.4175 580.234,-52.7599 587.827,-43.2681"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"673.922,-41.6751 681.806,-34.5981 671.229,-35.2135 673.922,-41.6751"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"590.682,-45.3022 594.196,-35.307 585.216,-40.9293 590.682,-45.3022"
/>
</g>
<!-- gosched -->
<g
id=
"node11"
class=
"node"
><title>
gosched
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"730.242"
cy=
"-18"
rx=
"66.0889"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"730.242"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
? go scheduling
</text>
</g>
<!-- Sgo_speed->gosched -->
<g
id=
"edge12"
class=
"edge"
><title>
Sgo_speed
->
gosched
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M589.203,-74.1548C617.048,-63.2657 654.989,-48.4284 684.506,-36.8854"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"686.128,-40.0093 694.166,-33.1076 683.578,-33.4901 686.128,-40.0093"
/>
</g>
</g>
<!-- Cpy_r_Sgo -->
<!-- Cpy_r_Sgo -->
<g
id=
"node1
1
"
class=
"node"
><title>
Cpy_r_Sgo
</title>
<g
id=
"node1
2
"
class=
"node"
><title>
Cpy_r_Sgo
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"228.242"
cy=
"-234"
rx=
"61.99"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"228.242"
cy=
"-234"
rx=
"61.99"
ry=
"18"
/>
<text
text-anchor=
"start"
x=
"188.742"
y=
"-231.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"188.742"
y=
"-231.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"198.742"
y=
"-231.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
py
</text>
<text
text-anchor=
"start"
x=
"198.742"
y=
"-231.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
py
</text>
...
@@ -133,12 +143,12 @@
...
@@ -133,12 +143,12 @@
<text
text-anchor=
"start"
x=
"254.742"
y=
"-231.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
<text
text-anchor=
"start"
x=
"254.742"
y=
"-231.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
</g>
</g>
<!-- Cpy_r_Sgo->Sgo -->
<!-- Cpy_r_Sgo->Sgo -->
<g
id=
"edge1
2
"
class=
"edge"
><title>
Cpy_r_Sgo
->
Sgo
</title>
<g
id=
"edge1
3
"
class=
"edge"
><title>
Cpy_r_Sgo
->
Sgo
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M251.357,-217.291C267.071,-206.611 287.912,-192.447 304.367,-181.264"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M251.357,-217.291C267.071,-206.611 287.912,-192.447 304.367,-181.264"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"306.693,-183.915 312.997,-175.399 302.759,-178.126 306.693,-183.915"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"306.693,-183.915 312.997,-175.399 302.759,-178.126 306.693,-183.915"
/>
</g>
</g>
<!-- Cgo_r_Sgo -->
<!-- Cgo_r_Sgo -->
<g
id=
"node1
2
"
class=
"node"
><title>
Cgo_r_Sgo
</title>
<g
id=
"node1
3
"
class=
"node"
><title>
Cgo_r_Sgo
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"318.242"
cy=
"-378"
rx=
"61.99"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"318.242"
cy=
"-378"
rx=
"61.99"
ry=
"18"
/>
<text
text-anchor=
"start"
x=
"278.742"
y=
"-375.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"278.742"
y=
"-375.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"288.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
<text
text-anchor=
"start"
x=
"288.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
...
@@ -146,17 +156,17 @@
...
@@ -146,17 +156,17 @@
<text
text-anchor=
"start"
x=
"344.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
<text
text-anchor=
"start"
x=
"344.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
</g>
</g>
<!-- Cgo_r_Sgo->Cgo -->
<!-- Cgo_r_Sgo->Cgo -->
<g
id=
"edge1
3
"
class=
"edge"
><title>
Cgo_r_Sgo
->
Cgo
</title>
<g
id=
"edge1
4
"
class=
"edge"
><title>
Cgo_r_Sgo
->
Cgo
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M340.479,-361.116C355.251,-350.565 374.702,-336.671 390.197,-325.603"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M340.479,-361.116C355.251,-350.565 374.702,-336.671 390.197,-325.603"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"392.241,-328.445 398.344,-319.784 388.172,-322.749 392.241,-328.445"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"392.241,-328.445 398.344,-319.784 388.172,-322.749 392.241,-328.445"
/>
</g>
</g>
<!-- Cgo_r_Sgo->Sgo -->
<!-- Cgo_r_Sgo->Sgo -->
<g
id=
"edge1
4
"
class=
"edge"
><title>
Cgo_r_Sgo
->
Sgo
</title>
<g
id=
"edge1
5
"
class=
"edge"
><title>
Cgo_r_Sgo
->
Sgo
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M319.284,-359.849C321.532,-322.832 326.857,-235.181 329.578,-190.386"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M319.284,-359.849C321.532,-322.832 326.857,-235.181 329.578,-190.386"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"333.082,-190.426 330.195,-180.232 326.095,-190.002 333.082,-190.426"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"333.082,-190.426 330.195,-180.232 326.095,-190.002 333.082,-190.426"
/>
</g>
</g>
<!-- Cgo_r_Spy -->
<!-- Cgo_r_Spy -->
<g
id=
"node1
3
"
class=
"node"
><title>
Cgo_r_Spy
</title>
<g
id=
"node1
4
"
class=
"node"
><title>
Cgo_r_Spy
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"459.242"
cy=
"-378"
rx=
"61.99"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"459.242"
cy=
"-378"
rx=
"61.99"
ry=
"18"
/>
<text
text-anchor=
"start"
x=
"419.742"
y=
"-375.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"419.742"
y=
"-375.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
C
</text>
<text
text-anchor=
"start"
x=
"429.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
<text
text-anchor=
"start"
x=
"429.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
go
</text>
...
@@ -164,12 +174,12 @@
...
@@ -164,12 +174,12 @@
<text
text-anchor=
"start"
x=
"485.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
py
</text>
<text
text-anchor=
"start"
x=
"485.742"
y=
"-375.3"
font-family=
"Times,serif"
baseline-shift=
"sub"
font-size=
"14.00"
>
py
</text>
</g>
</g>
<!-- Cgo_r_Spy->Cgo -->
<!-- Cgo_r_Spy->Cgo -->
<g
id=
"edge1
5
"
class=
"edge"
><title>
Cgo_r_Spy
->
Cgo
</title>
<g
id=
"edge1
6
"
class=
"edge"
><title>
Cgo_r_Spy
->
Cgo
</title>
<path
fill=
"none"
stroke=
"black"
d=
"M448.833,-360.055C443.559,-351.469 437.058,-340.888 431.254,-331.439"
/>
<path
fill=
"none"
stroke=
"black"
d=
"M448.833,-360.055C443.559,-351.469 437.058,-340.888 431.254,-331.439"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"434.182,-329.518 425.965,-322.829 428.217,-333.182 434.182,-329.518"
/>
<polygon
fill=
"black"
stroke=
"black"
points=
"434.182,-329.518 425.965,-322.829 428.217,-333.182 434.182,-329.518"
/>
</g>
</g>
<!-- Cleanup -->
<!-- Cleanup -->
<g
id=
"node1
4
"
class=
"node"
><title>
Cleanup
</title>
<g
id=
"node1
5
"
class=
"node"
><title>
Cleanup
</title>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"606.242"
cy=
"-378"
rx=
"66.8882"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"black"
cx=
"606.242"
cy=
"-378"
rx=
"66.8882"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"606.242"
y=
"-374.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
Cleanup history
</text>
<text
text-anchor=
"middle"
x=
"606.242"
y=
"-374.3"
font-family=
"Times,serif"
font-size=
"14.00"
>
Cleanup history
</text>
</g>
</g>
...
...
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