Commit a02b6fd8 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent c1b8ffda
......@@ -40,26 +40,6 @@ runtime/HACKING.md
- TODO stats for events (packets received, errors, etc)
- custom memory manager is required to avoid performance hit on e.g. []byte alloc/dealloc
-> go-slab
- interfaces conversion in very hot codepaths are costly:
e.g. having r as io.ReadSeeker and converting it to io.Reader e.g. this way:
io.ReadFull(r, ...)
calls convI2I all the time (no caching) which is not negliable
( recheck it is still true after https://github.com/golang/go/commit/3d1699ea:
-> it is still the case; convI2I cost is ~ 8ns - i.e. it is not big for
non-hot codepaths - uncontended mutex lock/unlock is 15-25ns. )
- x/net/trace to trace requests and connection logging (and packets ?)
- packet log; general log -> glog ?
......
......@@ -39,7 +39,7 @@ def main():
cluster.stop()
cluster.waitAll()
# XXX current neo/go/sqlite limitation: it cannot reply !empty ttrans/tobj on open
# XXX current neo/go/sqlite limitation: it cannot replay !empty ttrans/tobj on open
# -> open/close storage to get t* flushed
cluster = NEOCluster(db_list=["testdata/1.sqlite"], name="test", adapter="SQLite", clear_databases=False)
cluster.start()
......
......@@ -53,14 +53,14 @@ digraph {
Cgo_r_Sgo [label=<C<sub>go</sub> read S<sub>go</sub>> style=filled fillcolor=lightyellow];
Cgo_r_Spy [label=<C<sub>go</sub> read S<sub>py</sub>> style=filled fillcolor=lightyellow];
Cleanup [label="Cleanup history"];
Post [label="Post"];
Post [label="Post" style=filled fillcolor=lightyellow];
//Cpy_patch [label=<py patch: ConnID py=go> style=filled fillcolor=lightyellow]; // C<sub>py</sub> patch for ConnID interop. with S<sub>go</sub>>];
Mmap_go [label="? io.ReaderAt via mmap"];
//Protog_fix [label="proto(go/py) compat fix" style=filled fillcolor=lightyellow];
//Mpy_vs_Sgo [label=<M<sub>py</sub> vs S<sub>go</sub>: try/fix> style=filled fillcolor=lightyellow];
io_cancel [label="? conn IO vs ctx cancel"];
load_serial_next [label=<? GetObject return += serial<sub>next</sub>>];
load_serial_next [label=<? GetObject return += serial<sub>next</sub>> style=filled fillcolor=lightyellow];
sha1_index [label="? sha1 index"];
//B_link_recv [label="Bench link.Recv1/Ask1" style=filled fillcolor=lightyellow];
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="1509pt" height="601pt"
viewBox="0.00 0.00 1508.99 601.22" 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 597.22)">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 597.2203)">
<title>%3</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-597.22 1504.99,-597.22 1504.99,4 -4,4"/>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-597.2203 1504.9919,-597.2203 1504.9919,4 -4,4"/>
<!-- Cgo -->
<g id="node1" class="node"><title>Cgo</title>
<ellipse fill="lightyellow" stroke="black" cx="446.747" cy="-503.22" rx="27" ry="18"/>
<text text-anchor="start" x="435.247" y="-500.52" font-family="Times,serif" font-size="14.00">C</text>
<text text-anchor="start" x="445.247" y="-500.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<g id="node1" class="node">
<title>Cgo</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="444.7468" cy="-503.2203" rx="27" ry="18"/>
<text text-anchor="start" x="433.2468" y="-500.5203" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
<text text-anchor="start" x="443.2468" y="-500.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
</g>
<!-- SCgo_t -->
<g id="node2" class="node"><title>SCgo_t</title>
<ellipse fill="lightyellow" stroke="black" cx="446.747" cy="-431.22" rx="69.5877" ry="18"/>
<text text-anchor="start" x="401.247" y="-428.52" font-family="Times,serif" font-size="14.00">S</text>
<text text-anchor="start" x="409.247" y="-428.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<text text-anchor="start" x="422.247" y="-428.52" font-family="Times,serif" font-size="14.00"> &#160;/ C</text>
<text text-anchor="start" x="447.247" y="-428.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<text text-anchor="start" x="460.247" y="-428.52" font-family="Times,serif" font-size="14.00"> &#160;tests</text>
<g id="node2" class="node">
<title>SCgo_t</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="444.7468" cy="-431.2203" rx="69.5877" ry="18"/>
<text text-anchor="start" x="399.2468" y="-428.5203" font-family="Times,serif" font-size="14.00" fill="#000000">S</text>
<text text-anchor="start" x="407.2468" y="-428.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
<text text-anchor="start" x="420.2468" y="-428.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;/ C</text>
<text text-anchor="start" x="445.2468" y="-428.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
<text text-anchor="start" x="458.2468" y="-428.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;tests</text>
</g>
<!-- Cgo&#45;&gt;SCgo_t -->
<g id="edge1" class="edge"><title>Cgo&#45;&gt;SCgo_t</title>
<path fill="none" stroke="black" d="M440.907,-485.631C440.044,-477.727 439.795,-468.072 440.159,-459.156"/>
<polygon fill="black" stroke="black" points="443.65,-459.399 440.867,-449.177 436.668,-458.903 443.65,-459.399"/>
<g id="edge1" class="edge">
<title>Cgo&#45;&gt;SCgo_t</title>
<path fill="none" stroke="#000000" d="M438.8311,-485.4226C438.0473,-477.6067 437.8158,-468.2374 438.1366,-459.5039"/>
<polygon fill="#000000" stroke="#000000" points="441.6429,-459.5203 438.8018,-449.3135 434.6577,-459.0642 441.6429,-459.5203"/>
</g>
<!-- SCgo_t&#45;&gt;Cgo -->
<g id="edge5" class="edge"><title>SCgo_t&#45;&gt;Cgo</title>
<path fill="none" stroke="black" d="M452.626,-449.177C453.461,-457.048 453.695,-466.594 453.33,-475.407"/>
<polygon fill="black" stroke="black" points="449.821,-475.404 452.587,-485.631 456.803,-475.911 449.821,-475.404"/>
<g id="edge5" class="edge">
<title>SCgo_t&#45;&gt;Cgo</title>
<path fill="none" stroke="#000000" d="M450.6918,-449.3135C451.4618,-457.168 451.6794,-466.5485 451.3447,-475.2657"/>
<polygon fill="#000000" stroke="#000000" points="447.8406,-475.2105 450.6626,-485.4226 454.8249,-475.6796 447.8406,-475.2105"/>
</g>
<!-- Sgo -->
<g id="node3" class="node"><title>Sgo</title>
<ellipse fill="lightyellow" stroke="black" cx="361.747" cy="-359.22" rx="27" ry="18"/>
<text text-anchor="start" x="351.247" y="-356.52" font-family="Times,serif" font-size="14.00">S</text>
<text text-anchor="start" x="359.247" y="-356.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<g id="node3" class="node">
<title>Sgo</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="359.7468" cy="-359.2203" rx="27" ry="18"/>
<text text-anchor="start" x="349.2468" y="-356.5203" font-family="Times,serif" font-size="14.00" fill="#000000">S</text>
<text text-anchor="start" x="357.2468" y="-356.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
</g>
<!-- SCgo_t&#45;&gt;Sgo -->
<g id="edge4" class="edge"><title>SCgo_t&#45;&gt;Sgo</title>
<path fill="none" stroke="black" d="M421.698,-414.336C409.061,-404.832 394.04,-392.614 382.113,-382.193"/>
<polygon fill="black" stroke="black" points="384.207,-379.371 374.417,-375.322 379.545,-384.593 384.207,-379.371"/>
<g id="edge4" class="edge">
<title>SCgo_t&#45;&gt;Sgo</title>
<path fill="none" stroke="#000000" d="M418.7631,-414.1574C406.4167,-404.5617 391.9622,-392.4567 380.3707,-382.0532"/>
<polygon fill="#000000" stroke="#000000" points="382.6015,-379.3501 372.8643,-375.1743 377.8722,-384.5109 382.6015,-379.3501"/>
</g>
<!-- Mgo -->
<g id="node4" class="node"><title>Mgo</title>
<ellipse fill="lightyellow" stroke="black" cx="446.747" cy="-359.22" rx="27.0966" ry="18"/>
<text text-anchor="start" x="433.747" y="-356.52" font-family="Times,serif" font-size="14.00">M</text>
<text text-anchor="start" x="446.747" y="-356.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<g id="node4" class="node">
<title>Mgo</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="444.7468" cy="-359.2203" rx="27.0966" ry="18"/>
<text text-anchor="start" x="431.7468" y="-356.5203" font-family="Times,serif" font-size="14.00" fill="#000000">M</text>
<text text-anchor="start" x="444.7468" y="-356.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
</g>
<!-- SCgo_t&#45;&gt;Mgo -->
<g id="edge3" class="edge"><title>SCgo_t&#45;&gt;Mgo</title>
<path fill="none" stroke="black" d="M446.747,-412.917C446.747,-405.203 446.747,-395.933 446.747,-387.333"/>
<polygon fill="black" stroke="black" points="450.247,-387.325 446.747,-377.325 443.247,-387.325 450.247,-387.325"/>
<g id="edge3" class="edge">
<title>SCgo_t&#45;&gt;Mgo</title>
<path fill="none" stroke="#000000" d="M444.7468,-413.0517C444.7468,-405.3513 444.7468,-396.1947 444.7468,-387.637"/>
<polygon fill="#000000" stroke="#000000" points="448.2469,-387.6336 444.7468,-377.6336 441.2469,-387.6336 448.2469,-387.6336"/>
</g>
<!-- Sgo&#45;&gt;SCgo_t -->
<g id="edge2" class="edge"><title>Sgo&#45;&gt;SCgo_t</title>
<path fill="none" stroke="black" d="M381.213,-371.971C394.081,-381.333 410.782,-394.747 424.19,-406.343"/>
<polygon fill="black" stroke="black" points="422.234,-409.285 432.049,-413.275 426.865,-404.035 422.234,-409.285"/>
<g id="edge2" class="edge">
<title>Sgo&#45;&gt;SCgo_t</title>
<path fill="none" stroke="#000000" d="M379.635,-371.6232C392.3478,-381.1645 408.6803,-394.6584 421.8901,-406.3939"/>
<polygon fill="#000000" stroke="#000000" points="419.8897,-409.3042 429.6513,-413.4226 424.5885,-404.1156 419.8897,-409.3042"/>
</g>
<!-- io_cancel -->
<g id="node5" class="node"><title>io_cancel</title>
<ellipse fill="none" stroke="black" cx="124.747" cy="-287.22" rx="94.4839" ry="18"/>
<text text-anchor="middle" x="124.747" y="-283.52" font-family="Times,serif" font-size="14.00">? conn IO vs ctx cancel</text>
<g id="node5" class="node">
<title>io_cancel</title>
<ellipse fill="none" stroke="#000000" cx="122.7468" cy="-287.2203" rx="94.4839" ry="18"/>
<text text-anchor="middle" x="122.7468" y="-283.5203" font-family="Times,serif" font-size="14.00" fill="#000000">? conn IO vs ctx cancel</text>
</g>
<!-- Sgo&#45;&gt;io_cancel -->
<g id="edge6" class="edge"><title>Sgo&#45;&gt;io_cancel</title>
<path fill="none" stroke="black" d="M337.276,-350.993C301.242,-340.35 232.831,-320.144 183.338,-305.526"/>
<polygon fill="black" stroke="black" points="184.289,-302.157 173.707,-302.681 182.306,-308.871 184.289,-302.157"/>
<g id="edge6" class="edge">
<title>Sgo&#45;&gt;io_cancel</title>
<path fill="none" stroke="#000000" d="M334.8316,-351.6512C299.0666,-340.7858 232.0753,-320.4341 182.9213,-305.5012"/>
<polygon fill="#000000" stroke="#000000" points="183.9284,-302.1493 173.3428,-302.5913 181.8936,-308.847 183.9284,-302.1493"/>
</g>
<!-- load_serial_next -->
<g id="node6" class="node"><title>load_serial_next</title>
<ellipse fill="none" stroke="black" cx="361.747" cy="-287.22" rx="124.578" ry="18"/>
<text text-anchor="start" x="273.747" y="-284.52" font-family="Times,serif" font-size="14.00">? GetObject return += serial</text>
<text text-anchor="start" x="428.747" y="-284.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">next</text>
<g id="node6" class="node">
<title>load_serial_next</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="359.7468" cy="-287.2203" rx="124.5782" ry="18"/>
<text text-anchor="start" x="271.7468" y="-284.5203" font-family="Times,serif" font-size="14.00" fill="#000000">? GetObject return += serial</text>
<text text-anchor="start" x="426.7468" y="-284.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">next</text>
</g>
<!-- Sgo&#45;&gt;load_serial_next -->
<g id="edge7" class="edge"><title>Sgo&#45;&gt;load_serial_next</title>
<path fill="none" stroke="black" d="M361.747,-340.917C361.747,-333.203 361.747,-323.933 361.747,-315.333"/>
<polygon fill="black" stroke="black" points="365.247,-315.325 361.747,-305.325 358.247,-315.325 365.247,-315.325"/>
<g id="edge7" class="edge">
<title>Sgo&#45;&gt;load_serial_next</title>
<path fill="none" stroke="#000000" d="M359.7468,-341.0517C359.7468,-333.3513 359.7468,-324.1947 359.7468,-315.637"/>
<polygon fill="#000000" stroke="#000000" points="363.2469,-315.6336 359.7468,-305.6336 356.2469,-315.6336 363.2469,-315.6336"/>
</g>
<!-- Sgo_speed -->
<g id="node7" class="node"><title>Sgo_speed</title>
<ellipse fill="none" stroke="black" cx="581.747" cy="-287.22" rx="77.1866" ry="18"/>
<text text-anchor="start" x="530.247" y="-284.52" font-family="Times,serif" font-size="14.00">S</text>
<text text-anchor="start" x="538.247" y="-284.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<text text-anchor="start" x="551.247" y="-284.52" font-family="Times,serif" font-size="14.00"> &#160;speed/latency</text>
<g id="node7" class="node">
<title>Sgo_speed</title>
<ellipse fill="none" stroke="#000000" cx="579.7468" cy="-287.2203" rx="77.1866" ry="18"/>
<text text-anchor="start" x="528.2468" y="-284.5203" font-family="Times,serif" font-size="14.00" fill="#000000">S</text>
<text text-anchor="start" x="536.2468" y="-284.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
<text text-anchor="start" x="549.2468" y="-284.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;speed/latency</text>
</g>
<!-- Sgo&#45;&gt;Sgo_speed -->
<g id="edge8" class="edge"><title>Sgo&#45;&gt;Sgo_speed</title>
<path fill="none" stroke="black" d="M385.122,-349.933C393.217,-347.11 402.363,-343.973 410.747,-341.22 449.315,-328.557 493.039,-315.02 526.619,-304.796"/>
<polygon fill="black" stroke="black" points="527.701,-308.125 536.252,-301.87 525.666,-301.428 527.701,-308.125"/>
<g id="edge8" class="edge">
<title>Sgo&#45;&gt;Sgo_speed</title>
<path fill="none" stroke="#000000" d="M383.594,-350.2095C391.564,-347.265 400.5131,-344.0311 408.7468,-341.2203 446.5576,-328.3131 489.4316,-314.7764 522.7906,-304.485"/>
<polygon fill="#000000" stroke="#000000" points="523.8485,-307.8215 532.3773,-301.5359 521.7902,-301.1309 523.8485,-307.8215"/>
</g>
<!-- garbage -->
<g id="node8" class="node"><title>garbage</title>
<ellipse fill="lightyellow" stroke="black" cx="154.747" cy="-206.35" rx="38.1938" ry="18"/>
<text text-anchor="middle" x="154.747" y="-202.65" font-family="Times,serif" font-size="14.00">garbage</text>
<g id="node8" class="node">
<title>garbage</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="154.7468" cy="-206.3503" rx="38.1938" ry="18"/>
<text text-anchor="middle" x="154.7468" y="-202.6503" font-family="Times,serif" font-size="14.00" fill="#000000">garbage</text>
</g>
<!-- Sgo_speed&#45;&gt;garbage -->
<g id="edge9" class="edge"><title>Sgo_speed&#45;&gt;garbage</title>
<path fill="none" stroke="black" d="M524.872,-274.847C515.16,-272.942 505.167,-271.006 495.747,-269.22 389.973,-249.172 265.475,-226.924 200.098,-215.346"/>
<polygon fill="black" stroke="black" points="200.582,-211.877 190.125,-213.581 199.363,-218.77 200.582,-211.877"/>
<g id="edge9" class="edge">
<title>Sgo_speed&#45;&gt;garbage</title>
<path fill="none" stroke="#000000" d="M522.4219,-275.0311C512.854,-273.0515 503.0254,-271.0515 493.7468,-269.2203 389.2289,-248.5934 266.1854,-226.2596 200.8934,-214.5621"/>
<polygon fill="#000000" stroke="#000000" points="201.3822,-211.094 190.922,-212.7779 200.1492,-217.9846 201.3822,-211.094"/>
</g>
<!-- diskio -->
<g id="node9" class="node"><title>diskio</title>
<ellipse fill="none" stroke="black" cx="466.747" cy="-206.35" rx="34.394" ry="18"/>
<text text-anchor="middle" x="466.747" y="-202.65" font-family="Times,serif" font-size="14.00">disk io</text>
<g id="node9" class="node">
<title>diskio</title>
<ellipse fill="none" stroke="#000000" cx="466.7468" cy="-206.3503" rx="34.394" ry="18"/>
<text text-anchor="middle" x="466.7468" y="-202.6503" font-family="Times,serif" font-size="14.00" fill="#000000">disk io</text>
</g>
<!-- Sgo_speed&#45;&gt;diskio -->
<g id="edge10" class="edge"><title>Sgo_speed&#45;&gt;diskio</title>
<path fill="none" stroke="black" d="M558.197,-270.069C539.962,-257.563 514.63,-240.19 495.25,-226.898"/>
<polygon fill="black" stroke="black" points="497.038,-223.88 486.811,-221.111 493.078,-229.653 497.038,-223.88"/>
<g id="edge10" class="edge">
<title>Sgo_speed&#45;&gt;diskio</title>
<path fill="none" stroke="#000000" d="M555.7824,-270.0699C538.1416,-257.445 514.0815,-240.226 495.4196,-226.8704"/>
<polygon fill="#000000" stroke="#000000" points="497.4366,-224.0099 487.2676,-221.0363 493.3627,-229.7023 497.4366,-224.0099"/>
</g>
<!-- ConnClose_notimer -->
<g id="node10" class="node"><title>ConnClose_notimer</title>
<ellipse fill="lightyellow" stroke="black" cx="581.747" cy="-206.35" rx="56.6372" ry="26.7407"/>
<text text-anchor="middle" x="581.747" y="-210.15" font-family="Times,serif" font-size="14.00">Conn.Close</text>
<text text-anchor="middle" x="581.747" y="-195.15" font-family="Times,serif" font-size="14.00">no timer</text>
<g id="node10" class="node">
<title>ConnClose_notimer</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="579.7468" cy="-206.3503" rx="56.6372" ry="26.7407"/>
<text text-anchor="middle" x="579.7468" y="-210.1503" font-family="Times,serif" font-size="14.00" fill="#000000">Conn.Close</text>
<text text-anchor="middle" x="579.7468" y="-195.1503" font-family="Times,serif" font-size="14.00" fill="#000000">no timer</text>
</g>
<!-- Sgo_speed&#45;&gt;ConnClose_notimer -->
<g id="edge11" class="edge"><title>Sgo_speed&#45;&gt;ConnClose_notimer</title>
<path fill="none" stroke="black" d="M581.747,-269.107C581.747,-261.617 581.747,-252.526 581.747,-243.648"/>
<polygon fill="black" stroke="black" points="585.247,-243.433 581.747,-233.433 578.247,-243.433 585.247,-243.433"/>
<g id="edge11" class="edge">
<title>Sgo_speed&#45;&gt;ConnClose_notimer</title>
<path fill="none" stroke="#000000" d="M579.7468,-268.8697C579.7468,-261.2998 579.7468,-252.2403 579.7468,-243.3984"/>
<polygon fill="#000000" stroke="#000000" points="583.2469,-243.2209 579.7468,-233.2209 576.2469,-243.2209 583.2469,-243.2209"/>
</g>
<!-- osnet_latency -->
<g id="node11" class="node"><title>osnet_latency</title>
<ellipse fill="none" stroke="black" cx="719.747" cy="-206.35" rx="60.2083" ry="26.7407"/>
<text text-anchor="middle" x="719.747" y="-210.15" font-family="Times,serif" font-size="14.00">OS/Network</text>
<text text-anchor="middle" x="719.747" y="-195.15" font-family="Times,serif" font-size="14.00">latency</text>
<g id="node11" class="node">
<title>osnet_latency</title>
<ellipse fill="none" stroke="#000000" cx="717.7468" cy="-206.3503" rx="60.2083" ry="26.7407"/>
<text text-anchor="middle" x="717.7468" y="-210.1503" font-family="Times,serif" font-size="14.00" fill="#000000">OS/Network</text>
<text text-anchor="middle" x="717.7468" y="-195.1503" font-family="Times,serif" font-size="14.00" fill="#000000">latency</text>
</g>
<!-- Sgo_speed&#45;&gt;osnet_latency -->
<g id="edge12" class="edge"><title>Sgo_speed&#45;&gt;osnet_latency</title>
<path fill="none" stroke="black" d="M609.673,-270.26C628.349,-259.586 653.336,-245.306 674.782,-233.048"/>
<polygon fill="black" stroke="black" points="676.783,-235.936 683.728,-227.936 673.309,-229.859 676.783,-235.936"/>
<g id="edge12" class="edge">
<title>Sgo_speed&#45;&gt;osnet_latency</title>
<path fill="none" stroke="#000000" d="M608.3405,-270.464C626.7846,-259.6555 651.176,-245.3618 672.247,-233.0139"/>
<polygon fill="#000000" stroke="#000000" points="674.189,-235.9326 681.0471,-227.8569 670.6498,-229.8932 674.189,-235.9326"/>
</g>
<!-- QSgo_speed -->
<g id="node12" class="node"><title>QSgo_speed</title>
<ellipse fill="none" stroke="black" cx="1088.75" cy="-206.35" rx="27" ry="18"/>
<text text-anchor="start" x="1085.25" y="-202.65" font-family="Times,serif" font-size="14.00">?</text>
<g id="node12" class="node">
<title>QSgo_speed</title>
<ellipse fill="none" stroke="#000000" cx="1088.7468" cy="-206.3503" rx="27" ry="18"/>
<text text-anchor="start" x="1085.2468" y="-202.6503" font-family="Times,serif" font-size="14.00" fill="#000000">?</text>
</g>
<!-- Sgo_speed&#45;&gt;QSgo_speed -->
<g id="edge13" class="edge"><title>Sgo_speed&#45;&gt;QSgo_speed</title>
<path fill="none" stroke="black" d="M644.169,-276.51C751.392,-259.83 967.259,-226.249 1052.72,-212.954"/>
<polygon fill="black" stroke="black" points="1053.38,-216.395 1062.72,-211.399 1052.3,-209.478 1053.38,-216.395"/>
<g id="edge13" class="edge">
<title>Sgo_speed&#45;&gt;QSgo_speed</title>
<path fill="none" stroke="#000000" d="M643.6966,-277.06C751.6053,-259.9154 966.454,-225.7802 1052.1843,-212.1594"/>
<polygon fill="#000000" stroke="#000000" points="1052.8935,-215.5907 1062.2205,-210.5648 1051.7951,-208.6774 1052.8935,-215.5907"/>
</g>
<!-- pktbuf_alloc -->
<g id="node17" class="node"><title>pktbuf_alloc</title>
<ellipse fill="lightyellow" stroke="black" cx="35.7468" cy="-116.61" rx="35.9954" ry="18"/>
<text text-anchor="start" x="16.2468" y="-112.91" font-family="Times,serif" font-size="14.00">PktBuf</text>
<g id="node17" class="node">
<title>pktbuf_alloc</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="35.7468" cy="-116.6102" rx="35.9954" ry="18"/>
<text text-anchor="start" x="16.2468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">PktBuf</text>
</g>
<!-- garbage&#45;&gt;pktbuf_alloc -->
<g id="edge18" class="edge"><title>garbage&#45;&gt;pktbuf_alloc</title>
<path fill="none" stroke="black" d="M135.096,-190.862C115.515,-176.424 85.2765,-154.129 63.3016,-137.927"/>
<polygon fill="black" stroke="black" points="65.1574,-134.946 55.0316,-131.829 61.0033,-140.581 65.1574,-134.946"/>
<g id="edge18" class="edge">
<title>garbage&#45;&gt;pktbuf_alloc</title>
<path fill="none" stroke="#000000" d="M134.29,-190.9234C114.9304,-176.324 85.6976,-154.279 64.0952,-137.9882"/>
<polygon fill="#000000" stroke="#000000" points="66.0283,-135.0623 55.9367,-131.8357 61.8135,-140.6513 66.0283,-135.0623"/>
</g>
<!-- msg_alloc -->
<g id="node18" class="node"><title>msg_alloc</title>
<ellipse fill="lightyellow" stroke="black" cx="116.747" cy="-116.61" rx="27" ry="18"/>
<text text-anchor="start" x="104.247" y="-112.91" font-family="Times,serif" font-size="14.00">Msg</text>
<g id="node18" class="node">
<title>msg_alloc</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="116.7468" cy="-116.6102" rx="27" ry="18"/>
<text text-anchor="start" x="104.2468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">Msg</text>
</g>
<!-- garbage&#45;&gt;msg_alloc -->
<g id="edge19" class="edge"><title>garbage&#45;&gt;msg_alloc</title>
<path fill="none" stroke="black" d="M147.42,-188.433C141.918,-175.729 134.283,-158.1 128.007,-143.61"/>
<polygon fill="black" stroke="black" points="131.108,-141.963 123.922,-134.178 124.685,-144.745 131.108,-141.963"/>
<g id="edge19" class="edge">
<title>garbage&#45;&gt;msg_alloc</title>
<path fill="none" stroke="#000000" d="M147.2393,-188.6205C141.7913,-175.7547 134.3241,-158.1203 128.1428,-143.5227"/>
<polygon fill="#000000" stroke="#000000" points="131.2318,-141.8414 124.1095,-133.9977 124.7859,-144.571 131.2318,-141.8414"/>
</g>
<!-- conn_alloc -->
<g id="node19" class="node"><title>conn_alloc</title>
<ellipse fill="lightyellow" stroke="black" cx="191.747" cy="-116.61" rx="29.795" ry="18"/>
<text text-anchor="start" x="176.747" y="-112.91" font-family="Times,serif" font-size="14.00">Conn</text>
<g id="node19" class="node">
<title>conn_alloc</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="191.7468" cy="-116.6102" rx="29.795" ry="18"/>
<text text-anchor="start" x="176.7468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">Conn</text>
</g>
<!-- garbage&#45;&gt;conn_alloc -->
<g id="edge20" class="edge"><title>garbage&#45;&gt;conn_alloc</title>
<path fill="none" stroke="black" d="M161.881,-188.433C167.238,-175.729 174.672,-158.1 180.783,-143.61"/>
<polygon fill="black" stroke="black" points="184.1,-144.752 184.76,-134.178 177.65,-142.032 184.1,-144.752"/>
<g id="edge20" class="edge">
<title>garbage&#45;&gt;conn_alloc</title>
<path fill="none" stroke="#000000" d="M162.0568,-188.6205C167.3272,-175.8377 174.5384,-158.3477 180.5341,-143.8056"/>
<polygon fill="#000000" stroke="#000000" points="183.876,-144.8823 184.452,-134.3031 177.4044,-142.214 183.876,-144.8823"/>
</g>
<!-- gosched -->
<g id="node20" class="node"><title>gosched</title>
<ellipse fill="#f2f2f2" stroke="black" cx="304.747" cy="-116.61" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="304.747" y="-120.41" font-family="Times,serif" font-size="14.00">?</text>
<text text-anchor="middle" x="304.747" y="-105.41" font-family="Times,serif" font-size="14.00">go scheduling</text>
<g id="node20" class="node">
<title>gosched</title>
<ellipse fill="#f2f2f2" stroke="#000000" cx="304.7468" cy="-116.6102" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="304.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">?</text>
<text text-anchor="middle" x="304.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">go scheduling</text>
</g>
<!-- diskio&#45;&gt;gosched -->
<g id="edge21" class="edge"><title>diskio&#45;&gt;gosched</title>
<path fill="none" stroke="black" d="M443.536,-192.779C419.829,-179.94 382.342,-159.636 352.3,-143.365"/>
<polygon fill="black" stroke="black" points="353.7,-140.143 343.24,-138.458 350.366,-146.298 353.7,-140.143"/>
<g id="edge21" class="edge">
<title>diskio&#45;&gt;gosched</title>
<path fill="none" stroke="#000000" d="M442.8432,-193.1088C419.2335,-180.0302 382.4561,-159.6573 352.7895,-143.2235"/>
<polygon fill="#000000" stroke="#000000" points="354.277,-140.0464 343.8334,-138.2622 350.8849,-146.1696 354.277,-140.0464"/>
</g>
<!-- GOMAXPROCS -->
<g id="node21" class="node"><title>GOMAXPROCS</title>
<ellipse fill="none" stroke="black" cx="466.747" cy="-116.61" rx="78.4777" ry="26.7407"/>
<text text-anchor="middle" x="466.747" y="-120.41" font-family="Times,serif" font-size="14.00">?</text>
<text text-anchor="middle" x="466.747" y="-105.41" font-family="Times,serif" font-size="14.00">GOMAXPROCS</text>
<g id="node21" class="node">
<title>GOMAXPROCS</title>
<ellipse fill="none" stroke="#000000" cx="466.7468" cy="-116.6102" rx="78.4777" ry="26.7407"/>
<text text-anchor="middle" x="466.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">?</text>
<text text-anchor="middle" x="466.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">GOMAXPROCS</text>
</g>
<!-- diskio&#45;&gt;GOMAXPROCS -->
<g id="edge22" class="edge"><title>diskio&#45;&gt;GOMAXPROCS</title>
<path fill="none" stroke="black" d="M466.747,-188.016C466.747,-178.204 466.747,-165.557 466.747,-153.694"/>
<polygon fill="black" stroke="black" points="470.247,-153.562 466.747,-143.562 463.247,-153.562 470.247,-153.562"/>
<g id="edge22" class="edge">
<title>diskio&#45;&gt;GOMAXPROCS</title>
<path fill="none" stroke="#000000" d="M466.7468,-188.19C466.7468,-178.287 466.7468,-165.6549 466.7468,-153.7674"/>
<polygon fill="#000000" stroke="#000000" points="470.2469,-153.5998 466.7468,-143.5998 463.2469,-153.5998 470.2469,-153.5998"/>
</g>
<!-- rx_no_delay -->
<g id="node27" class="node"><title>rx_no_delay</title>
<ellipse fill="lightyellow" stroke="black" cx="607.747" cy="-116.61" rx="44.5955" ry="26.7407"/>
<text text-anchor="middle" x="607.747" y="-120.41" font-family="Times,serif" font-size="14.00">net rx</text>
<text text-anchor="middle" x="607.747" y="-105.41" font-family="Times,serif" font-size="14.00">no delay</text>
<g id="node27" class="node">
<title>rx_no_delay</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="607.7468" cy="-116.6102" rx="44.5955" ry="26.7407"/>
<text text-anchor="middle" x="607.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">net rx</text>
<text text-anchor="middle" x="607.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">no delay</text>
</g>
<!-- osnet_latency&#45;&gt;rx_no_delay -->
<g id="edge27" class="edge"><title>osnet_latency&#45;&gt;rx_no_delay</title>
<path fill="none" stroke="black" d="M690.904,-182.755C676.002,-171.081 657.714,-156.754 642.087,-144.512"/>
<polygon fill="black" stroke="black" points="644.22,-141.737 634.19,-138.325 639.903,-147.247 644.22,-141.737"/>
<g id="edge27" class="edge">
<title>osnet_latency&#45;&gt;rx_no_delay</title>
<path fill="none" stroke="#000000" d="M688.8456,-182.7721C674.6666,-171.2046 657.4749,-157.1793 642.5757,-145.0242"/>
<polygon fill="#000000" stroke="#000000" points="644.529,-142.1008 634.5679,-138.4913 640.104,-147.5248 644.529,-142.1008"/>
</g>
<!-- nocstates -->
<g id="node28" class="node"><title>nocstates</title>
<ellipse fill="lightyellow" stroke="black" cx="723.747" cy="-116.61" rx="53.8905" ry="18"/>
<text text-anchor="middle" x="723.747" y="-112.91" font-family="Times,serif" font-size="14.00">disable &gt;C1</text>
<g id="node28" class="node">
<title>nocstates</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="723.7468" cy="-116.6102" rx="53.8905" ry="18"/>
<text text-anchor="middle" x="723.7468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">disable &gt;C1</text>
</g>
<!-- osnet_latency&#45;&gt;nocstates -->
<g id="edge28" class="edge"><title>osnet_latency&#45;&gt;nocstates</title>
<path fill="none" stroke="black" d="M720.947,-179.025C721.437,-168.274 722.004,-155.839 722.499,-144.982"/>
<polygon fill="black" stroke="black" points="726.005,-144.921 722.964,-134.772 719.013,-144.602 726.005,-144.921"/>
<g id="edge28" class="edge">
<title>osnet_latency&#45;&gt;nocstates</title>
<path fill="none" stroke="#000000" d="M719.547,-179.4253C720.2795,-168.4705 721.1261,-155.8071 721.8666,-144.7328"/>
<polygon fill="#000000" stroke="#000000" points="725.3617,-144.9209 722.5367,-134.7097 718.3773,-144.4539 725.3617,-144.9209"/>
</g>
<!-- tcp_latency -->
<g id="node29" class="node"><title>tcp_latency</title>
<ellipse fill="none" stroke="black" cx="839.747" cy="-116.61" rx="44.5955" ry="26.7407"/>
<text text-anchor="middle" x="839.747" y="-120.41" font-family="Times,serif" font-size="14.00">TCP RR</text>
<text text-anchor="middle" x="839.747" y="-105.41" font-family="Times,serif" font-size="14.00">latency</text>
<g id="node29" class="node">
<title>tcp_latency</title>
<ellipse fill="none" stroke="#000000" cx="839.7468" cy="-116.6102" rx="44.5955" ry="26.7407"/>
<text text-anchor="middle" x="839.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">TCP RR</text>
<text text-anchor="middle" x="839.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">latency</text>
</g>
<!-- osnet_latency&#45;&gt;tcp_latency -->
<g id="edge29" class="edge"><title>osnet_latency&#45;&gt;tcp_latency</title>
<path fill="none" stroke="black" d="M750.338,-182.983C766.689,-171.028 786.911,-156.242 803.985,-143.758"/>
<polygon fill="black" stroke="black" points="806.077,-146.564 812.083,-137.837 801.945,-140.914 806.077,-146.564"/>
<g id="edge29" class="edge">
<title>osnet_latency&#45;&gt;tcp_latency</title>
<path fill="none" stroke="#000000" d="M749.1649,-183.24C765.6679,-171.1008 785.9823,-156.158 803.1883,-143.5017"/>
<polygon fill="#000000" stroke="#000000" points="805.3733,-146.2394 811.3549,-137.4946 801.2255,-140.6006 805.3733,-146.2394"/>
</g>
<!-- prefetch_slow -->
<g id="node13" class="node"><title>prefetch_slow</title>
<ellipse fill="none" stroke="black" cx="952.747" cy="-116.61" rx="50.41" ry="26.7407"/>
<text text-anchor="middle" x="952.747" y="-120.41" font-family="Times,serif" font-size="14.00">? prefetch</text>
<text text-anchor="middle" x="952.747" y="-105.41" font-family="Times,serif" font-size="14.00">slow</text>
<g id="node13" class="node">
<title>prefetch_slow</title>
<ellipse fill="none" stroke="#000000" cx="952.7468" cy="-116.6102" rx="50.41" ry="26.7407"/>
<text text-anchor="middle" x="952.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">? prefetch</text>
<text text-anchor="middle" x="952.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">slow</text>
</g>
<!-- QSgo_speed&#45;&gt;prefetch_slow -->
<g id="edge14" class="edge"><title>QSgo_speed&#45;&gt;prefetch_slow</title>
<path fill="none" stroke="black" d="M1069.84,-193.15C1049.99,-180.346 1018.19,-159.833 992.742,-143.413"/>
<polygon fill="black" stroke="black" points="994.334,-140.275 984.033,-137.795 990.539,-146.157 994.334,-140.275"/>
<g id="edge14" class="edge">
<title>QSgo_speed&#45;&gt;prefetch_slow</title>
<path fill="none" stroke="#000000" d="M1069.5498,-193.6831C1049.7696,-180.631 1018.3452,-159.8955 993.071,-143.2183"/>
<polygon fill="#000000" stroke="#000000" points="994.6913,-140.0941 984.4169,-137.5078 990.8359,-145.9368 994.6913,-140.0941"/>
</g>
<!-- parallel_slow -->
<g id="node14" class="node"><title>parallel_slow</title>
<ellipse fill="none" stroke="black" cx="1088.75" cy="-116.61" rx="67.7647" ry="26.7407"/>
<text text-anchor="middle" x="1088.75" y="-120.41" font-family="Times,serif" font-size="14.00">? many clients</text>
<text text-anchor="middle" x="1088.75" y="-105.41" font-family="Times,serif" font-size="14.00">Sgo slower</text>
<g id="node14" class="node">
<title>parallel_slow</title>
<ellipse fill="none" stroke="#000000" cx="1088.7468" cy="-116.6102" rx="67.7647" ry="26.7407"/>
<text text-anchor="middle" x="1088.7468" y="-120.4102" font-family="Times,serif" font-size="14.00" fill="#000000">? many clients</text>
<text text-anchor="middle" x="1088.7468" y="-105.4102" font-family="Times,serif" font-size="14.00" fill="#000000">Sgo slower</text>
</g>
<!-- QSgo_speed&#45;&gt;parallel_slow -->
<g id="edge15" class="edge"><title>QSgo_speed&#45;&gt;parallel_slow</title>
<path fill="none" stroke="black" d="M1088.75,-188.016C1088.75,-178.204 1088.75,-165.557 1088.75,-153.694"/>
<polygon fill="black" stroke="black" points="1092.25,-153.562 1088.75,-143.562 1085.25,-153.562 1092.25,-153.562"/>
<g id="edge15" class="edge">
<title>QSgo_speed&#45;&gt;parallel_slow</title>
<path fill="none" stroke="#000000" d="M1088.7468,-188.19C1088.7468,-178.287 1088.7468,-165.6549 1088.7468,-153.7674"/>
<polygon fill="#000000" stroke="#000000" points="1092.2469,-153.5998 1088.7468,-143.5998 1085.2469,-153.5998 1092.2469,-153.5998"/>
</g>
<!-- Mmap_go -->
<g id="node15" class="node"><title>Mmap_go</title>
<ellipse fill="none" stroke="black" cx="1273.75" cy="-116.61" rx="98.5829" ry="18"/>
<text text-anchor="middle" x="1273.75" y="-112.91" font-family="Times,serif" font-size="14.00">? io.ReaderAt via mmap</text>
<g id="node15" class="node">
<title>Mmap_go</title>
<ellipse fill="none" stroke="#000000" cx="1273.7468" cy="-116.6102" rx="98.5829" ry="18"/>
<text text-anchor="middle" x="1273.7468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">? io.ReaderAt via mmap</text>
</g>
<!-- QSgo_speed&#45;&gt;Mmap_go -->
<g id="edge16" class="edge"><title>QSgo_speed&#45;&gt;Mmap_go</title>
<path fill="none" stroke="black" d="M1110.33,-195.114C1139.77,-181.153 1193.15,-155.836 1230.88,-137.942"/>
<polygon fill="black" stroke="black" points="1232.57,-141.012 1240.11,-133.564 1229.57,-134.687 1232.57,-141.012"/>
<g id="edge16" class="edge">
<title>QSgo_speed&#45;&gt;Mmap_go</title>
<path fill="none" stroke="#000000" d="M1110.6952,-195.7035C1139.9009,-181.5364 1192.2089,-156.1627 1229.7088,-137.9722"/>
<polygon fill="#000000" stroke="#000000" points="1231.4308,-141.027 1238.9005,-133.5135 1228.3756,-134.7289 1231.4308,-141.027"/>
</g>
<!-- sha1_index -->
<g id="node16" class="node"><title>sha1_index</title>
<ellipse fill="none" stroke="black" cx="1445.75" cy="-116.61" rx="55.4913" ry="18"/>
<text text-anchor="middle" x="1445.75" y="-112.91" font-family="Times,serif" font-size="14.00">? sha1 index</text>
<g id="node16" class="node">
<title>sha1_index</title>
<ellipse fill="none" stroke="#000000" cx="1445.7468" cy="-116.6102" rx="55.4913" ry="18"/>
<text text-anchor="middle" x="1445.7468" y="-112.9102" font-family="Times,serif" font-size="14.00" fill="#000000">? sha1 index</text>
</g>
<!-- QSgo_speed&#45;&gt;sha1_index -->
<g id="edge17" class="edge"><title>QSgo_speed&#45;&gt;sha1_index</title>
<path fill="none" stroke="black" d="M1115,-201.4C1166.76,-193.267 1285.28,-172.912 1381.75,-143.48 1389.4,-141.144 1397.42,-138.266 1405.09,-135.287"/>
<polygon fill="black" stroke="black" points="1406.58,-138.46 1414.57,-131.494 1403.98,-131.961 1406.58,-138.46"/>
<g id="edge17" class="edge">
<title>QSgo_speed&#45;&gt;sha1_index</title>
<path fill="none" stroke="#000000" d="M1115.4384,-202.3339C1167.454,-194.1338 1285.7058,-173.6563 1381.7468,-143.4802 1389.2645,-141.1182 1397.1174,-138.2097 1404.6437,-135.188"/>
<polygon fill="#000000" stroke="#000000" points="1406.0529,-138.3927 1413.9526,-131.3326 1403.3744,-131.9254 1406.0529,-138.3927"/>
</g>
<!-- Cpy_r_Sgo -->
<g id="node22" class="node"><title>Cpy_r_Sgo</title>
<ellipse fill="lightyellow" stroke="black" cx="258.747" cy="-431.22" rx="61.99" ry="18"/>
<text text-anchor="start" x="219.247" y="-428.52" font-family="Times,serif" font-size="14.00">C</text>
<text text-anchor="start" x="229.247" y="-428.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">py</text>
<text text-anchor="start" x="242.247" y="-428.52" font-family="Times,serif" font-size="14.00"> &#160;read S</text>
<text text-anchor="start" x="285.247" y="-428.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<g id="node22" class="node">
<title>Cpy_r_Sgo</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="256.7468" cy="-431.2203" rx="61.99" ry="18"/>
<text text-anchor="start" x="217.2468" y="-428.5203" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
<text text-anchor="start" x="227.2468" y="-428.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">py</text>
<text text-anchor="start" x="240.2468" y="-428.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;read S</text>
<text text-anchor="start" x="283.2468" y="-428.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
</g>
<!-- Cpy_r_Sgo&#45;&gt;Sgo -->
<g id="edge23" class="edge"><title>Cpy_r_Sgo&#45;&gt;Sgo</title>
<path fill="none" stroke="black" d="M281.862,-414.511C297.576,-403.832 318.417,-389.667 334.872,-378.485"/>
<polygon fill="black" stroke="black" points="337.199,-381.135 343.502,-372.62 333.264,-375.346 337.199,-381.135"/>
<g id="edge23" class="edge">
<title>Cpy_r_Sgo&#45;&gt;Sgo</title>
<path fill="none" stroke="#000000" d="M280.636,-414.5211C296.0799,-403.7254 316.2271,-389.6419 332.3244,-378.3894"/>
<polygon fill="#000000" stroke="#000000" points="334.6042,-381.0661 340.7951,-372.4682 330.5937,-375.3289 334.6042,-381.0661"/>
</g>
<!-- Cgo_r_Sgo -->
<g id="node23" class="node"><title>Cgo_r_Sgo</title>
<ellipse fill="lightyellow" stroke="black" cx="348.747" cy="-575.22" rx="61.99" ry="18"/>
<text text-anchor="start" x="309.247" y="-572.52" font-family="Times,serif" font-size="14.00">C</text>
<text text-anchor="start" x="319.247" y="-572.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<text text-anchor="start" x="332.247" y="-572.52" font-family="Times,serif" font-size="14.00"> &#160;read S</text>
<text text-anchor="start" x="375.247" y="-572.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<g id="node23" class="node">
<title>Cgo_r_Sgo</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="346.7468" cy="-575.2203" rx="61.99" ry="18"/>
<text text-anchor="start" x="307.2468" y="-572.5203" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
<text text-anchor="start" x="317.2468" y="-572.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
<text text-anchor="start" x="330.2468" y="-572.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;read S</text>
<text text-anchor="start" x="373.2468" y="-572.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
</g>
<!-- Cgo_r_Sgo&#45;&gt;Cgo -->
<g id="edge24" class="edge"><title>Cgo_r_Sgo&#45;&gt;Cgo</title>
<path fill="none" stroke="black" d="M370.985,-558.336C385.756,-547.785 405.207,-533.891 420.702,-522.824"/>
<polygon fill="black" stroke="black" points="422.746,-525.665 428.849,-517.005 418.677,-519.969 422.746,-525.665"/>
<g id="edge24" class="edge">
<title>Cgo_r_Sgo&#45;&gt;Cgo</title>
<path fill="none" stroke="#000000" d="M369.9715,-558.1574C384.4499,-547.5201 403.1256,-533.7992 418.1907,-522.7309"/>
<polygon fill="#000000" stroke="#000000" points="420.5981,-525.3054 426.5846,-516.564 416.4535,-519.6642 420.5981,-525.3054"/>
</g>
<!-- Cgo_r_Sgo&#45;&gt;Sgo -->
<g id="edge25" class="edge"><title>Cgo_r_Sgo&#45;&gt;Sgo</title>
<path fill="none" stroke="black" d="M349.789,-557.07C352.037,-520.052 357.362,-432.401 360.083,-387.607"/>
<polygon fill="black" stroke="black" points="363.587,-387.647 360.7,-377.453 356.6,-387.222 363.587,-387.647"/>
<g id="edge25" class="edge">
<title>Cgo_r_Sgo&#45;&gt;Sgo</title>
<path fill="none" stroke="#000000" d="M347.8328,-557.1758C350.0935,-519.6141 355.32,-432.7744 358.0369,-387.6307"/>
<polygon fill="#000000" stroke="#000000" points="361.5476,-387.5577 358.6548,-377.3654 354.5602,-387.1371 361.5476,-387.5577"/>
</g>
<!-- Cgo_r_Spy -->
<g id="node24" class="node"><title>Cgo_r_Spy</title>
<ellipse fill="lightyellow" stroke="black" cx="489.747" cy="-575.22" rx="61.99" ry="18"/>
<text text-anchor="start" x="450.247" y="-572.52" font-family="Times,serif" font-size="14.00">C</text>
<text text-anchor="start" x="460.247" y="-572.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">go</text>
<text text-anchor="start" x="473.247" y="-572.52" font-family="Times,serif" font-size="14.00"> &#160;read S</text>
<text text-anchor="start" x="516.247" y="-572.52" font-family="Times,serif" baseline-shift="sub" font-size="14.00">py</text>
<g id="node24" class="node">
<title>Cgo_r_Spy</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="487.7468" cy="-575.2203" rx="61.99" ry="18"/>
<text text-anchor="start" x="448.2468" y="-572.5203" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
<text text-anchor="start" x="458.2468" y="-572.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">go</text>
<text text-anchor="start" x="471.2468" y="-572.5203" font-family="Times,serif" font-size="14.00" fill="#000000"> &#160;read S</text>
<text text-anchor="start" x="514.2468" y="-572.5203" font-family="Times,serif" baseline-shift="sub" font-size="14.00" fill="#000000">py</text>
</g>
<!-- Cgo_r_Spy&#45;&gt;Cgo -->
<g id="edge26" class="edge"><title>Cgo_r_Spy&#45;&gt;Cgo</title>
<path fill="none" stroke="black" d="M479.338,-557.275C474.064,-548.69 467.564,-538.108 461.759,-528.659"/>
<polygon fill="black" stroke="black" points="464.687,-526.739 456.471,-520.05 458.723,-530.403 464.687,-526.739"/>
<g id="edge26" class="edge">
<title>Cgo_r_Spy&#45;&gt;Cgo</title>
<path fill="none" stroke="#000000" d="M477.1176,-557.4226C471.9912,-548.8389 465.7459,-538.3817 460.1135,-528.9506"/>
<polygon fill="#000000" stroke="#000000" points="463.09,-527.1084 454.9577,-520.3176 457.0802,-530.6976 463.09,-527.1084"/>
</g>
<!-- Cleanup -->
<g id="node25" class="node"><title>Cleanup</title>
<ellipse fill="none" stroke="black" cx="636.747" cy="-575.22" rx="66.8882" ry="18"/>
<text text-anchor="middle" x="636.747" y="-571.52" font-family="Times,serif" font-size="14.00">Cleanup history</text>
<g id="node25" class="node">
<title>Cleanup</title>
<ellipse fill="none" stroke="#000000" cx="634.7468" cy="-575.2203" rx="66.8882" ry="18"/>
<text text-anchor="middle" x="634.7468" y="-571.5203" font-family="Times,serif" font-size="14.00" fill="#000000">Cleanup history</text>
</g>
<!-- Post -->
<g id="node26" class="node"><title>Post</title>
<ellipse fill="none" stroke="black" cx="748.747" cy="-575.22" rx="27" ry="18"/>
<text text-anchor="middle" x="748.747" y="-571.52" font-family="Times,serif" font-size="14.00">Post</text>
<g id="node26" class="node">
<title>Post</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="746.7468" cy="-575.2203" rx="27" ry="18"/>
<text text-anchor="middle" x="746.7468" y="-571.5203" font-family="Times,serif" font-size="14.00" fill="#000000">Post</text>
</g>
<!-- rtl_patch -->
<g id="node31" class="node"><title>rtl_patch</title>
<ellipse fill="lightyellow" stroke="black" cx="607.747" cy="-26.8701" rx="57.0522" ry="26.7407"/>
<text text-anchor="middle" x="607.747" y="-30.6701" font-family="Times,serif" font-size="14.00">r8169 patch</text>
<text text-anchor="middle" x="607.747" y="-15.6701" font-family="Times,serif" font-size="14.00">ethtool &#45;C</text>
<g id="node31" class="node">
<title>rtl_patch</title>
<ellipse fill="#ffffe0" stroke="#000000" cx="607.7468" cy="-26.8701" rx="57.0522" ry="26.7407"/>
<text text-anchor="middle" x="607.7468" y="-30.6701" font-family="Times,serif" font-size="14.00" fill="#000000">r8169 patch</text>
<text text-anchor="middle" x="607.7468" y="-15.6701" font-family="Times,serif" font-size="14.00" fill="#000000">ethtool &#45;C</text>
</g>
<!-- rx_no_delay&#45;&gt;rtl_patch -->
<g id="edge31" class="edge"><title>rx_no_delay&#45;&gt;rtl_patch</title>
<path fill="none" stroke="black" d="M607.747,-89.2852C607.747,-81.3185 607.747,-72.4275 607.747,-63.9391"/>
<polygon fill="black" stroke="black" points="611.247,-63.874 607.747,-53.874 604.247,-63.8741 611.247,-63.874"/>
<g id="edge31" class="edge">
<title>rx_no_delay&#45;&gt;rtl_patch</title>
<path fill="none" stroke="#000000" d="M607.7468,-89.6852C607.7468,-81.6102 607.7468,-72.607 607.7468,-63.9961"/>
<polygon fill="#000000" stroke="#000000" points="611.2469,-63.776 607.7468,-53.776 604.2469,-63.7761 611.2469,-63.776"/>
</g>
<!-- rtl_tcp_2eth -->
<g id="node30" class="node"><title>rtl_tcp_2eth</title>
<ellipse fill="oldlace" stroke="black" cx="839.747" cy="-26.8701" rx="102.561" ry="26.7407"/>
<text text-anchor="middle" x="839.747" y="-30.6701" font-family="Times,serif" font-size="14.00">RTL: TCP RR ↑ 400μs</text>
<text text-anchor="middle" x="839.747" y="-15.6701" font-family="Times,serif" font-size="14.00"> on 1 eth.f &#45;&gt; 2 eth.f</text>
<g id="node30" class="node">
<title>rtl_tcp_2eth</title>
<ellipse fill="#fdf5e6" stroke="#000000" cx="839.7468" cy="-26.8701" rx="102.561" ry="26.7407"/>
<text text-anchor="middle" x="839.7468" y="-30.6701" font-family="Times,serif" font-size="14.00" fill="#000000">RTL: TCP RR ↑ 400μs</text>
<text text-anchor="middle" x="839.7468" y="-15.6701" font-family="Times,serif" font-size="14.00" fill="#000000"> on 1 eth.f &#45;&gt; 2 eth.f</text>
</g>
<!-- tcp_latency&#45;&gt;rtl_tcp_2eth -->
<g id="edge30" class="edge"><title>tcp_latency&#45;&gt;rtl_tcp_2eth</title>
<path fill="none" stroke="black" d="M839.747,-89.2852C839.747,-81.3185 839.747,-72.4275 839.747,-63.9391"/>
<polygon fill="black" stroke="black" points="843.247,-63.874 839.747,-53.874 836.247,-63.8741 843.247,-63.874"/>
<g id="edge30" class="edge">
<title>tcp_latency&#45;&gt;rtl_tcp_2eth</title>
<path fill="none" stroke="#000000" d="M839.7468,-89.6852C839.7468,-81.6102 839.7468,-72.607 839.7468,-63.9961"/>
<polygon fill="#000000" stroke="#000000" points="843.2469,-63.776 839.7468,-53.776 836.2469,-63.7761 843.2469,-63.776"/>
</g>
</g>
</svg>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment