Scheduler-test: complete and document the Load-peak tests

- use parameters known to produce a clean linear model
- assert on properties of this linear model

Add extended documentation into the !TiddlyWiki,
with a textual account of the various findings,
also including some of the images and diagrams,
rendered as SVG
This commit is contained in:
Fischlurch 2024-04-11 23:08:20 +02:00
parent 7798ef499c
commit 1d4f6afd18
11 changed files with 3385 additions and 105 deletions

View file

@ -122,7 +122,7 @@ set arrow 11 from graph 0,0 to graph 0,1.08 size screen 0.025,15,60 filled ls 10
set xlabel 'load size ⟶ number of jobs'
set ylabel 'active time ⟶ ms'
set ylabel 'active time ⟶ ms' offset 2
set key autotitle columnheader tmargin
#
@ -169,7 +169,7 @@ if (plots > 1) {
# more than one additional data sequence
#
set y2tics
set y2label 'avg job time ⟶ µs' offset -2.2
set y2label 'avg job time ⟶ µs' offset -2.6
####---------------------------------------------
plot $RunData using 1:3 with impulses linestyle 3, \

View file

@ -122,7 +122,7 @@ set arrow 11 from graph 0,0 to graph 0,1.08 size screen 0.025,15,60 filled ls 10
set xlabel 'load size ⟶ number of jobs'
set ylabel 'active time ⟶ ms'
set ylabel 'active time ⟶ ms' offset 2
set key autotitle columnheader tmargin
#
@ -170,7 +170,7 @@ if (plots > 1) {
# more than one additional data sequence
#
set y2tics
set y2label 'avg job time ⟶ µs' offset -1.5
set y2label 'avg job time ⟶ µs' offset -2.6
####---------------------------------------------
plot $RunData using 1:3 with impulses linestyle 3, \

View file

@ -0,0 +1,967 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="600" height="600"
viewBox="0 0 600 600"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.2 patchlevel 6 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="600" height="600" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,242.4 L527.9,242.4 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,242.4 L81.0,242.4 '/> <g transform="translate(63.7,246.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 40</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,221.8 L527.9,221.8 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,221.8 L81.0,221.8 '/> <g transform="translate(63.7,225.7)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 60</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,201.1 L527.9,201.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,201.1 L81.0,201.1 '/> <g transform="translate(63.7,205.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 80</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,180.5 L527.9,180.5 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,180.5 L81.0,180.5 '/> <g transform="translate(63.7,184.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 100</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,159.9 L527.9,159.9 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,159.9 L81.0,159.9 '/> <g transform="translate(63.7,163.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 120</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,139.2 L527.9,139.2 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,139.2 L81.0,139.2 '/> <g transform="translate(63.7,143.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 140</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,118.6 L527.9,118.6 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,118.6 L81.0,118.6 '/> <g transform="translate(63.7,122.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 160</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,98.0 L527.9,98.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,98.0 L81.0,98.0 '/> <g transform="translate(63.7,101.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 180</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,77.4 L527.9,77.4 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,77.4 L81.0,77.4 '/> <g transform="translate(63.7,81.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 200</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,56.7 L527.9,56.7 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,56.7 L81.0,56.7 '/> <g transform="translate(63.7,60.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 220</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,36.1 L527.9,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,36.1 L81.0,36.1 '/> <g transform="translate(63.7,40.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 240</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,242.4 L72.0,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,242.4 L72.0,233.4 '/> <g transform="translate(72.0,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 30</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M98.8,242.4 L98.8,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M98.8,242.4 L98.8,233.4 '/> <g transform="translate(98.8,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 40</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M125.6,242.4 L125.6,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M125.6,242.4 L125.6,233.4 '/> <g transform="translate(125.6,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 50</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M152.5,242.4 L152.5,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M152.5,242.4 L152.5,233.4 '/> <g transform="translate(152.5,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 60</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M179.3,242.4 L179.3,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M179.3,242.4 L179.3,233.4 '/> <g transform="translate(179.3,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 70</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M206.1,242.4 L206.1,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M206.1,242.4 L206.1,233.4 '/> <g transform="translate(206.1,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 80</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M232.9,242.4 L232.9,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M232.9,242.4 L232.9,233.4 '/> <g transform="translate(232.9,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 90</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M259.7,242.4 L259.7,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M259.7,242.4 L259.7,233.4 '/> <g transform="translate(259.7,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 100</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M286.5,242.4 L286.5,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M286.5,242.4 L286.5,233.4 '/> <g transform="translate(286.5,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 110</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M313.4,242.4 L313.4,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M313.4,242.4 L313.4,233.4 '/> <g transform="translate(313.4,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 120</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M340.2,242.4 L340.2,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M340.2,242.4 L340.2,233.4 '/> <g transform="translate(340.2,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 130</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M367.0,242.4 L367.0,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M367.0,242.4 L367.0,233.4 '/> <g transform="translate(367.0,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 140</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M393.8,242.4 L393.8,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M393.8,242.4 L393.8,233.4 '/> <g transform="translate(393.8,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 150</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M420.6,242.4 L420.6,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M420.6,242.4 L420.6,233.4 '/> <g transform="translate(420.6,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 160</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M447.4,242.4 L447.4,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M447.4,242.4 L447.4,233.4 '/> <g transform="translate(447.4,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 170</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M474.3,242.4 L474.3,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M474.3,242.4 L474.3,233.4 '/> <g transform="translate(474.3,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 180</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M501.1,242.4 L501.1,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M501.1,242.4 L501.1,233.4 '/> <g transform="translate(501.1,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 190</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M527.9,242.4 L527.9,36.1 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,242.4 L527.9,233.4 '/> <g transform="translate(527.9,264.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" > 200</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'rgb( 48, 48, 48)' points = '534.0,242.4 531.8,238.6 546.1,242.4 531.8,246.2 534.0,242.4 '/>
</g>
<path stroke='rgb( 48, 48, 48)' d='M534.0,242.4 L531.8,238.6 L546.1,242.4 L531.8,246.2 L534.0,242.4 Z '/> <path stroke='rgb( 48, 48, 48)' d='M72.0,242.4 L534.0,242.4 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'rgb( 48, 48, 48)' points = '72.0,31.7 68.2,33.9 72.0,19.6 75.8,33.9 72.0,31.7 '/>
</g>
<path stroke='rgb( 48, 48, 48)' d='M72.0,31.7 L68.2,33.9 L72.0,19.6 L75.8,33.9 L72.0,31.7 Z '/> <path stroke='rgb( 48, 48, 48)' d='M72.0,242.4 L72.0,31.7 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(33.0,139.3) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" >active time ⟶ ms</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(299.9,291.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" >load size ⟶ number of jobs</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g id="gnuplot_plot_1a" ><title>result time</title>
<g fill="none" color="white" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(260.9,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" >result time</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<use xlink:href='#gpPt0' transform='translate(401.9,107.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(109.5,219.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(482.3,73.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(104.2,225.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(232.9,180.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(353.6,124.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(415.3,99.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(278.5,156.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(485.0,66.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(436.7,89.9) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(305.3,138.4) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(468.9,75.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(350.9,124.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(506.4,65.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(460.9,77.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(101.5,233.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(112.2,223.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(396.5,105.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(345.5,125.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(415.3,100.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(176.6,188.4) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(324.1,135.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(211.5,175.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(479.6,75.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(372.4,116.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(474.3,71.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(238.3,155.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(326.8,133.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(388.4,110.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(388.4,106.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(192.7,178.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(265.1,144.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(426.0,93.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(147.1,208.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(297.3,151.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(131.0,217.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(428.7,94.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(184.6,196.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(337.5,131.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(383.1,110.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(93.5,230.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(114.9,223.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(324.1,124.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(372.4,94.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(93.5,225.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(257.0,160.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(401.9,103.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(133.7,213.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(125.6,213.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(219.5,171.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(476.9,75.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(230.2,176.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(471.6,73.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(160.5,202.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(184.6,192.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(316.0,137.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(104.2,227.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(348.2,124.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(114.9,226.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(423.3,94.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(211.5,178.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(235.6,170.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(157.8,202.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(109.5,222.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(310.7,141.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(383.1,115.4) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(165.9,200.2) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(211.5,181.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(495.7,63.6) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(431.4,92.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(522.5,53.4) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(517.2,56.5) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(474.3,70.8) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(321.4,134.4) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(361.6,117.9) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(495.7,67.9) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(506.4,57.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(235.6,174.3) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(527.9,48.1) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(72.0,237.7) scale(4.50)' color='rgb( 36, 12, 195)'/>
<use xlink:href='#gpPt0' transform='translate(290.3,18.0) scale(4.50)' color='rgb( 36, 12, 195)'/>
</g>
</g>
<g id="gnuplot_plot_2a" ><title>Model: 1.06·p + 12.85</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(469.1,21.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" >Model: 1.06·p + 12.85</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(170, 5, 25)' d='M477.4,18.0 L519.6,18.0 M72.0,237.5 L76.6,235.6 L81.2,233.8 L85.8,231.9 L90.4,230.0 L95.0,228.1
L99.6,226.2 L104.2,224.4 L108.8,222.5 L113.4,220.6 L118.1,218.7 L122.7,216.8 L127.3,214.9 L131.9,213.1
L136.5,211.2 L141.1,209.3 L145.7,207.4 L150.3,205.5 L154.9,203.7 L159.5,201.8 L164.1,199.9 L168.7,198.0
L173.3,196.1 L177.9,194.2 L182.5,192.4 L187.1,190.5 L191.7,188.6 L196.3,186.7 L200.9,184.8 L205.5,182.9
L210.2,181.1 L214.8,179.2 L219.4,177.3 L224.0,175.4 L228.6,173.5 L233.2,171.7 L237.8,169.8 L242.4,167.9
L247.0,166.0 L251.6,164.1 L256.2,162.2 L260.8,160.4 L265.4,158.5 L270.0,156.6 L274.6,154.7 L279.2,152.8
L283.8,151.0 L288.4,149.1 L293.0,147.2 L297.6,145.3 L302.3,143.4 L306.9,141.5 L311.5,139.7 L316.1,137.8
L320.7,135.9 L325.3,134.0 L329.9,132.1 L334.5,130.2 L339.1,128.4 L343.7,126.5 L348.3,124.6 L352.9,122.7
L357.5,120.8 L362.1,119.0 L366.7,117.1 L371.3,115.2 L375.9,113.3 L380.5,111.4 L385.1,109.5 L389.7,107.7
L394.4,105.8 L399.0,103.9 L403.6,102.0 L408.2,100.1 L412.8,98.3 L417.4,96.4 L422.0,94.5 L426.6,92.6
L431.2,90.7 L435.8,88.8 L440.4,87.0 L445.0,85.1 L449.6,83.2 L454.2,81.3 L458.8,79.4 L463.4,77.5
L468.0,75.7 L472.6,73.8 L477.2,71.9 L481.8,70.0 L486.5,68.1 L491.1,66.3 L495.7,64.4 L500.3,62.5
L504.9,60.6 L509.5,58.7 L514.1,56.8 L518.7,55.0 L523.3,53.1 L527.9,51.2 '/></g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,528.0 L527.9,528.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,528.0 L81.0,528.0 '/> <g transform="translate(63.7,531.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,501.7 L527.9,501.7 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,501.7 L81.0,501.7 '/> <g transform="translate(63.7,505.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,475.5 L527.9,475.5 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,475.5 L81.0,475.5 '/> <g transform="translate(63.7,479.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,449.2 L527.9,449.2 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,449.2 L81.0,449.2 '/> <g transform="translate(63.7,453.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,423.0 L527.9,423.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,423.0 L81.0,423.0 '/> <g transform="translate(63.7,426.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,396.7 L527.9,396.7 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,396.7 L81.0,396.7 '/> <g transform="translate(63.7,400.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,370.5 L527.9,370.5 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,370.5 L81.0,370.5 '/> <g transform="translate(63.7,374.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 6</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,344.2 L527.9,344.2 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,344.2 L81.0,344.2 '/> <g transform="translate(63.7,348.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 7</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,318.0 L527.9,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,318.0 L81.0,318.0 '/> <g transform="translate(63.7,321.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" > 8</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M72.0,528.0 L72.0,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,528.0 L72.0,519.0 '/> <g transform="translate(72.0,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M98.8,528.0 L98.8,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M98.8,528.0 L98.8,519.0 '/> <g transform="translate(98.8,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M125.6,528.0 L125.6,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M125.6,528.0 L125.6,519.0 '/> <g transform="translate(125.6,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M152.5,528.0 L152.5,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M152.5,528.0 L152.5,519.0 '/> <g transform="translate(152.5,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M179.3,528.0 L179.3,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M179.3,528.0 L179.3,519.0 '/> <g transform="translate(179.3,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M206.1,528.0 L206.1,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M206.1,528.0 L206.1,519.0 '/> <g transform="translate(206.1,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M232.9,528.0 L232.9,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M232.9,528.0 L232.9,519.0 '/> <g transform="translate(232.9,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M259.7,528.0 L259.7,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M259.7,528.0 L259.7,519.0 '/> <g transform="translate(259.7,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M286.5,528.0 L286.5,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M286.5,528.0 L286.5,519.0 '/> <g transform="translate(286.5,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M313.4,528.0 L313.4,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M313.4,528.0 L313.4,519.0 '/> <g transform="translate(313.4,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M340.2,528.0 L340.2,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M340.2,528.0 L340.2,519.0 '/> <g transform="translate(340.2,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M367.0,528.0 L367.0,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M367.0,528.0 L367.0,519.0 '/> <g transform="translate(367.0,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M393.8,528.0 L393.8,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M393.8,528.0 L393.8,519.0 '/> <g transform="translate(393.8,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M420.6,528.0 L420.6,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M420.6,528.0 L420.6,519.0 '/> <g transform="translate(420.6,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M447.4,528.0 L447.4,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M447.4,528.0 L447.4,519.0 '/> <g transform="translate(447.4,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M474.3,528.0 L474.3,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M474.3,528.0 L474.3,519.0 '/> <g transform="translate(474.3,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M501.1,528.0 L501.1,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M501.1,528.0 L501.1,519.0 '/> <g transform="translate(501.1,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="gray" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(160, 160, 160)' stroke-dasharray='2,4' class="gridline" d='M527.9,528.0 L527.9,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,528.0 L527.9,519.0 '/> <g transform="translate(527.9,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,528.0 L518.9,528.0 '/> <g transform="translate(536.2,531.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,493.0 L518.9,493.0 '/> <g transform="translate(536.2,496.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 2000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,458.0 L518.9,458.0 '/> <g transform="translate(536.2,461.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 4000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,423.0 L518.9,423.0 '/> <g transform="translate(536.2,426.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 6000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,388.0 L518.9,388.0 '/> <g transform="translate(536.2,391.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 8000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,353.0 L518.9,353.0 '/> <g transform="translate(536.2,356.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 10000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M527.9,318.0 L518.9,318.0 '/> <g transform="translate(536.2,321.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="start">
<text><tspan font-family="Arial" > 12000</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,318.0 L72.0,528.0 M527.9,528.0 L527.9,318.0 M72.0,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(49.6,423.0) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" >concurrent threads ⟶</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(593.3,423.0) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle">
<text><tspan font-family="Arial" >avg job time ⟶ µs</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g id="gnuplot_plot_1b" ><title>concurrency</title>
<g fill="none" color="white" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(469.1,549.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" >concurrency</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 11, 127, 204)' d='M477.4,546.0 L519.6,546.0 M401.9,528.0 L401.9,323.6 M109.5,528.0 L109.5,363.4 M482.3,528.0 L482.3,324.3
M104.2,528.0 L104.2,350.0 M232.9,528.0 L232.9,328.6 M353.6,528.0 L353.6,327.6 M415.3,528.0 L415.3,327.9
M278.5,528.0 L278.5,332.4 M485.0,528.0 L485.0,330.2 M436.7,528.0 L436.7,328.3 M305.3,528.0 L305.3,336.4
M468.9,528.0 L468.9,327.5 M350.9,528.0 L350.9,330.4 M506.4,528.0 L506.4,321.3 M460.9,528.0 L460.9,329.2
M101.5,528.0 L101.5,343.8 M112.2,528.0 L112.2,348.6 M396.5,528.0 L396.5,328.8 M345.5,528.0 L345.5,329.7
M415.3,528.0 L415.3,325.5 M176.6,528.0 L176.6,355.7 M324.1,528.0 L324.1,332.3 M211.5,528.0 L211.5,341.4
M479.6,528.0 L479.6,323.2 M372.4,528.0 L372.4,327.4 M474.3,528.0 L474.3,330.2 M238.3,528.0 L238.3,356.9
M326.8,528.0 L326.8,326.1 M388.4,528.0 L388.4,326.9 M388.4,528.0 L388.4,328.8 M192.7,528.0 L192.7,340.5
M265.1,528.0 L265.1,334.5 M426.0,528.0 L426.0,328.4 M147.1,528.0 L147.1,346.3 M297.3,528.0 L297.3,330.2
M131.0,528.0 L131.0,337.9 M428.7,528.0 L428.7,326.5 M184.6,528.0 L184.6,339.4 M337.5,528.0 L337.5,329.7
M383.1,528.0 L383.1,328.0 M93.5,528.0 L93.5,353.1 M114.9,528.0 L114.9,339.5 M324.1,528.0 L324.1,331.5
M372.4,528.0 L372.4,325.5 M93.5,528.0 L93.5,348.7 M257.0,528.0 L257.0,335.3 M401.9,528.0 L401.9,324.5
M133.7,528.0 L133.7,344.9 M125.6,528.0 L125.6,347.8 M219.5,528.0 L219.5,341.7 M476.9,528.0 L476.9,323.8
M230.2,528.0 L230.2,332.4 M471.6,528.0 L471.6,325.8 M160.5,528.0 L160.5,342.8 M184.6,528.0 L184.6,339.1
M316.0,528.0 L316.0,330.9 M104.2,528.0 L104.2,337.2 M348.2,528.0 L348.2,328.4 M114.9,528.0 L114.9,338.4
M423.3,528.0 L423.3,328.2 M211.5,528.0 L211.5,344.9 M235.6,528.0 L235.6,338.0 M157.8,528.0 L157.8,345.4
M109.5,528.0 L109.5,344.3 M310.7,528.0 L310.7,331.5 M383.1,528.0 L383.1,326.0 M165.9,528.0 L165.9,341.4
M211.5,528.0 L211.5,337.8 M495.7,528.0 L495.7,325.8 M431.4,528.0 L431.4,324.1 M522.5,528.0 L522.5,325.6
M517.2,528.0 L517.2,326.1 M474.3,528.0 L474.3,327.0 M321.4,528.0 L321.4,336.1 M361.6,528.0 L361.6,329.8
M495.7,528.0 L495.7,321.7 M506.4,528.0 L506.4,328.0 M235.6,528.0 L235.6,333.4 M527.9,528.0 L527.9,330.2
M72.0,528.0 L72.0,360.7 '/></g>
</g>
<g id="gnuplot_plot_2b" ><title>avg jobtime</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(469.1,567.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" >avg jobtime</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<use xlink:href='#gpPt6' transform='translate(401.9,375.7) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(109.5,372.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(482.3,377.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(104.2,369.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(232.9,380.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(353.6,375.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(415.3,377.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(278.5,377.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(485.0,376.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(436.7,377.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(305.3,374.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(468.9,376.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(350.9,376.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(506.4,376.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(460.9,376.5) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(101.5,381.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(112.2,373.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(396.5,375.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(345.5,374.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(415.3,375.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(176.6,374.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(324.1,376.7) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(211.5,368.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(479.6,376.7) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(372.4,375.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(474.3,377.5) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(238.3,374.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(326.8,370.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(388.4,376.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(388.4,373.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(192.7,357.5) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(265.1,356.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(426.0,376.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(147.1,376.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(297.3,379.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(131.0,371.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(428.7,376.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(184.6,380.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(337.5,376.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(383.1,374.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(93.5,369.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(114.9,367.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(324.1,365.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(372.4,353.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(93.5,351.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(257.0,372.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(401.9,373.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(133.7,370.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(125.6,365.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(219.5,368.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(476.9,376.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(230.2,375.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(471.6,374.7) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(160.5,374.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(184.6,374.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(316.0,374.2) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(104.2,363.3) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(348.2,374.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(114.9,374.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(423.3,376.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(211.5,376.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(235.6,374.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(157.8,373.5) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(109.5,361.7) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(310.7,376.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(383.1,377.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(165.9,373.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(211.5,374.6) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(495.7,375.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(431.4,374.5) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(522.5,375.9) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(517.2,376.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(474.3,374.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(321.4,377.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(361.6,374.1) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(495.7,375.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(506.4,375.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(235.6,376.8) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(527.9,377.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(72.0,362.4) scale(4.50)' color='rgb( 36, 130, 105)'/>
<use xlink:href='#gpPt6' transform='translate(498.5,564.0) scale(4.50)' color='rgb( 36, 130, 105)'/>
</g>
</g>
<g id="gnuplot_plot_3b" ><title>avg impeded</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(469.1,585.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end">
<text><tspan font-family="Arial" >avg impeded</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
<use xlink:href='#gpPt5' transform='translate(401.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(109.5,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(482.3,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(104.2,527.2) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(232.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(353.6,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(415.3,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(278.5,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(485.0,527.6) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(436.7,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(305.3,526.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(468.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(350.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(506.4,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(460.9,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(101.5,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(112.2,526.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(396.5,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(345.5,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(415.3,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(176.6,526.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(324.1,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(211.5,527.4) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(479.6,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(372.4,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(474.3,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(238.3,525.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(326.8,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(388.4,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(388.4,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(192.7,527.4) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(265.1,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(426.0,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(147.1,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(297.3,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(131.0,527.6) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(428.7,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(184.6,527.2) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(337.5,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(383.1,527.5) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(93.5,527.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(114.9,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(324.1,527.6) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(372.4,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(93.5,527.5) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(257.0,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(401.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(133.7,527.6) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(125.6,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(219.5,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(476.9,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(230.2,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(471.6,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(160.5,527.5) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(184.6,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(316.0,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(104.2,527.5) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(348.2,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(114.9,527.5) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(423.3,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(211.5,527.1) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(235.6,527.4) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(157.8,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(109.5,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(310.7,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(383.1,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(165.9,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(211.5,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(495.7,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(431.4,527.9) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(522.5,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(517.2,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(474.3,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(321.4,527.7) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(361.6,527.6) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(495.7,528.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(506.4,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(235.6,527.8) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(527.9,527.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(72.0,527.3) scale(4.50)' color='rgb( 0, 196, 67)'/>
<use xlink:href='#gpPt5' transform='translate(498.5,582.0) scale(4.50)' color='rgb( 0, 196, 67)'/>
</g>
</g>
<g id="gnuplot_plot_4b" ><title>gnuplot_plot_4b</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='black' d='M72.0,318.0 L72.0,528.0 M527.9,528.0 L527.9,318.0 M72.0,318.0 '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 78 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 82 KiB

View file

@ -0,0 +1,182 @@
digraph {
// Nodes
N0[label="0: 37", shape=doublecircle ]
N1[label="1: 4F" ]
N2[label="2: 95.2" ]
N3[label="3: 1C" ]
N4[label="4: 0A" ]
N5[label="5: 03" ]
N6[label="6: 7E.1" ]
N7[label="7: B4.2" ]
N8[label="8: BB.2" ]
N9[label="9: 8F.1" ]
N10[label="10: 8F.1" ]
N11[label="11: 4C" ]
N12[label="12: 4C" ]
N13[label="13: 0F" ]
N14[label="14: 0F" ]
N15[label="15: 5A.1" ]
N16[label="16: 5A.1" ]
N17[label="17: 75.1" ]
N18[label="18: 75.1" ]
N19[label="19: AC.2" ]
N20[label="20: AC.2" ]
N21[label="21: 38" ]
N22[label="22: 79.1" ]
N23[label="23: FC.3" ]
N24[label="24: 29" ]
N25[label="25: 29" ]
N26[label="26: 29" ]
N27[label="27: 29" ]
N28[label="28: 29" ]
N29[label="29: A3.2" ]
N30[label="30: A3.2" ]
N31[label="31: A3.2" ]
N32[label="32: A3.2" ]
N33[label="33: A3.2" ]
N34[label="34: D8.3" ]
N35[label="35: B0.2" ]
N36[label="36: 64.1" ]
N37[label="37: 64.1" ]
N38[label="38: E8.3" ]
N39[label="39: CE.3" ]
N40[label="40: CE.3" ]
N41[label="41: 2B" ]
N42[label="42: 2B" ]
N43[label="43: 2B" ]
N44[label="44: 2B" ]
N45[label="45: 27" ]
N46[label="46: 27" ]
N47[label="47: F3.3" ]
N48[label="48: 27" ]
N49[label="49: 27" ]
N50[label="50: EB.3" ]
N51[label="51: E9.3" ]
N52[label="52: E9.3" ]
N53[label="53: 49" ]
N54[label="54: 49" ]
N55[label="55: 49" ]
N56[label="56: 49" ]
N57[label="57: CB.3" ]
N58[label="58: 3A" ]
N59[label="59: 3A" ]
N60[label="60: 3A" ]
N61[label="61: BC.2", shape=box, style=rounded ]
N62[label="62: BC.2", shape=box, style=rounded ]
N63[label="63: 4B", shape=box, style=rounded ]
// Layers
{ /*0*/ rank=min N0 }
{ /*1*/ rank=same N1 }
{ /*2*/ rank=same N2 }
{ /*3*/ rank=same N3 }
{ /*4*/ rank=same N4 }
{ /*5*/ rank=same N5 }
{ /*6*/ rank=same N6 }
{ /*7*/ rank=same N7 }
{ /*8*/ rank=same N8 }
{ /*9*/ rank=same N9 N10 }
{ /*10*/ rank=same N11 N12 }
{ /*11*/ rank=same N13 N14 }
{ /*12*/ rank=same N15 N16 }
{ /*13*/ rank=same N17 N18 }
{ /*14*/ rank=same N19 N20 }
{ /*15*/ rank=same N21 }
{ /*16*/ rank=same N22 }
{ /*17*/ rank=same N23 }
{ /*18*/ rank=same N24 N25 N26 N27 N28 }
{ /*19*/ rank=same N29 N30 N31 N32 N33 }
{ /*20*/ rank=same N34 N35 }
{ /*21*/ rank=same N36 N37 N38 }
{ /*22*/ rank=same N39 N40 N41 N42 N43 N44 }
{ /*23*/ rank=same N45 N46 N47 N48 N49 N50 }
{ /*24*/ rank=same N51 N52 N53 N54 N55 N56 N57 N58 N59 N60 }
{ /*25*/ rank=same N61 N62 N63 }
// Topology
N0 -> N1
N1 -> N2
N2 -> N3
N3 -> N4
N4 -> N5
N5 -> N6
N6 -> N7
N7 -> N8
N8 -> N9
N8 -> N10
N9 -> N11
N10 -> N12
N11 -> N13
N12 -> N14
N13 -> N15
N14 -> N16
N15 -> N17
N16 -> N18
N17 -> N19
N18 -> N20
N19 -> N21
N20 -> N21
N21 -> N22
N22 -> N23
N23 -> N24
N23 -> N25
N23 -> N26
N23 -> N27
N23 -> N28
N24 -> N29
N25 -> N30
N26 -> N31
N27 -> N32
N28 -> N33
N29 -> N34
N30 -> N34
N31 -> N34
N32 -> N35
N33 -> N35
N34 -> N36
N34 -> N37
N34 -> N38
N35 -> N38
N36 -> N39
N37 -> N40
N38 -> N41
N38 -> N42
N38 -> N43
N38 -> N44
N39 -> N45
N39 -> N46
N39 -> N47
N40 -> N48
N40 -> N49
N40 -> N47
N41 -> N47
N42 -> N47
N43 -> N47
N44 -> N50
N45 -> N51
N46 -> N52
N47 -> N53
N47 -> N54
N47 -> N55
N47 -> N56
N47 -> N57
N48 -> N57
N49 -> N57
N50 -> N58
N50 -> N59
N50 -> N60
N50 -> N57
N51 -> N61
N51 -> N62
N51 -> N63
N52 -> N63
N53 -> N63
N54 -> N63
N55 -> N63
N56 -> N63
N57 -> N63
N58 -> N63
N59 -> N63
N60 -> N63
}

View file

@ -0,0 +1,902 @@
<?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.40.1 (20161225.0304)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="372pt" height="648pt"
viewBox="0.00 0.00 371.80 648.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(.3401 .3401) rotate(0) translate(4 1901.1799)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1901.1799 1089.1335,-1901.1799 1089.1335,4 -4,4"/>
<!-- N0 -->
<g id="node1" class="node">
<title>N0</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1857.8246" rx="35.2259" ry="35.2259"/>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1857.8246" rx="39.2112" ry="39.2112"/>
<text text-anchor="middle" x="459" y="-1854.0246" font-family="Times,serif" font-size="16.00" fill="#000000">0: 37</text>
</g>
<!-- N1 -->
<g id="node2" class="node">
<title>N1</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1764.0845" rx="35.2113" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1760.2845" font-family="Times,serif" font-size="16.00" fill="#000000">1: 4F</text>
</g>
<!-- N0&#45;&gt;N1 -->
<g id="edge1" class="edge">
<title>N0&#45;&gt;N1</title>
<path fill="none" stroke="#000000" d="M459,-1818.342C459,-1809.7139 459,-1800.7432 459,-1792.6393"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1792.587 459,-1782.587 455.5001,-1792.5871 462.5001,-1792.587"/>
</g>
<!-- N2 -->
<g id="node3" class="node">
<title>N2</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1691.3149" rx="43.6818" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1687.5149" font-family="Times,serif" font-size="16.00" fill="#000000">2: 95.2</text>
</g>
<!-- N1&#45;&gt;N2 -->
<g id="edge2" class="edge">
<title>N1&#45;&gt;N2</title>
<path fill="none" stroke="#000000" d="M459,-1745.3445C459,-1737.5605 459,-1728.3548 459,-1719.7685"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1719.7394 459,-1709.7395 455.5001,-1719.7395 462.5001,-1719.7394"/>
</g>
<!-- N3 -->
<g id="node4" class="node">
<title>N3</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1618.5454" rx="36.5405" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1614.7454" font-family="Times,serif" font-size="16.00" fill="#000000">3: 1C</text>
</g>
<!-- N2&#45;&gt;N3 -->
<g id="edge3" class="edge">
<title>N2&#45;&gt;N3</title>
<path fill="none" stroke="#000000" d="M459,-1672.575C459,-1664.7909 459,-1655.5852 459,-1646.9989"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1646.9699 459,-1636.9699 455.5001,-1646.97 462.5001,-1646.9699"/>
</g>
<!-- N4 -->
<g id="node5" class="node">
<title>N4</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1545.7758" rx="37.4533" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1541.9758" font-family="Times,serif" font-size="16.00" fill="#000000">4: 0A</text>
</g>
<!-- N3&#45;&gt;N4 -->
<g id="edge4" class="edge">
<title>N3&#45;&gt;N4</title>
<path fill="none" stroke="#000000" d="M459,-1599.8054C459,-1592.0214 459,-1582.8157 459,-1574.2294"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1574.2003 459,-1564.2004 455.5001,-1574.2004 462.5001,-1574.2003"/>
</g>
<!-- N5 -->
<g id="node6" class="node">
<title>N5</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1473.0063" rx="35.2113" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1469.2063" font-family="Times,serif" font-size="16.00" fill="#000000">5: 03</text>
</g>
<!-- N4&#45;&gt;N5 -->
<g id="edge5" class="edge">
<title>N4&#45;&gt;N5</title>
<path fill="none" stroke="#000000" d="M459,-1527.0359C459,-1519.2518 459,-1510.0461 459,-1501.4598"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1501.4308 459,-1491.4308 455.5001,-1501.4309 462.5001,-1501.4308"/>
</g>
<!-- N6 -->
<g id="node7" class="node">
<title>N6</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1400.2367" rx="44.5955" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1396.4367" font-family="Times,serif" font-size="16.00" fill="#000000">6: 7E.1</text>
</g>
<!-- N5&#45;&gt;N6 -->
<g id="edge6" class="edge">
<title>N5&#45;&gt;N6</title>
<path fill="none" stroke="#000000" d="M459,-1454.2663C459,-1446.4823 459,-1437.2766 459,-1428.6903"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1428.6612 459,-1418.6613 455.5001,-1428.6613 462.5001,-1428.6612"/>
</g>
<!-- N7 -->
<g id="node8" class="node">
<title>N7</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1327.4672" rx="45.011" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1323.6672" font-family="Times,serif" font-size="16.00" fill="#000000">7: B4.2</text>
</g>
<!-- N6&#45;&gt;N7 -->
<g id="edge7" class="edge">
<title>N6&#45;&gt;N7</title>
<path fill="none" stroke="#000000" d="M459,-1381.4968C459,-1373.7127 459,-1364.507 459,-1355.9207"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1355.8917 459,-1345.8917 455.5001,-1355.8918 462.5001,-1355.8917"/>
</g>
<!-- N8 -->
<g id="node9" class="node">
<title>N8</title>
<ellipse fill="none" stroke="#000000" cx="459" cy="-1254.6976" rx="46.8387" ry="18.2703"/>
<text text-anchor="middle" x="459" y="-1250.8976" font-family="Times,serif" font-size="16.00" fill="#000000">8: BB.2</text>
</g>
<!-- N7&#45;&gt;N8 -->
<g id="edge8" class="edge">
<title>N7&#45;&gt;N8</title>
<path fill="none" stroke="#000000" d="M459,-1308.7272C459,-1300.9432 459,-1291.7375 459,-1283.1512"/>
<polygon fill="#000000" stroke="#000000" points="462.5001,-1283.1221 459,-1273.1222 455.5001,-1283.1222 462.5001,-1283.1221"/>
</g>
<!-- N9 -->
<g id="node10" class="node">
<title>N9</title>
<ellipse fill="none" stroke="#000000" cx="403" cy="-1181.9281" rx="43.6818" ry="18.2703"/>
<text text-anchor="middle" x="403" y="-1178.1281" font-family="Times,serif" font-size="16.00" fill="#000000">9: 8F.1</text>
</g>
<!-- N8&#45;&gt;N9 -->
<g id="edge9" class="edge">
<title>N8&#45;&gt;N9</title>
<path fill="none" stroke="#000000" d="M445.444,-1237.0821C438.6842,-1228.2982 430.3778,-1217.5044 422.911,-1207.8015"/>
<polygon fill="#000000" stroke="#000000" points="425.4978,-1205.424 416.6253,-1199.6335 419.9503,-1209.6931 425.4978,-1205.424"/>
</g>
<!-- N10 -->
<g id="node11" class="node">
<title>N10</title>
<ellipse fill="none" stroke="#000000" cx="516" cy="-1181.9281" rx="50.41" ry="18.2703"/>
<text text-anchor="middle" x="516" y="-1178.1281" font-family="Times,serif" font-size="16.00" fill="#000000">10: 8F.1</text>
</g>
<!-- N8&#45;&gt;N10 -->
<g id="edge10" class="edge">
<title>N8&#45;&gt;N10</title>
<path fill="none" stroke="#000000" d="M472.7981,-1237.0821C479.7481,-1228.2094 488.3042,-1217.2861 495.9635,-1207.5078"/>
<polygon fill="#000000" stroke="#000000" points="498.7203,-1209.6643 502.1314,-1199.6335 493.2096,-1205.3477 498.7203,-1209.6643"/>
</g>
<!-- N11 -->
<g id="node12" class="node">
<title>N11</title>
<ellipse fill="none" stroke="#000000" cx="402" cy="-1109.1585" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="402" y="-1105.3585" font-family="Times,serif" font-size="16.00" fill="#000000">11: 4C</text>
</g>
<!-- N9&#45;&gt;N11 -->
<g id="edge11" class="edge">
<title>N9&#45;&gt;N11</title>
<path fill="none" stroke="#000000" d="M402.7425,-1163.1881C402.6355,-1155.404 402.509,-1146.1984 402.391,-1137.6121"/>
<polygon fill="#000000" stroke="#000000" points="405.8904,-1137.534 402.2532,-1127.5831 398.891,-1137.6302 405.8904,-1137.534"/>
</g>
<!-- N12 -->
<g id="node13" class="node">
<title>N12</title>
<ellipse fill="none" stroke="#000000" cx="516" cy="-1109.1585" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="516" y="-1105.3585" font-family="Times,serif" font-size="16.00" fill="#000000">12: 4C</text>
</g>
<!-- N10&#45;&gt;N12 -->
<g id="edge12" class="edge">
<title>N10&#45;&gt;N12</title>
<path fill="none" stroke="#000000" d="M516,-1163.1881C516,-1155.404 516,-1146.1984 516,-1137.6121"/>
<polygon fill="#000000" stroke="#000000" points="519.5001,-1137.583 516,-1127.5831 512.5001,-1137.5831 519.5001,-1137.583"/>
</g>
<!-- N13 -->
<g id="node14" class="node">
<title>N13</title>
<ellipse fill="none" stroke="#000000" cx="400" cy="-1036.389" rx="41.9398" ry="18.2703"/>
<text text-anchor="middle" x="400" y="-1032.589" font-family="Times,serif" font-size="16.00" fill="#000000">13: 0F</text>
</g>
<!-- N11&#45;&gt;N13 -->
<g id="edge13" class="edge">
<title>N11&#45;&gt;N13</title>
<path fill="none" stroke="#000000" d="M401.485,-1090.4185C401.271,-1082.6345 401.018,-1073.4288 400.782,-1064.8425"/>
<polygon fill="#000000" stroke="#000000" points="404.2799,-1064.7135 400.5064,-1054.8135 397.2825,-1064.9059 404.2799,-1064.7135"/>
</g>
<!-- N14 -->
<g id="node15" class="node">
<title>N14</title>
<ellipse fill="none" stroke="#000000" cx="516" cy="-1036.389" rx="41.9398" ry="18.2703"/>
<text text-anchor="middle" x="516" y="-1032.589" font-family="Times,serif" font-size="16.00" fill="#000000">14: 0F</text>
</g>
<!-- N12&#45;&gt;N14 -->
<g id="edge14" class="edge">
<title>N12&#45;&gt;N14</title>
<path fill="none" stroke="#000000" d="M516,-1090.4185C516,-1082.6345 516,-1073.4288 516,-1064.8425"/>
<polygon fill="#000000" stroke="#000000" points="519.5001,-1064.8135 516,-1054.8135 512.5001,-1064.8135 519.5001,-1064.8135"/>
</g>
<!-- N15 -->
<g id="node16" class="node">
<title>N15</title>
<ellipse fill="none" stroke="#000000" cx="396" cy="-963.6194" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="396" y="-959.8194" font-family="Times,serif" font-size="16.00" fill="#000000">15: 5A.1</text>
</g>
<!-- N13&#45;&gt;N15 -->
<g id="edge15" class="edge">
<title>N13&#45;&gt;N15</title>
<path fill="none" stroke="#000000" d="M398.9699,-1017.649C398.542,-1009.8649 398.036,-1000.6592 397.564,-992.073"/>
<polygon fill="#000000" stroke="#000000" points="401.0564,-991.8368 397.0128,-982.044 394.067,-992.221 401.0564,-991.8368"/>
</g>
<!-- N16 -->
<g id="node17" class="node">
<title>N16</title>
<ellipse fill="none" stroke="#000000" cx="517" cy="-963.6194" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="517" y="-959.8194" font-family="Times,serif" font-size="16.00" fill="#000000">16: 5A.1</text>
</g>
<!-- N14&#45;&gt;N16 -->
<g id="edge16" class="edge">
<title>N14&#45;&gt;N16</title>
<path fill="none" stroke="#000000" d="M516.2575,-1017.649C516.3645,-1009.8649 516.491,-1000.6592 516.609,-992.073"/>
<polygon fill="#000000" stroke="#000000" points="520.109,-992.0911 516.7468,-982.044 513.1096,-991.9949 520.109,-992.0911"/>
</g>
<!-- N17 -->
<g id="node18" class="node">
<title>N17</title>
<ellipse fill="none" stroke="#000000" cx="395" cy="-890.8499" rx="49.4949" ry="18.2703"/>
<text text-anchor="middle" x="395" y="-887.0499" font-family="Times,serif" font-size="16.00" fill="#000000">17: 75.1</text>
</g>
<!-- N15&#45;&gt;N17 -->
<g id="edge17" class="edge">
<title>N15&#45;&gt;N17</title>
<path fill="none" stroke="#000000" d="M395.7425,-944.8794C395.6355,-937.0954 395.509,-927.8897 395.391,-919.3034"/>
<polygon fill="#000000" stroke="#000000" points="398.8904,-919.2253 395.2532,-909.2744 391.891,-919.3216 398.8904,-919.2253"/>
</g>
<!-- N18 -->
<g id="node19" class="node">
<title>N18</title>
<ellipse fill="none" stroke="#000000" cx="517" cy="-890.8499" rx="49.4949" ry="18.2703"/>
<text text-anchor="middle" x="517" y="-887.0499" font-family="Times,serif" font-size="16.00" fill="#000000">18: 75.1</text>
</g>
<!-- N16&#45;&gt;N18 -->
<g id="edge18" class="edge">
<title>N16&#45;&gt;N18</title>
<path fill="none" stroke="#000000" d="M517,-944.8794C517,-937.0954 517,-927.8897 517,-919.3034"/>
<polygon fill="#000000" stroke="#000000" points="520.5001,-919.2744 517,-909.2744 513.5001,-919.2744 520.5001,-919.2744"/>
</g>
<!-- N19 -->
<g id="node20" class="node">
<title>N19</title>
<ellipse fill="none" stroke="#000000" cx="394" cy="-818.0803" rx="53.066" ry="18.2703"/>
<text text-anchor="middle" x="394" y="-814.2803" font-family="Times,serif" font-size="16.00" fill="#000000">19: AC.2</text>
</g>
<!-- N17&#45;&gt;N19 -->
<g id="edge19" class="edge">
<title>N17&#45;&gt;N19</title>
<path fill="none" stroke="#000000" d="M394.7425,-872.1099C394.6355,-864.3258 394.509,-855.1201 394.391,-846.5338"/>
<polygon fill="#000000" stroke="#000000" points="397.8904,-846.4558 394.2532,-836.5049 390.891,-846.552 397.8904,-846.4558"/>
</g>
<!-- N20 -->
<g id="node21" class="node">
<title>N20</title>
<ellipse fill="none" stroke="#000000" cx="518" cy="-818.0803" rx="53.066" ry="18.2703"/>
<text text-anchor="middle" x="518" y="-814.2803" font-family="Times,serif" font-size="16.00" fill="#000000">20: AC.2</text>
</g>
<!-- N18&#45;&gt;N20 -->
<g id="edge20" class="edge">
<title>N18&#45;&gt;N20</title>
<path fill="none" stroke="#000000" d="M517.2575,-872.1099C517.3645,-864.3258 517.491,-855.1201 517.609,-846.5338"/>
<polygon fill="#000000" stroke="#000000" points="521.109,-846.552 517.7468,-836.5049 514.1096,-846.4558 521.109,-846.552"/>
</g>
<!-- N21 -->
<g id="node22" class="node">
<title>N21</title>
<ellipse fill="none" stroke="#000000" cx="456" cy="-745.3107" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="456" y="-741.5107" font-family="Times,serif" font-size="16.00" fill="#000000">21: 38</text>
</g>
<!-- N19&#45;&gt;N21 -->
<g id="edge21" class="edge">
<title>N19&#45;&gt;N21</title>
<path fill="none" stroke="#000000" d="M409.3258,-800.0923C416.946,-791.1486 426.2807,-780.1923 434.5943,-770.4347"/>
<polygon fill="#000000" stroke="#000000" points="437.4562,-772.4725 441.2774,-762.5907 432.1279,-767.9327 437.4562,-772.4725"/>
</g>
<!-- N20&#45;&gt;N21 -->
<g id="edge22" class="edge">
<title>N20&#45;&gt;N21</title>
<path fill="none" stroke="#000000" d="M502.6742,-800.0923C495.054,-791.1486 485.7193,-780.1923 477.4057,-770.4347"/>
<polygon fill="#000000" stroke="#000000" points="479.8721,-767.9327 470.7226,-762.5907 474.5438,-772.4725 479.8721,-767.9327"/>
</g>
<!-- N22 -->
<g id="node23" class="node">
<title>N22</title>
<ellipse fill="none" stroke="#000000" cx="456" cy="-672.5412" rx="49.4949" ry="18.2703"/>
<text text-anchor="middle" x="456" y="-668.7412" font-family="Times,serif" font-size="16.00" fill="#000000">22: 79.1</text>
</g>
<!-- N21&#45;&gt;N22 -->
<g id="edge23" class="edge">
<title>N21&#45;&gt;N22</title>
<path fill="none" stroke="#000000" d="M456,-726.5708C456,-718.7867 456,-709.581 456,-700.9947"/>
<polygon fill="#000000" stroke="#000000" points="459.5001,-700.9657 456,-690.9657 452.5001,-700.9658 459.5001,-700.9657"/>
</g>
<!-- N23 -->
<g id="node24" class="node">
<title>N23</title>
<ellipse fill="none" stroke="#000000" cx="456" cy="-599.7716" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="456" y="-595.9716" font-family="Times,serif" font-size="16.00" fill="#000000">23: FC.3</text>
</g>
<!-- N22&#45;&gt;N23 -->
<g id="edge24" class="edge">
<title>N22&#45;&gt;N23</title>
<path fill="none" stroke="#000000" d="M456,-653.8012C456,-646.0172 456,-636.8115 456,-628.2252"/>
<polygon fill="#000000" stroke="#000000" points="459.5001,-628.1962 456,-618.1962 452.5001,-628.1962 459.5001,-628.1962"/>
</g>
<!-- N24 -->
<g id="node25" class="node">
<title>N24</title>
<ellipse fill="none" stroke="#000000" cx="235" cy="-527.0021" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="235" y="-523.2021" font-family="Times,serif" font-size="16.00" fill="#000000">24: 29</text>
</g>
<!-- N23&#45;&gt;N24 -->
<g id="edge25" class="edge">
<title>N23&#45;&gt;N24</title>
<path fill="none" stroke="#000000" d="M418.0087,-587.2621C379.0167,-574.423 318.4584,-554.4828 277.7984,-541.0945"/>
<polygon fill="#000000" stroke="#000000" points="278.763,-537.7273 268.17,-537.9241 276.5737,-544.3761 278.763,-537.7273"/>
</g>
<!-- N25 -->
<g id="node26" class="node">
<title>N25</title>
<ellipse fill="none" stroke="#000000" cx="345" cy="-527.0021" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="345" y="-523.2021" font-family="Times,serif" font-size="16.00" fill="#000000">25: 29</text>
</g>
<!-- N23&#45;&gt;N25 -->
<g id="edge26" class="edge">
<title>N23&#45;&gt;N25</title>
<path fill="none" stroke="#000000" d="M431.0894,-583.4407C415.0867,-572.9497 394.1498,-559.2238 376.9304,-547.9351"/>
<polygon fill="#000000" stroke="#000000" points="378.5925,-544.8396 368.3105,-542.284 374.7546,-550.6938 378.5925,-544.8396"/>
</g>
<!-- N26 -->
<g id="node27" class="node">
<title>N26</title>
<ellipse fill="none" stroke="#000000" cx="456" cy="-527.0021" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="456" y="-523.2021" font-family="Times,serif" font-size="16.00" fill="#000000">26: 29</text>
</g>
<!-- N23&#45;&gt;N26 -->
<g id="edge27" class="edge">
<title>N23&#45;&gt;N26</title>
<path fill="none" stroke="#000000" d="M456,-581.0317C456,-573.2476 456,-564.0419 456,-555.4556"/>
<polygon fill="#000000" stroke="#000000" points="459.5001,-555.4266 456,-545.4266 452.5001,-555.4267 459.5001,-555.4266"/>
</g>
<!-- N27 -->
<g id="node28" class="node">
<title>N27</title>
<ellipse fill="none" stroke="#000000" cx="566" cy="-527.0021" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="566" y="-523.2021" font-family="Times,serif" font-size="16.00" fill="#000000">27: 29</text>
</g>
<!-- N23&#45;&gt;N27 -->
<g id="edge28" class="edge">
<title>N23&#45;&gt;N27</title>
<path fill="none" stroke="#000000" d="M480.6861,-583.4407C496.5447,-572.9497 517.293,-559.2238 534.3573,-547.9351"/>
<polygon fill="#000000" stroke="#000000" points="536.4904,-550.7205 542.8995,-542.284 532.6283,-544.8823 536.4904,-550.7205"/>
</g>
<!-- N28 -->
<g id="node29" class="node">
<title>N28</title>
<ellipse fill="none" stroke="#000000" cx="682" cy="-527.0021" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="682" y="-523.2021" font-family="Times,serif" font-size="16.00" fill="#000000">28: 29</text>
</g>
<!-- N23&#45;&gt;N28 -->
<g id="edge29" class="edge">
<title>N23&#45;&gt;N28</title>
<path fill="none" stroke="#000000" d="M494.3378,-587.4273C534.4442,-574.5135 597.2632,-554.2864 639.0229,-540.8403"/>
<polygon fill="#000000" stroke="#000000" points="640.1917,-544.1409 648.6377,-537.7444 638.0462,-537.4778 640.1917,-544.1409"/>
</g>
<!-- N29 -->
<g id="node30" class="node">
<title>N29</title>
<ellipse fill="none" stroke="#000000" cx="214" cy="-454.2325" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="214" y="-450.4325" font-family="Times,serif" font-size="16.00" fill="#000000">29: A3.2</text>
</g>
<!-- N24&#45;&gt;N29 -->
<g id="edge30" class="edge">
<title>N24&#45;&gt;N29</title>
<path fill="none" stroke="#000000" d="M229.7008,-508.6393C227.4127,-500.7105 224.6838,-491.2542 222.1479,-482.4666"/>
<polygon fill="#000000" stroke="#000000" points="225.433,-481.227 219.2975,-472.5895 218.7075,-483.1679 225.433,-481.227"/>
</g>
<!-- N30 -->
<g id="node31" class="node">
<title>N30</title>
<ellipse fill="none" stroke="#000000" cx="335" cy="-454.2325" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="335" y="-450.4325" font-family="Times,serif" font-size="16.00" fill="#000000">30: A3.2</text>
</g>
<!-- N25&#45;&gt;N30 -->
<g id="edge31" class="edge">
<title>N25&#45;&gt;N30</title>
<path fill="none" stroke="#000000" d="M342.4766,-508.6393C341.4071,-500.8566 340.1353,-491.6021 338.9468,-482.9529"/>
<polygon fill="#000000" stroke="#000000" points="342.3863,-482.273 337.5574,-472.8426 335.4515,-483.226 342.3863,-482.273"/>
</g>
<!-- N31 -->
<g id="node32" class="node">
<title>N31</title>
<ellipse fill="none" stroke="#000000" cx="456" cy="-454.2325" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="456" y="-450.4325" font-family="Times,serif" font-size="16.00" fill="#000000">31: A3.2</text>
</g>
<!-- N26&#45;&gt;N31 -->
<g id="edge32" class="edge">
<title>N26&#45;&gt;N31</title>
<path fill="none" stroke="#000000" d="M456,-508.2621C456,-500.4781 456,-491.2724 456,-482.6861"/>
<polygon fill="#000000" stroke="#000000" points="459.5001,-482.6571 456,-472.6571 452.5001,-482.6571 459.5001,-482.6571"/>
</g>
<!-- N32 -->
<g id="node33" class="node">
<title>N32</title>
<ellipse fill="none" stroke="#000000" cx="577" cy="-454.2325" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="577" y="-450.4325" font-family="Times,serif" font-size="16.00" fill="#000000">32: A3.2</text>
</g>
<!-- N27&#45;&gt;N32 -->
<g id="edge33" class="edge">
<title>N27&#45;&gt;N32</title>
<path fill="none" stroke="#000000" d="M568.7758,-508.6393C569.9522,-500.8566 571.3511,-491.6021 572.6586,-482.9529"/>
<polygon fill="#000000" stroke="#000000" points="576.1528,-483.2534 574.1869,-472.8426 569.2315,-482.2071 576.1528,-483.2534"/>
</g>
<!-- N33 -->
<g id="node34" class="node">
<title>N33</title>
<ellipse fill="none" stroke="#000000" cx="698" cy="-454.2325" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="698" y="-450.4325" font-family="Times,serif" font-size="16.00" fill="#000000">33: A3.2</text>
</g>
<!-- N28&#45;&gt;N33 -->
<g id="edge34" class="edge">
<title>N28&#45;&gt;N33</title>
<path fill="none" stroke="#000000" d="M686.0375,-508.6393C687.7808,-500.7105 689.86,-491.2542 691.7921,-482.4666"/>
<polygon fill="#000000" stroke="#000000" points="695.2347,-483.1078 693.9638,-472.5895 688.398,-481.6046 695.2347,-483.1078"/>
</g>
<!-- N34 -->
<g id="node35" class="node">
<title>N34</title>
<ellipse fill="none" stroke="#000000" cx="396" cy="-381.463" rx="51.7379" ry="18.2703"/>
<text text-anchor="middle" x="396" y="-377.663" font-family="Times,serif" font-size="16.00" fill="#000000">34: D8.3</text>
</g>
<!-- N29&#45;&gt;N34 -->
<g id="edge35" class="edge">
<title>N29&#45;&gt;N34</title>
<path fill="none" stroke="#000000" d="M248.6612,-440.3739C278.0098,-428.6393 320.248,-411.7511 351.9824,-399.0627"/>
<polygon fill="#000000" stroke="#000000" points="353.482,-402.2326 361.4678,-395.2701 350.8831,-395.7328 353.482,-402.2326"/>
</g>
<!-- N30&#45;&gt;N34 -->
<g id="edge36" class="edge">
<title>N30&#45;&gt;N34</title>
<path fill="none" stroke="#000000" d="M350.0787,-436.2446C357.4656,-427.4323 366.4903,-416.6664 374.578,-407.0182"/>
<polygon fill="#000000" stroke="#000000" points="377.3529,-409.1561 381.0948,-399.2441 371.9884,-404.6592 377.3529,-409.1561"/>
</g>
<!-- N31&#45;&gt;N34 -->
<g id="edge37" class="edge">
<title>N31&#45;&gt;N34</title>
<path fill="none" stroke="#000000" d="M441.1685,-436.2446C433.9027,-427.4323 425.0259,-416.6664 417.0708,-407.0182"/>
<polygon fill="#000000" stroke="#000000" points="419.723,-404.733 410.6609,-399.2441 414.3221,-409.1862 419.723,-404.733"/>
</g>
<!-- N35 -->
<g id="node36" class="node">
<title>N35</title>
<ellipse fill="none" stroke="#000000" cx="577" cy="-381.463" rx="50.8235" ry="18.2703"/>
<text text-anchor="middle" x="577" y="-377.663" font-family="Times,serif" font-size="16.00" fill="#000000">35: B0.2</text>
</g>
<!-- N32&#45;&gt;N35 -->
<g id="edge38" class="edge">
<title>N32&#45;&gt;N35</title>
<path fill="none" stroke="#000000" d="M577,-435.4926C577,-427.7085 577,-418.5028 577,-409.9165"/>
<polygon fill="#000000" stroke="#000000" points="580.5001,-409.8875 577,-399.8875 573.5001,-409.8876 580.5001,-409.8875"/>
</g>
<!-- N33&#45;&gt;N35 -->
<g id="edge39" class="edge">
<title>N33&#45;&gt;N35</title>
<path fill="none" stroke="#000000" d="M671.446,-438.263C654.0298,-427.7888 631.0645,-413.9774 612.1407,-402.5967"/>
<polygon fill="#000000" stroke="#000000" points="613.8655,-399.5498 603.492,-397.3953 610.2578,-405.5485 613.8655,-399.5498"/>
</g>
<!-- N36 -->
<g id="node37" class="node">
<title>N36</title>
<ellipse fill="none" stroke="#000000" cx="337" cy="-308.6934" rx="49.4949" ry="18.2703"/>
<text text-anchor="middle" x="337" y="-304.8934" font-family="Times,serif" font-size="16.00" fill="#000000">36: 64.1</text>
</g>
<!-- N34&#45;&gt;N36 -->
<g id="edge40" class="edge">
<title>N34&#45;&gt;N36</title>
<path fill="none" stroke="#000000" d="M381.4157,-363.475C374.271,-354.6628 365.5421,-343.8968 357.7196,-334.2486"/>
<polygon fill="#000000" stroke="#000000" points="360.4331,-332.0379 351.4165,-326.4745 354.9957,-336.4465 360.4331,-332.0379"/>
</g>
<!-- N37 -->
<g id="node38" class="node">
<title>N37</title>
<ellipse fill="none" stroke="#000000" cx="653" cy="-308.6934" rx="49.4949" ry="18.2703"/>
<text text-anchor="middle" x="653" y="-304.8934" font-family="Times,serif" font-size="16.00" fill="#000000">37: 64.1</text>
</g>
<!-- N34&#45;&gt;N37 -->
<g id="edge41" class="edge">
<title>N34&#45;&gt;N37</title>
<path fill="none" stroke="#000000" d="M436.439,-370.0127C481.6671,-357.2063 554.9391,-336.4594 603.5423,-322.6974"/>
<polygon fill="#000000" stroke="#000000" points="604.551,-326.0494 613.2192,-319.9574 602.6439,-319.3142 604.551,-326.0494"/>
</g>
<!-- N38 -->
<g id="node39" class="node">
<title>N38</title>
<ellipse fill="none" stroke="#000000" cx="486" cy="-308.6934" rx="50.41" ry="18.2703"/>
<text text-anchor="middle" x="486" y="-304.8934" font-family="Times,serif" font-size="16.00" fill="#000000">38: E8.3</text>
</g>
<!-- N34&#45;&gt;N38 -->
<g id="edge42" class="edge">
<title>N34&#45;&gt;N38</title>
<path fill="none" stroke="#000000" d="M416.874,-364.5853C428.9147,-354.8498 444.2272,-342.4688 457.3785,-331.8354"/>
<polygon fill="#000000" stroke="#000000" points="459.6636,-334.4887 465.2392,-325.4796 455.2624,-329.0454 459.6636,-334.4887"/>
</g>
<!-- N35&#45;&gt;N38 -->
<g id="edge43" class="edge">
<title>N35&#45;&gt;N38</title>
<path fill="none" stroke="#000000" d="M555.894,-364.5853C543.7196,-354.8498 528.2369,-342.4688 514.9395,-331.8354"/>
<polygon fill="#000000" stroke="#000000" points="516.9874,-328.9915 506.9915,-325.4796 512.6156,-334.4585 516.9874,-328.9915"/>
</g>
<!-- N39 -->
<g id="node40" class="node">
<title>N39</title>
<ellipse fill="none" stroke="#000000" cx="224" cy="-235.9239" rx="52.1524" ry="18.2703"/>
<text text-anchor="middle" x="224" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">39: CE.3</text>
</g>
<!-- N36&#45;&gt;N39 -->
<g id="edge44" class="edge">
<title>N36&#45;&gt;N39</title>
<path fill="none" stroke="#000000" d="M312.2017,-292.7238C296.2684,-282.4631 275.3619,-268.9998 257.9024,-257.7563"/>
<polygon fill="#000000" stroke="#000000" points="259.4335,-254.5793 249.131,-252.1077 255.6435,-260.4646 259.4335,-254.5793"/>
</g>
<!-- N40 -->
<g id="node41" class="node">
<title>N40</title>
<ellipse fill="none" stroke="#000000" cx="678" cy="-235.9239" rx="52.1524" ry="18.2703"/>
<text text-anchor="middle" x="678" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">40: CE.3</text>
</g>
<!-- N37&#45;&gt;N40 -->
<g id="edge45" class="edge">
<title>N37&#45;&gt;N40</title>
<path fill="none" stroke="#000000" d="M659.3086,-290.3306C662.0621,-282.3157 665.3519,-272.7398 668.3985,-263.8717"/>
<polygon fill="#000000" stroke="#000000" points="671.7544,-264.8755 671.6935,-254.2808 665.1342,-262.6011 671.7544,-264.8755"/>
</g>
<!-- N41 -->
<g id="node42" class="node">
<title>N41</title>
<ellipse fill="none" stroke="#000000" cx="359" cy="-235.9239" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="359" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">41: 2B</text>
</g>
<!-- N38&#45;&gt;N41 -->
<g id="edge46" class="edge">
<title>N38&#45;&gt;N41</title>
<path fill="none" stroke="#000000" d="M458.7553,-293.0825C439.7086,-282.169 414.1173,-267.5055 393.6241,-255.7631"/>
<polygon fill="#000000" stroke="#000000" points="395.3156,-252.6985 384.8989,-250.7637 391.8355,-258.7721 395.3156,-252.6985"/>
</g>
<!-- N42 -->
<g id="node43" class="node">
<title>N42</title>
<ellipse fill="none" stroke="#000000" cx="462" cy="-235.9239" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="462" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">42: 2B</text>
</g>
<!-- N38&#45;&gt;N42 -->
<g id="edge47" class="edge">
<title>N38&#45;&gt;N42</title>
<path fill="none" stroke="#000000" d="M479.9438,-290.3306C477.3004,-282.3157 474.1422,-272.7398 471.2174,-263.8717"/>
<polygon fill="#000000" stroke="#000000" points="474.5104,-262.6814 468.0543,-254.2808 467.8626,-264.8739 474.5104,-262.6814"/>
</g>
<!-- N43 -->
<g id="node44" class="node">
<title>N43</title>
<ellipse fill="none" stroke="#000000" cx="565" cy="-235.9239" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="565" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">43: 2B</text>
</g>
<!-- N38&#45;&gt;N43 -->
<g id="edge48" class="edge">
<title>N38&#45;&gt;N43</title>
<path fill="none" stroke="#000000" d="M504.7219,-291.4481C515.028,-281.9547 527.9724,-270.0312 539.2214,-259.6694"/>
<polygon fill="#000000" stroke="#000000" points="541.7011,-262.1439 546.685,-252.7944 536.9585,-256.9952 541.7011,-262.1439"/>
</g>
<!-- N44 -->
<g id="node45" class="node">
<title>N44</title>
<ellipse fill="none" stroke="#000000" cx="813" cy="-235.9239" rx="42.3529" ry="18.2703"/>
<text text-anchor="middle" x="813" y="-232.1239" font-family="Times,serif" font-size="16.00" fill="#000000">44: 2B</text>
</g>
<!-- N38&#45;&gt;N44 -->
<g id="edge49" class="edge">
<title>N38&#45;&gt;N44</title>
<path fill="none" stroke="#000000" d="M529.9716,-299.6834C580.513,-289.2247 665.9073,-271.2398 739,-254.3087 747.8078,-252.2684 757.1829,-250.0083 766.1957,-247.7908"/>
<polygon fill="#000000" stroke="#000000" points="767.3036,-251.1222 776.168,-245.3192 765.6197,-244.3277 767.3036,-251.1222"/>
</g>
<!-- N45 -->
<g id="node46" class="node">
<title>N45</title>
<ellipse fill="none" stroke="#000000" cx="92" cy="-163.1543" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="92" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">45: 27</text>
</g>
<!-- N39&#45;&gt;N45 -->
<g id="edge50" class="edge">
<title>N39&#45;&gt;N45</title>
<path fill="none" stroke="#000000" d="M195.6827,-220.313C175.5322,-209.2043 148.334,-194.2104 126.8501,-182.3666"/>
<polygon fill="#000000" stroke="#000000" points="128.4769,-179.2669 118.0297,-177.5041 125.0974,-185.3971 128.4769,-179.2669"/>
</g>
<!-- N46 -->
<g id="node47" class="node">
<title>N46</title>
<ellipse fill="none" stroke="#000000" cx="212" cy="-163.1543" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="212" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">46: 27</text>
</g>
<!-- N39&#45;&gt;N46 -->
<g id="edge51" class="edge">
<title>N39&#45;&gt;N46</title>
<path fill="none" stroke="#000000" d="M220.9719,-217.5611C219.6644,-209.6323 218.105,-200.176 216.6559,-191.3884"/>
<polygon fill="#000000" stroke="#000000" points="220.1076,-190.8085 215.0271,-181.5113 213.2009,-191.9475 220.1076,-190.8085"/>
</g>
<!-- N47 -->
<g id="node48" class="node">
<title>N47</title>
<ellipse fill="none" stroke="#000000" cx="464" cy="-163.1543" rx="50.41" ry="18.2703"/>
<text text-anchor="middle" x="464" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">47: F3.3</text>
</g>
<!-- N39&#45;&gt;N47 -->
<g id="edge52" class="edge">
<title>N39&#45;&gt;N47</title>
<path fill="none" stroke="#000000" d="M263.6311,-223.9075C305.2201,-211.2974 370.6451,-191.4601 415.3404,-177.9082"/>
<polygon fill="#000000" stroke="#000000" points="416.5521,-181.1983 425.1063,-174.9471 414.521,-174.4994 416.5521,-181.1983"/>
</g>
<!-- N40&#45;&gt;N47 -->
<g id="edge55" class="edge">
<title>N40&#45;&gt;N47</title>
<path fill="none" stroke="#000000" d="M640.2337,-223.0817C604.0622,-210.7817 549.3919,-192.1914 510.5452,-178.9818"/>
<polygon fill="#000000" stroke="#000000" points="511.6251,-175.6522 501.0307,-175.7464 509.3715,-182.2796 511.6251,-175.6522"/>
</g>
<!-- N48 -->
<g id="node49" class="node">
<title>N48</title>
<ellipse fill="none" stroke="#000000" cx="622" cy="-163.1543" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="622" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">48: 27</text>
</g>
<!-- N40&#45;&gt;N48 -->
<g id="edge53" class="edge">
<title>N40&#45;&gt;N48</title>
<path fill="none" stroke="#000000" d="M664.1573,-217.9359C657.3936,-209.1467 649.1341,-198.4139 641.7243,-188.7851"/>
<polygon fill="#000000" stroke="#000000" points="644.3627,-186.4748 635.4902,-180.6843 638.8152,-190.7439 644.3627,-186.4748"/>
</g>
<!-- N49 -->
<g id="node50" class="node">
<title>N49</title>
<ellipse fill="none" stroke="#000000" cx="722" cy="-163.1543" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="722" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">49: 27</text>
</g>
<!-- N40&#45;&gt;N49 -->
<g id="edge54" class="edge">
<title>N40&#45;&gt;N49</title>
<path fill="none" stroke="#000000" d="M688.8764,-217.9359C694.0448,-209.3881 700.3248,-199.0019 706.0213,-189.5808"/>
<polygon fill="#000000" stroke="#000000" points="709.0696,-191.3037 711.2487,-180.9354 703.0794,-187.6818 709.0696,-191.3037"/>
</g>
<!-- N41&#45;&gt;N47 -->
<g id="edge56" class="edge">
<title>N41&#45;&gt;N47</title>
<path fill="none" stroke="#000000" d="M381.5251,-220.313C396.168,-210.1648 415.4894,-196.7743 431.75,-185.505"/>
<polygon fill="#000000" stroke="#000000" points="434.1942,-188.0695 440.4196,-179.4966 430.2068,-182.3161 434.1942,-188.0695"/>
</g>
<!-- N42&#45;&gt;N47 -->
<g id="edge57" class="edge">
<title>N42&#45;&gt;N47</title>
<path fill="none" stroke="#000000" d="M462.515,-217.1839C462.729,-209.3999 462.982,-200.1942 463.218,-191.6079"/>
<polygon fill="#000000" stroke="#000000" points="466.7175,-191.6713 463.4936,-181.5789 459.7201,-191.4789 466.7175,-191.6713"/>
</g>
<!-- N43&#45;&gt;N47 -->
<g id="edge58" class="edge">
<title>N43&#45;&gt;N47</title>
<path fill="none" stroke="#000000" d="M543.0845,-220.134C529.0842,-210.0469 510.7134,-196.8109 495.2018,-185.635"/>
<polygon fill="#000000" stroke="#000000" points="497.0839,-182.6771 486.9244,-179.6711 492.9919,-188.3566 497.0839,-182.6771"/>
</g>
<!-- N50 -->
<g id="node51" class="node">
<title>N50</title>
<ellipse fill="none" stroke="#000000" cx="834" cy="-163.1543" rx="52.1524" ry="18.2703"/>
<text text-anchor="middle" x="834" y="-159.3543" font-family="Times,serif" font-size="16.00" fill="#000000">50: EB.3</text>
</g>
<!-- N44&#45;&gt;N50 -->
<g id="edge59" class="edge">
<title>N44&#45;&gt;N50</title>
<path fill="none" stroke="#000000" d="M818.2992,-217.5611C820.5873,-209.6323 823.3162,-200.176 825.8521,-191.3884"/>
<polygon fill="#000000" stroke="#000000" points="829.2925,-192.0897 828.7025,-181.5113 822.567,-190.1488 829.2925,-192.0897"/>
</g>
<!-- N51 -->
<g id="node52" class="node">
<title>N51</title>
<ellipse fill="none" stroke="#000000" cx="83" cy="-90.3848" rx="50.41" ry="18.2703"/>
<text text-anchor="middle" x="83" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">51: E9.3</text>
</g>
<!-- N45&#45;&gt;N51 -->
<g id="edge60" class="edge">
<title>N45&#45;&gt;N51</title>
<path fill="none" stroke="#000000" d="M89.7289,-144.7915C88.7664,-137.0088 87.6218,-127.7543 86.5521,-119.1051"/>
<polygon fill="#000000" stroke="#000000" points="90.0027,-118.4896 85.3017,-108.9948 83.0556,-119.3489 90.0027,-118.4896"/>
</g>
<!-- N52 -->
<g id="node53" class="node">
<title>N52</title>
<ellipse fill="none" stroke="#000000" cx="201" cy="-90.3848" rx="50.41" ry="18.2703"/>
<text text-anchor="middle" x="201" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">52: E9.3</text>
</g>
<!-- N46&#45;&gt;N52 -->
<g id="edge61" class="edge">
<title>N46&#45;&gt;N52</title>
<path fill="none" stroke="#000000" d="M209.2242,-144.7915C208.0387,-136.9489 206.6273,-127.6118 205.3113,-118.9056"/>
<polygon fill="#000000" stroke="#000000" points="208.7303,-118.1063 203.7749,-108.7417 201.8089,-119.1526 208.7303,-118.1063"/>
</g>
<!-- N53 -->
<g id="node54" class="node">
<title>N53</title>
<ellipse fill="none" stroke="#000000" cx="310" cy="-90.3848" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="310" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">53: 49</text>
</g>
<!-- N47&#45;&gt;N53 -->
<g id="edge62" class="edge">
<title>N47&#45;&gt;N53</title>
<path fill="none" stroke="#000000" d="M433.2059,-148.6032C408.5808,-136.9671 373.9504,-120.6032 347.6729,-108.1864"/>
<polygon fill="#000000" stroke="#000000" points="348.9404,-104.9143 338.4037,-103.8064 345.9498,-111.2432 348.9404,-104.9143"/>
</g>
<!-- N54 -->
<g id="node55" class="node">
<title>N54</title>
<ellipse fill="none" stroke="#000000" cx="410" cy="-90.3848" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="410" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">54: 49</text>
</g>
<!-- N47&#45;&gt;N54 -->
<g id="edge63" class="edge">
<title>N47&#45;&gt;N54</title>
<path fill="none" stroke="#000000" d="M450.6517,-145.1663C444.1295,-136.3771 436.165,-125.6444 429.0198,-116.0156"/>
<polygon fill="#000000" stroke="#000000" points="431.7783,-113.8595 423.0084,-107.9147 426.157,-118.0309 431.7783,-113.8595"/>
</g>
<!-- N55 -->
<g id="node56" class="node">
<title>N55</title>
<ellipse fill="none" stroke="#000000" cx="510" cy="-90.3848" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="510" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">55: 49</text>
</g>
<!-- N47&#45;&gt;N55 -->
<g id="edge64" class="edge">
<title>N47&#45;&gt;N55</title>
<path fill="none" stroke="#000000" d="M475.3708,-145.1663C480.7742,-136.6185 487.3396,-126.2323 493.295,-116.8112"/>
<polygon fill="#000000" stroke="#000000" points="496.3752,-118.4888 498.76,-108.1658 490.4582,-114.7485 496.3752,-118.4888"/>
</g>
<!-- N56 -->
<g id="node57" class="node">
<title>N56</title>
<ellipse fill="none" stroke="#000000" cx="610" cy="-90.3848" rx="41.0244" ry="18.2703"/>
<text text-anchor="middle" x="610" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">56: 49</text>
</g>
<!-- N47&#45;&gt;N56 -->
<g id="edge65" class="edge">
<title>N47&#45;&gt;N56</title>
<path fill="none" stroke="#000000" d="M493.8976,-148.2527C516.83,-136.8227 548.6039,-120.9859 573.1156,-108.7687"/>
<polygon fill="#000000" stroke="#000000" points="574.7322,-111.8737 582.1208,-104.2804 571.6096,-105.6088 574.7322,-111.8737"/>
</g>
<!-- N57 -->
<g id="node58" class="node">
<title>N57</title>
<ellipse fill="none" stroke="#000000" cx="721" cy="-90.3848" rx="52.1524" ry="18.2703"/>
<text text-anchor="middle" x="721" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">57: CB.3</text>
</g>
<!-- N47&#45;&gt;N57 -->
<g id="edge66" class="edge">
<title>N47&#45;&gt;N57</title>
<path fill="none" stroke="#000000" d="M504.615,-152.1656C544.3051,-141.3609 606.404,-124.2799 660,-108.7696 663.7768,-107.6766 667.6809,-106.5327 671.604,-105.373"/>
<polygon fill="#000000" stroke="#000000" points="672.7471,-108.6846 681.3338,-102.4781 670.7509,-101.9753 672.7471,-108.6846"/>
</g>
<!-- N48&#45;&gt;N57 -->
<g id="edge67" class="edge">
<title>N48&#45;&gt;N57</title>
<path fill="none" stroke="#000000" d="M643.4815,-147.3644C657.1087,-137.3479 674.96,-124.2263 690.0966,-113.1002"/>
<polygon fill="#000000" stroke="#000000" points="692.198,-115.8994 698.1825,-107.1567 688.0521,-110.2592 692.198,-115.8994"/>
</g>
<!-- N49&#45;&gt;N57 -->
<g id="edge68" class="edge">
<title>N49&#45;&gt;N57</title>
<path fill="none" stroke="#000000" d="M721.7425,-144.4144C721.6355,-136.6303 721.509,-127.4246 721.391,-118.8383"/>
<polygon fill="#000000" stroke="#000000" points="724.8904,-118.7603 721.2532,-108.8093 717.891,-118.8565 724.8904,-118.7603"/>
</g>
<!-- N50&#45;&gt;N57 -->
<g id="edge72" class="edge">
<title>N50&#45;&gt;N57</title>
<path fill="none" stroke="#000000" d="M808.9216,-147.0044C793.086,-136.8066 772.4217,-123.4993 755.1057,-112.3481"/>
<polygon fill="#000000" stroke="#000000" points="756.7015,-109.2128 746.399,-106.7412 752.9115,-115.0981 756.7015,-109.2128"/>
</g>
<!-- N58 -->
<g id="node59" class="node">
<title>N58</title>
<ellipse fill="none" stroke="#000000" cx="834" cy="-90.3848" rx="43.2674" ry="18.2703"/>
<text text-anchor="middle" x="834" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">58: 3A</text>
</g>
<!-- N50&#45;&gt;N58 -->
<g id="edge69" class="edge">
<title>N50&#45;&gt;N58</title>
<path fill="none" stroke="#000000" d="M834,-144.4144C834,-136.6303 834,-127.4246 834,-118.8383"/>
<polygon fill="#000000" stroke="#000000" points="837.5001,-118.8093 834,-108.8093 830.5001,-118.8094 837.5001,-118.8093"/>
</g>
<!-- N59 -->
<g id="node60" class="node">
<title>N59</title>
<ellipse fill="none" stroke="#000000" cx="938" cy="-90.3848" rx="43.2674" ry="18.2703"/>
<text text-anchor="middle" x="938" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">59: 3A</text>
</g>
<!-- N50&#45;&gt;N59 -->
<g id="edge70" class="edge">
<title>N50&#45;&gt;N59</title>
<path fill="none" stroke="#000000" d="M857.5992,-146.6418C872.1623,-136.4519 891.0124,-123.2623 906.7999,-112.2157"/>
<polygon fill="#000000" stroke="#000000" points="909.022,-114.9326 915.2089,-106.3319 905.0089,-109.1972 909.022,-114.9326"/>
</g>
<!-- N60 -->
<g id="node61" class="node">
<title>N60</title>
<ellipse fill="none" stroke="#000000" cx="1042" cy="-90.3848" rx="43.2674" ry="18.2703"/>
<text text-anchor="middle" x="1042" y="-86.5848" font-family="Times,serif" font-size="16.00" fill="#000000">60: 3A</text>
</g>
<!-- N50&#45;&gt;N60 -->
<g id="edge71" class="edge">
<title>N50&#45;&gt;N60</title>
<path fill="none" stroke="#000000" d="M871.5261,-150.1237C903.1354,-139.1353 949.5415,-122.9739 990,-108.7696 992.9321,-107.7401 995.9564,-106.6763 999.0025,-105.6032"/>
<polygon fill="#000000" stroke="#000000" points="1000.4531,-108.803 1008.7193,-102.1757 998.1245,-102.2016 1000.4531,-108.803"/>
</g>
<!-- N61 -->
<g id="node62" class="node">
<title>N61</title>
<path fill="none" stroke="#000000" d="M62,-36C62,-36 12,-36 12,-36 6,-36 0,-30 0,-24 0,-24 0,-12 0,-12 0,-6 6,0 12,0 12,0 62,0 62,0 68,0 74,-6 74,-12 74,-12 74,-24 74,-24 74,-30 68,-36 62,-36"/>
<text text-anchor="middle" x="37" y="-14.2" font-family="Times,serif" font-size="16.00" fill="#000000">61: BC.2</text>
</g>
<!-- N51&#45;&gt;N61 -->
<g id="edge73" class="edge">
<title>N51&#45;&gt;N61</title>
<path fill="none" stroke="#000000" d="M71.3923,-72.119C66.0675,-63.7401 59.6529,-53.6462 53.8131,-44.4568"/>
<polygon fill="#000000" stroke="#000000" points="56.7622,-42.5719 48.4447,-36.0091 50.8543,-46.3263 56.7622,-42.5719"/>
</g>
<!-- N62 -->
<g id="node63" class="node">
<title>N62</title>
<path fill="none" stroke="#000000" d="M154,-36C154,-36 104,-36 104,-36 98,-36 92,-30 92,-24 92,-24 92,-12 92,-12 92,-6 98,0 104,0 104,0 154,0 154,0 160,0 166,-6 166,-12 166,-12 166,-24 166,-24 166,-30 160,-36 154,-36"/>
<text text-anchor="middle" x="129" y="-14.2" font-family="Times,serif" font-size="16.00" fill="#000000">62: BC.2</text>
</g>
<!-- N51&#45;&gt;N62 -->
<g id="edge74" class="edge">
<title>N51&#45;&gt;N62</title>
<path fill="none" stroke="#000000" d="M94.6077,-72.119C99.9325,-63.7401 106.3471,-53.6462 112.1869,-44.4568"/>
<polygon fill="#000000" stroke="#000000" points="115.1457,-46.3263 117.5553,-36.0091 109.2378,-42.5719 115.1457,-46.3263"/>
</g>
<!-- N63 -->
<g id="node64" class="node">
<title>N63</title>
<path fill="none" stroke="#000000" d="M578,-36C578,-36 542,-36 542,-36 536,-36 530,-30 530,-24 530,-24 530,-12 530,-12 530,-6 536,0 542,0 542,0 578,0 578,0 584,0 590,-6 590,-12 590,-12 590,-24 590,-24 590,-30 584,-36 578,-36"/>
<text text-anchor="middle" x="560" y="-14.2" font-family="Times,serif" font-size="16.00" fill="#000000">63: 4B</text>
</g>
<!-- N51&#45;&gt;N63 -->
<g id="edge75" class="edge">
<title>N51&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M119.8753,-77.8182C127.1483,-75.6459 134.768,-73.5814 142,-72 278.6062,-42.1296 444.1916,-26.7637 519.3673,-20.8926"/>
<polygon fill="#000000" stroke="#000000" points="520.085,-24.348 529.7886,-20.0947 519.5505,-17.3685 520.085,-24.348"/>
</g>
<!-- N52&#45;&gt;N63 -->
<g id="edge76" class="edge">
<title>N52&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M238.2578,-78.0091C245.4291,-75.8451 252.9136,-73.7348 260,-72 351.9422,-49.4922 461.8589,-32.075 519.748,-23.6227"/>
<polygon fill="#000000" stroke="#000000" points="520.5395,-27.0447 529.9356,-22.1496 519.5377,-20.1168 520.5395,-27.0447"/>
</g>
<!-- N53&#45;&gt;N63 -->
<g id="edge77" class="edge">
<title>N53&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M341.3264,-78.384C347.4833,-76.1622 353.9187,-73.9348 360,-72 414.9757,-54.509 479.5795,-37.7363 520.1617,-27.6488"/>
<polygon fill="#000000" stroke="#000000" points="521.073,-31.029 529.9411,-25.2319 519.3934,-24.2335 521.073,-31.029"/>
</g>
<!-- N54&#45;&gt;N63 -->
<g id="edge78" class="edge">
<title>N54&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M438.2139,-76.7698C461.4936,-65.5357 494.7866,-49.4697 520.6809,-36.974"/>
<polygon fill="#000000" stroke="#000000" points="522.3688,-40.0458 529.8539,-32.5475 519.3265,-33.7414 522.3688,-40.0458"/>
</g>
<!-- N55&#45;&gt;N63 -->
<g id="edge79" class="edge">
<title>N55&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M522.3596,-72.4919C528.2048,-64.0298 535.3011,-53.7565 541.7497,-44.4209"/>
<polygon fill="#000000" stroke="#000000" points="544.6316,-46.407 547.4353,-36.1898 538.8721,-42.4285 544.6316,-46.407"/>
</g>
<!-- N56&#45;&gt;N63 -->
<g id="edge80" class="edge">
<title>N56&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M597.6404,-72.4919C591.7952,-64.0298 584.6989,-53.7565 578.2503,-44.4209"/>
<polygon fill="#000000" stroke="#000000" points="581.1279,-42.4285 572.5647,-36.1898 575.3684,-46.407 581.1279,-42.4285"/>
</g>
<!-- N57&#45;&gt;N63 -->
<g id="edge81" class="edge">
<title>N57&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M688.4192,-75.7366C662.6928,-64.1701 626.7,-47.988 599.3627,-35.6973"/>
<polygon fill="#000000" stroke="#000000" points="600.641,-32.4346 590.0852,-31.5261 597.7705,-38.819 600.641,-32.4346"/>
</g>
<!-- N58&#45;&gt;N63 -->
<g id="edge82" class="edge">
<title>N58&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M801.4335,-78.3033C795.0292,-76.0886 788.3326,-73.8844 782,-72 719.042,-53.2658 644.6402,-36.1727 599.9449,-26.4369"/>
<polygon fill="#000000" stroke="#000000" points="600.5745,-22.9922 590.0605,-24.2984 599.0943,-29.8339 600.5745,-22.9922"/>
</g>
<!-- N59&#45;&gt;N63 -->
<g id="edge83" class="edge">
<title>N59&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M905.8174,-78.0188C899.3203,-75.8031 892.4911,-73.6712 886,-72 784.6397,-45.9029 662.1755,-29.5764 600.1697,-22.3488"/>
<polygon fill="#000000" stroke="#000000" points="600.365,-18.8483 590.0312,-21.1857 599.5671,-25.8027 600.365,-18.8483"/>
</g>
<!-- N60&#45;&gt;N63 -->
<g id="edge84" class="edge">
<title>N60&#45;&gt;N63</title>
<path fill="none" stroke="#000000" d="M1010.1457,-77.911C1003.5617,-75.677 996.6158,-73.5657 990,-72 849.0956,-38.6539 677.0356,-24.9267 600.2917,-20.1663"/>
<polygon fill="#000000" stroke="#000000" points="600.3009,-16.6606 590.1085,-19.5529 599.88,-23.6479 600.3009,-16.6606"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

View file

@ -19,6 +19,18 @@ of tools in the `StressTestRig` generate report output and data visualisation as
_Gnuplot_ script. Raw measurement data is stored as CSV (see 'csv.hpp').
Breaking Point Testing
----------------------
Topo-10::
Topology of the processing load used as typical example for _breaking a schedule._
This Graph with 64 nodes is generated by the pre-configured rules
`configureShape_chain_loadBursts()`; it starts with a single linear, yet »bursts«
into an excessively interconnected parallel graph roughly in the middle. Due to
the dependency connections, typically the capacity is first underused, followed
by a short and massive overload peak. Deliberately, there is not much room for
speed-up through parallelisation.
Load Peak Testing
-----------------
@ -37,7 +49,7 @@ Dump-10::
Graph-10::
Plot from a parametric measurement series with the same settings as used for
the Dump-10; settings in these range are known to produce clean processing
with no obivous irregular overhead. In this case here
with no obvious irregular overhead. In this case here
+
- the series is comprised of 40 measurements, covering a parameter range 10...100
- the free parameter is the number of jobs in a homogenous load peak

View file

@ -33,36 +33,17 @@
#include "lib/format-string.hpp"
#include "lib/format-cout.hpp"
#include "lib/test/diagnostic-output.hpp"//////////////////////////TODO work in distress
//#include "lib/format-string.hpp"
#include "lib/test/transiently.hpp"
//#include "lib/test/microbenchmark.hpp"
//#include "lib/util.hpp"
//#include <utility>
//#include <vector>
#include <array>
#include "lib/util.hpp"
using test::Test;
//using std::move;
//using util::isSameObject;
namespace vault{
namespace gear {
namespace test {
// using lib::time::FrameRate;
// using lib::time::Offset;
// using lib::time::Time;
using util::_Fmt;
// using std::vector;
using std::array;
namespace { // Test definitions and setup...
}
using util::isLimited;
@ -79,13 +60,12 @@ namespace test {
virtual void
run (Arg)
{
//smokeTest();
// setup_systematicSchedule();
// verify_instrumentation();
// search_breaking_point();
smokeTest();
setup_systematicSchedule();
verify_instrumentation();
search_breaking_point();
watch_expenseFunction();
// investigateWorkProcessing();
walkingDeadline();
investigateWorkProcessing();
}
@ -376,12 +356,68 @@ namespace test {
/** @test TODO Investigate the relation of run time (expense) to input length.
/** @test Investigate the relation of run time (expense) to input length.
* - again use the integrated StressRig
* - this time overload the scheduler with a peak of uncorrelated jobs
* and watch the time and load required to work through this challenge
* - conduct a series of runs with random number of jobs (within bounds)
* - collect the observed data (as CSV), calculate a **linear regression model**
* - optionally generate a **Gnuplot** script for visualisation
* @see vault::gear::bench::ParameterRange
* @todo WIP 1/24 🔁 define 🔁 implement
* @see gnuplot-gen.hpp
* @todo WIP 4/24 define implement
*/
void
watch_expenseFunction()
{
MARK_TEST_FUN
struct Setup
: StressRig, bench::LoadPeak_ParamRange_Evaluation
{
uint CONCURRENCY = 4;
uint REPETITIONS = 50;
auto testLoad(Param nodes)
{
TestLoad testLoad{nodes};
return testLoad.configure_isolated_nodes();
}
auto testSetup (TestLoad& testLoad)
{
return StressRig::testSetup(testLoad)
.withLoadTimeBase(2ms);
}
};
auto results = StressRig::with<Setup>()
.perform<bench::ParameterRange> (33,128);
auto [socket,gradient,v1,v2,corr,maxDelta,stdev] = bench::linearRegression (results.param, results.time);
double avgConc = Setup::avgConcurrency (results);
/*
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"<<endl;
cout << Setup::renderGnuplot (results);
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"<<endl;
cout << _Fmt{"Model: %3.2f·p + %3.2f corr=%4.2f Δmax=%4.2f σ=%4.2f ∅concurrency: %3.1f"}
% gradient % socket % corr % maxDelta % stdev % avgConc
<< endl;
*/
CHECK (corr > 0.80); // clearly a linear correlated behaviour
CHECK (isLimited (0.4, gradient, 0.7)); // should be slightly above 0.5 (2ms and 4 threads => 0.5ms / Job)
CHECK (isLimited (3, socket, 9 )); // we have a spin-up and a shut-down both ~ 2ms plus some further overhead
CHECK (avgConc > 3); // should be able to utilise 4 workers (minus the spin-up/shut-down phase)
}
/** @test TODO build a load pattern to emolate a typical high work load
* @todo WIP 4/24 🔁 define implement
*/
void
investigateWorkProcessing()
{
ComputationalLoad cpuLoad;
cpuLoad.timeBase = 200us;
@ -415,49 +451,6 @@ cout << "time="<<runTime/1000
<<endl;
}
return;
*/
struct Setup
: StressRig, bench::LoadPeak_ParamRange_Evaluation
{
uint CONCURRENCY = 8;
uint REPETITIONS = 80;
auto testLoad(Param nodes)
{
TestLoad testLoad{nodes};
return testLoad.configure_isolated_nodes();
}
auto testSetup (TestLoad& testLoad)
{
return StressRig::testSetup(testLoad)
.withLoadTimeBase(2ms);
}
};
auto results = StressRig::with<Setup>()
.perform<bench::ParameterRange> (20,200);
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"<<endl;
cout << Setup::renderGnuplot (results);
cout << "───═══───═══───═══───═══───═══───═══───═══───═══───═══───═══───"<<endl;
auto [socket,gradient,v1,v2,corr,maxDelta,stdev] = bench::linearRegression (results.param, results.time);
double avgConc = Setup::avgConcurrency (results);
cout << _Fmt{"Model: %3.2f·p + %3.2f corr=%4.2f Δmax=%4.2f σ=%4.2f ∅concurrency: %3.1f"}
% gradient % socket % corr % maxDelta % stdev % avgConc
<< endl;
}
/** @test TODO
* @todo WIP 1/24 🔁 define implement
*/
void
investigateWorkProcessing()
{
MARK_TEST_FUN
TestChainLoad<8> testLoad{256};
testLoad.seedingRule(testLoad.rule().probability(0.6).minVal(2))
.pruningRule(testLoad.rule().probability(0.44))
@ -466,21 +459,9 @@ cout << "time="<<runTime/1000
// .printTopologyDOT()
// .printTopologyStatistics()
;
// ////////////////////////////////////////////////////////WIP : Run test directly for investigation of SEGFAULT....
// BlockFlowAlloc bFlow;
// EngineObserver watch;
// Scheduler scheduler{bFlow, watch};
auto LOAD_BASE = 500us;
// auto stressFac = 1.0;
// auto concurrency = 8;
//
ComputationalLoad cpuLoad;
cpuLoad.timeBase = LOAD_BASE;
cpuLoad.calibrate();
//
double loadMicros = cpuLoad.invoke();
// double refTime = testLoad.calcRuntimeReference(LOAD_BASE);
SHOW_EXPR(loadMicros)
//
// auto testSetup =
// testLoad.setupSchedule(scheduler)
@ -490,9 +471,12 @@ SHOW_EXPR(loadMicros)
// .withAdaptedSchedule (stressFac, concurrency);
// double runTime = testSetup.launch_and_wait();
// double expected = testSetup.getExpectedEndTime();
// auto stat = testSetup.getInvocationStatistic();
//SHOW_EXPR(runTime)
//SHOW_EXPR(expected)
//SHOW_EXPR(refTime)
return;
*/
using StressRig = StressTestRig<8>;
struct Setup : StressRig
@ -530,16 +514,6 @@ SHOW_EXPR(stress)
SHOW_EXPR(delta)
SHOW_EXPR(time)
}
/** @test TODO
* @todo WIP 1/24 🔁 define implement
*/
void
walkingDeadline()
{
}
};

1
wiki/dump Symbolic link
View file

@ -0,0 +1 @@
../doc/devel/dump

View file

@ -7317,12 +7317,20 @@ The primary scaling effects exploited to achieve this level of performance are t
&amp;rarr; [[Scheduler performance testing|SchedulerTest]]
</pre>
</div>
<div title="SchedulerProcessing" creator="Ichthyostega" modifier="Ichthyostega" created="202312281750" modified="202404081703" tags="Rendering operational draft" changecount="6">
<div title="SchedulerProcessing" creator="Ichthyostega" modifier="Ichthyostega" created="202312281750" modified="202404111651" tags="Rendering operational draft" changecount="7">
<pre>At first sight, the internals of [[Activity|RenderActivity]] processing may seem overwhelmingly complex -- especially since there is no active »processing loop« which might serve as a starting point for the understanding. It is thus necessary to restate the working mode of the Scheduler: it is an //accounting and direction service// for the //active// [[render workers|SchedulerWorker]]. Any processing happens stochastically and is driven by various kinds of events --
* a //worker// becoming ready to perform further tasks
* an external //IO event// {{red{12/23 only planned yet}}}
* a //planning job// to add new elements to the schedule
The last point highlights a //circular structure:// the planning job itself was part of the schedule, picked up by a worker and activated; this way, the system feeds itself.
!Participants and Realms
From the outside, the Scheduler appears as a service component, exposing two points-of-access: Jobs can be added to the schedule (planned), and a worker can retrieve the next instruction, which is either to perform an (opaque) computation, or to sleep for some given short period of time. Jobs are further distinguished into processing tasks, IO activities and meta jobs, which are related to the self-regulation of the scheduling process. On a closer look however, several distinct realms can be identified, each offering an unique perspective of operation.
!!!The Activity Realm
!!!Queues and Activation Events
!!!The Worker Aspect
!!!Process Control
</pre>
</div>
<div title="SchedulerRequirements" modifier="Ichthyostega" created="201107080145" modified="201112171835" tags="Rendering spec draft discuss">
@ -7340,7 +7348,7 @@ The last point highlights a //circular structure:// the planning job itself was
The way other parts of the system are built, requires us to obtain a guaranteed knowledge of some job's termination. It is possible to obtain that knowledge with some limited delay, but it nees to be absoultely reliable (violations leading to segfault). The requirements stated above assume this can be achieved through //jobs with guaranteed execution.// Alternatively we could consider installing specific callbacks -- in this case the scheduler itself has to guarantee the invocation of these callbacks, even if the corresponding job fails or is never invoked. It doesn't seem there is any other option.
</pre>
</div>
<div title="SchedulerTest" creator="Ichthyostega" modifier="Ichthyostega" created="202312281814" modified="202404081720" tags="Rendering operational draft" changecount="11">
<div title="SchedulerTest" creator="Ichthyostega" modifier="Ichthyostega" created="202312281814" modified="202404112327" tags="Rendering operational draft img" changecount="99">
<pre>With the Scheduler testing effort [[#1344|https://issues.lumiera.org/ticket/1344]], several goals are pursued
* by exposing the new scheduler implementation to excessive overload, its robustness can be assessed and defects can be spotted
* with the help of a systematic, calibrated load, characteristic performance limits and breaking points can be established
@ -7378,6 +7386,79 @@ A method to determine such a »''breaking point''« in a systematic way relies o
Observing this breaking point in correlation with various load patterns will unveil performance characteristics and weak spots of the implementation.
&amp;rarr; [[Scheduler behaviour traits|SchedulerBehaviour]]
Another, quite different avenue of testing is to investigate a ''steady full-load state'' of processing. Contrary to the //breaking point// technique discussed above, for this method a fluid, homogenous schedule is required, and effects of scaffolding, ramp-up and load adaptation should be minimised. By watching a constant flow of back-to-back processing, in a state of //saturation,// the boundary capabilities for throughput and parallelisation can be derived, ideally expressed as a model of processing efficiency. A setup for this kind of investigation would be to challenge the scheduler with a massive load peak of predetermined size: a set of jobs //without any further interdependencies,// which are scheduled effectively instantaneously, so that the scheduler is immediately in a state of total overload. The actual measurement entails to watch the time until completing this work load, together with the individual job activation times during that period; the latter can be integrated to account for the //effective parallelism// and the amount of time in //impeded state,// where at most single threaded processing is observed. Challenging the Scheduler with a random series of such homogenous load peaks allows build a correlation table and to compute a linear regression model.
! Observations
!!!Breaking Point and Stress
Several investigations to determine the »breaking point« of a schedule were conducted with the load topology depicted to the right. This load pattern is challenging on various levels. There are dependency chains leading from the single start node to the three exit nodes, and thus the order of processing must be strictly observed. Moreover, several nodes bear //no weight,// and so the processing for those jobs returns immediately, producing mostly administrative overhead. Some nodes however are attributed with a weight up to 3.
&lt;html&gt;&lt;img title=&quot;Load topology with 64 nodes joined into a dependency chain, used for »breaking point« search&quot; src=&quot;dump/2024-04-08.Scheduler-LoadTest/Topo-10.svg&quot; style=&quot;float:right; margin-left:2ex&quot;/&gt;&lt;/html&gt;For execution, this weight is loaded with a base time, for example ''500''µs. An //adapted schedule// is generated based on the //node layers,// and using a simplified heuristic to account both for the accumulated node weight found within a given level, and the ability for speed-up through concurrency. Nodes without a weight are assumed to take no time (a deliberate simplification), while possible parallelisation is applied solely as factor based on the node count, completely disregarding any concerns of »optimal stacking«. This leads to the following schedule:
|! Level|!stepFac|!Schedule |
| 0| 0.000| 0.000ms|
| 1| 0.000| 0.000ms|
| 2| 0.000| 0.000ms|
| 3| 2.000| 1.000ms|
| 4| 2.000| 1.000ms|
| 5| 2.000| 1.000ms|
| 6| 2.000| 1.000ms|
| 7| 3.000| 1.500ms|
| 8| 5.000| 2.500ms|
| 9| 7.000| 3.500ms|
| 10| 8.000| 4.000ms|
| 11| 8.000| 4.000ms|
| 12| 8.000| 4.000ms|
| 13| 9.000| 4.500ms|
| 14| 10.000| 5.000ms|
| 15| 12.000| 6.000ms|
| 16| 12.000| 6.000ms|
| 17| 13.000| 6.500ms|
| 18| 16.000| 8.000ms|
| 19| 16.000| 8.000ms|
| 20| 20.000| 10.000ms|
| 21| 22.500| 11.250ms|
| 22| 24.167| 12.083ms|
| 23| 26.167| 13.083ms|
| 24| 28.167| 14.083ms|
| 25| 30.867| 15.433ms|
| 26| 32.200| 16.100ms|
The tests were typically performed with ''4 workers''. Thus e.g. at begin of Layer-3, a factor 2 is added as increment, since Node-2 is attributed with weight≔2; in the .dot-diagram, the weight is added as suffix, behind the node hash mark, in this case ({{{2: 95.2}}}). With 500µs as weight, the node(s) in Layer-2 will thus be scheduled at t=1ms. To discuss a more interesting example, Layer-19 holds 5 nodes with weight≔2. Scheduling for 4 workers will allow to parallelise 4 nodes, but require another round for the remaining node. Thus an increment of +4 is added at the beginning of Layer-20, thus scheduling the two following nodes ({{{34: D8.3}}}) and ({{{35: B0.2}}}) at t=10ms. So there is a combined weight≡5 in Layer-20, and the two nodes are parallelised, thus allocating an offset of +5/2 · 500µs, placing Layer-21 at t=11.25ms
This heuristic time allocation leads to a schedule, which somehow considers the weight distribution, yet is deliberately unrealistic, since it does not consider any base effort, nor does it fully account for the limited worker pool size. At the beginning, the Scheduler will thus be partially idle waiting, while at the end, a massive short overload peak is added, further exacerbated by the dependency constraints. After all, the objective of this test is to tighten or stretch this schedule by a constant ''stress factor'', and to search the point at which a cascading catastrophic slippage can be observed.
And such a well defined breaking point can indeed be determined reliably. However -- initial experiments placed this event at a stress-factor closely above 0.5 -- which is way off any expectation. The point in question is not the absolute value of slippage, which is expectedly strong, due to the overload peak at end; rather, we are looking for the point, at which the scheduler is unable to follow even the general outline of this schedule. And the expectation would be that this happens close to the nominal schedule, which implies stress-factor ≡ 1. Further //instrumentation// was thus added, allowing to capture invocations of the actual processing function; values integrated from these events allowed to draw conclusions about various aspects of the actual behaviour, especially
* the actual job run times consistently showed a significant drift towards longer run times (slower execution) than calibrated
* the effective average concurrency deviates systematically from the average speed-up factor, as assumed in the schedule generation; notably this deviation is stable over a wide range of stress factors, but obviously depends strongly on the actual load graph topology and work pool size; is can thus be interpreted as a ''form factor'' to describe the topological ability to map a given local node connectivity to a scheduling situation.
By virtue of the instrumentation, both effects can be determined //empirically// during the test run, and compounded into a correction factor, applied to the scale of the stress-factor value determined as result. With this correction in place, the observed »breaking point« moved ''very close to 1.0''. This is considered an //important result;// both corrected effects relate to circumstances considered external to the Scheduler implementation -- which, beyond that, seems to handle timings and the control of the processing path //without significant further overhead.//
&lt;html&gt;&lt;div style=&quot;clear: both&quot;/&gt;&lt;/html&gt;
!!!Overload
Once the Scheduler is //overloaded,// the actual schedule does not matter much any more -- within the confines of an important limitation: the deadlines. The schedule may slip, but when a given job is pushed ahead beyond its deadline, the general promise of the schedule is //broken.// This draws on an important distinction; deadlines are hard, while start times can be shifted to accommodate. As long as the timings stay within the overall confines, as defined by the deadlines, the scheduling is able to absorb short load peaks. While in this mode of operation, no further timing waits are performed, rather, jobs are processed in order, as defined by their start times; when done with one job, a worker immediately retrieves the next job, which in state of overload is likewise overdue. So this setup allows to observe the efficiency of the „mechanics“ of job invocation.
&lt;html&gt;&lt;img title=&quot;Load Peak with 8ms&quot; src=&quot;dump/2024-04-08.Scheduler-LoadTest/Graph13.svg&quot; style=&quot;float:right; width: 80ex; margin-left:2ex&quot;/&gt;&lt;/html&gt;
The measurement shown to the right uses a pool of ''8 workers'' to processes a load peak of jobs, each loaded with a processing function calibrated to run ''8''ms. Workers are thus occupied with processing the job load for a significant amount of time -- and so the probability of workers asking for work at precisely the same time is low. Since the typical {{{ActicityTerm}}} for [[regular job processing|RenderOperationLogic]] entails dropping the {{{GroomingToken}}} prior to invocation of the actual {{{JobFunctor}}}, another worker can access the queues meanwhile, and process Activities up to invocation of the next {{{JobFunctor}}}
With such a work load, the //worker pull processing// plays out to its full strength; since there is no »manager« thread, the administrative work is distributed evenly to all workers, and performed on average without imposing any synchronisation overhead to other workers. Especially with larger load peaks, the concurrency converges towards the theoretical maximum of 8, as can be seen at the light blue vertical bars in the secondary diagram below (left Y scale: concurrency). The remaining headroom can be linked (by investigation of trace dumps) to the inevitable ramp-up and tear-down; the work capacity shows up with some distribution of random delay, and thus it typically takes several milliseconds until all workers got their first task. Moreover, there is the overhead of the management work, which happens outside the measurement bracket inserted around the invocation of the job function -- even while in this load scenario also the management work is done concurrent to the other worker's payload processing, it is not accounted as part of the payload effort, and thus reduces the average concurrency.
The dependency of load size to processing time is clearly linear, with a very high correlation (0.98). A ''linear regression model'' indicates a gradient very close to the expected value of 1ms/job (8ms nominal job time distributed to 8 cores). The slight deviation is due to the fact that //actual job times// (&amp;rarr; dark green dots) tend to diverge to higher values than calibrated, an effect consistently observed on this machine throughout this scheduler testing effort. An explanation might be that the calibration of the work load is done in a tight loop (single threaded or multi threaded does not make much of difference here), while in the actual processing within the scheduler, some global slowdown is generated by cache misses, pipeline stalls and the coordination overhead caused by accessing the atomic {{{GroomingToken}}} variable. Moreover, the linear model indicates a socket overhead, which largely can be attributed to the ramp-up / tear-down phase, where -- inevitably -- not all workers can be put to work. In accordance with that theory, the socket overhead indeed increases with larger job times. The probabilistic capacity management employed in this Scheduler implementation adds a further socket overhead; the actual work start depends on workers pulling further work, which, depending on the circumstances, happens more or less randomly at the begin of each test run. Incidentally, there is further significant scaffolding overhead, which is not accounted for in the numbers presented here: At start, the worker pool must be booted, the jobs for the processing load must be planned, and a dependency to a wake-up job will be maintained, prompting the controlling test-thread to collect the measurement data and to commence with the next run in the series.
Note also that all these investigations were performed with ''debug builds''.
&lt;html&gt;&lt;div style=&quot;clear: both&quot;/&gt;&lt;/html&gt;
&lt;html&gt;&lt;img title=&quot;Load Peak with 8ms&quot; src=&quot;dump/2024-04-08.Scheduler-LoadTest/Graph15.svg&quot; style=&quot;float:right; width: 80ex; margin-left:2ex&quot;/&gt;&lt;/html&gt;
However, ''very short jobs'' cause ''significant loss of efficiency''.
The example presented to the right uses a similar setup (''8 workers''), but reduced the calibrated job-time to only ''200''µs. This comes close to the general overhead required for retrieving and launching the next job, which amounts to further 100µs running a debug build, including the ~30µs required solely to access, set and drop the {{{GroomingToken}}}. Consequently, only a small number of //other workers// get a chance to acquire the {{{GroomingToken}}} and then to work through the Activities up to the next Job invocation, before the first worker returns already -- causing a significant amount of ''contention'' on the {{{GroomingToken}}}. Now, the handling of work-pull requests in the Scheduler implementation is arranged in a way to prefer workers just returning from active processing. Thus (intentionally) only a small subset of the workers is able to pull work repeatedly, while the other workers will encounter a series of »contention {{{KICK}}}« events; an inbuilt //contention mitigation scheme// responds to this kind of repeated pull-failures by interspersing sleep cycles, thereby effectively throttling down the {{{WorkForce}}} until contention events return to an attainable level. This mitigation is important, since contention, even just on an atomic variable, can cause a significant global slow-down of the system.
As net effect, most of the load peaks are just handled by two workers, especially for larger load sizes; most of the available processing capacity remains unused for such short running payloads. Moreover, on average a significant amount of time is spent with partially blocked or impeded operation (&amp;rarr; light green circles), since administrative work must be done non-concurrently. Depending on the perspective, this can be seen as a weakness -- or as the result of a deliberate trade-off made by the choice of active work-pulling and a passive Scheduler.
The actual average in-job time (&amp;rarr; dark green dots) is offset significantly here, and closer to 400µs -- which is also confirmed by the gradient of the linear model (0.4ms / 2 Threads ≙ 0.2ms/job). With shorter load sizes below 90 jobs, increased variance can be observerd, and measurements can no longer be subsumed under a single linear relation -- in fact, data points seem to be arranged into several groups with differing, yet mostly linear correlation, which also explains the negative socket value of the overall computed model; using only the data points with &gt; 90 jobs would yield a model with slightly lower gradient but a positive offset of ~2ms.
&lt;html&gt;&lt;div style=&quot;clear: both&quot;/&gt;&lt;/html&gt;
Further measurement runs with other parameter values fit well in between the two extremes presented above. It can be concluded that this Scheduler implementation strongly favours larger job sizes starting with several milliseconds, when it comes to processing through a extended homogenous work load without much job interdependencies. Such larger lot sizes can be handled efficiently and close to expected limits, while very small jobs massively degrade the available performance. This can be attributed both to the choice of a randomised capacity distribution, and of pull processing without a central manager.
!!!Stationary Processing
lorem ipsum
lorem ipsum nebbich
ja luia sog I
</pre>
</div>
<div title="SchedulerWorker" creator="Ichthyostega" modifier="Ichthyostega" created="202309041605" modified="202312281745" tags="Rendering operational spec draft" changecount="21">

View file

@ -111009,8 +111009,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1703798050746" ID="ID_339326725" MODIFIED="1703798059114" TEXT="Scheduler-Stre&#xdf;tests">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1703798050746" ID="ID_339326725" MODIFIED="1712878447628" TEXT="Scheduler-Stre&#xdf;tests">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1704288791820" ID="ID_1307311744" MODIFIED="1704288853776" TEXT="Achtung Fokus">
<linktarget COLOR="#903858" DESTINATION="ID_1307311744" ENDARROW="Default" ENDINCLINATION="-395;563;" ID="Arrow_ID_1663621363" SOURCE="ID_755885227" STARTARROW="None" STARTINCLINATION="-424;24;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
@ -116210,6 +116210,107 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1712878607523" ID="ID_61094750" MODIFIED="1712878636653" TEXT="Ergebnisse">
<icon BUILTIN="forward"/>
<node CREATED="1712878620561" ID="ID_1169608980" MODIFIED="1712878630380" TEXT="keine dramatsichen Bugs mehr gefinden"/>
<node CREATED="1712878640654" ID="ID_1006717738" MODIFIED="1712878676381" TEXT="das Verhalten ist verst&#xe4;ndlich und enspricht den Design-Entscheidungen"/>
<node CREATED="1712878677281" ID="ID_1210874722" MODIFIED="1712878701594" TEXT="&#xbb;Breaking Point&#xab;">
<node CREATED="1712878703438" ID="ID_34726638" MODIFIED="1712878722799" TEXT="lag f&#xfc;r das Test-Muster nahe an Stre&#xdf;-Faktor &#x2261; 1"/>
<node CREATED="1712878724339" ID="ID_355423762" MODIFIED="1712878743580" TEXT="allerdings erst nach Korrektur systematischer Einfl&#xfc;sse">
<node CREATED="1712878745848" ID="ID_1272865652" MODIFIED="1712878932404" TEXT="die Test-Last l&#xe4;uft langsamer als kalibriert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Und zwar unabh&#228;ngig davon, ob die Kalibrierung mit kurzen oder langen Zeiten und single- oder multithreaded erfolgte. Die Abweichtung tritt nur im realen Last-Kontext auf, und ist (visuell. den Diagrammen nach zu urteilen) korreliert mit dem Grad an contention und irregularit&#228;t im Ablauf. Tendentiell nimmt sie f&#252;r l&#228;ngere Testl&#228;ufe ab, konvergiert aber &#8212; auch f&#252;r ganz gro&#223;e Lasten und sehr lange L&#228;ufe &#8212; typischerweise zu einem Offset von ~ +1ms
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712878761558" ID="ID_398679192" MODIFIED="1712879104846" TEXT="es gibt eine relativ stabile Abweichung der effektiven Concurrency gg&#xfc; der Heuristik">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Und das ist schon aus rein-logischen Gr&#252;nden so zu erwarten. Bewu&#223;t habe ich beim Aufstellen der Heuristig f&#252;r das Test-Schedule auf jedwede <i>optimale Anordnung der Rechenwege</i>&#160;verzichtet (kein Box-stacking problem l&#246;sen!). Hinzu kommen die tats&#228;chlichen Beschr&#228;nkungen des Worker-Pools. Daraus ergibt sich eine charakteristische Abweichung zwischen einem theoretisch berechneten concurrency-speed-up (wie er in's Schedule eingerechnet ist) und der <b>empirisch</b>&#160;beobachteten durchschnittlichen concurrency. Das wird als <b>Form-Faktor</b>&#160;gedeutet.
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1712879109979" ID="ID_492630552" MODIFIED="1712879132252" TEXT="&#x27f9; Zeit und Ablauf-Steuerung arbeitet effizient"/>
</node>
<node CREATED="1712879138799" ID="ID_718120993" MODIFIED="1712879147226" TEXT="Load Peak / Param Range">
<node CREATED="1712879148222" ID="ID_461458634" MODIFIED="1712879195546" TEXT="eindeutig linearer Zusammenhang">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
zwischen Load-Size und Laufzeit zum kompletten Abarbeiten der erzeugten Lastspitze
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712879196455" ID="ID_1128294894" MODIFIED="1712879210685" TEXT="best&#xe4;gitt &#xfc;ber einen weiten Parameter-Bereich"/>
<node CREATED="1712879211454" ID="ID_686196534" MODIFIED="1712879234055" TEXT="f&#xfc;r gr&#xf6;&#xdf;ere Test-L&#xe4;ngen: sehr hohe Korrelationen"/>
<node CREATED="1712879236775" ID="ID_787579644" MODIFIED="1712879295485">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Gradient <b>sehr nah</b>&#160;am zu erwartenden Wert
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
wenn man die empirisch beobachtete, effektive Concurrency und reale durchschnittliche Job-Zeit ansetzt
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1712879303773" ID="ID_1548672424" MODIFIED="1712879504409" TEXT="Sockel-Offset: 5ms + spin-up/down-Effekt">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
das bedeutet: der tats&#228;chlich beobachtete Sockel h&#228;ngt von der L&#228;nge der Job-Last und der Concurrency ab: Grunds&#228;tzlich mu&#223; man einmal die ganze Worker-Pool-size zu Beginn und am Ende aufschlagen &#8212; mit reduzierter Concurrency. Das ergibt sich bereits aus einer rein logischen &#220;berlegung: &#187;Voll-Last&#171; kann erst konstituiert werden, wenn <i>der erste Worker sich den zweiten Job holt. </i>Analog beginnt der spin-down, wenn der erste worker <i>idle f&#228;llt.</i>
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1712879511487" ID="ID_630980319" MODIFIED="1712879529007" TEXT="drastische Performance-Degradierung f&#xfc;r Jobs &lt; 1ms">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1712879534389" ID="ID_1438533212" MODIFIED="1712879543598" TEXT="generell: reagiert sehr empfindlich auf Contention">
<node CREATED="1712879550830" ID="ID_572134788" MODIFIED="1712879562788" TEXT="aber: die Contention-Mitigation erweist sich als wirksam"/>
<node CREATED="1712879564400" ID="ID_23008164" MODIFIED="1712879583145" TEXT="Anpassung an neue Lastsituation erfolgt innerhalb weniger Milliseknden"/>
</node>
<node COLOR="#338800" CREATED="1712879589420" ID="ID_371690436" LINK="#ID_219061374" MODIFIED="1712879606395" TEXT="Dokumentiert im TiddlyWiki">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1705002884235" ID="ID_669579747" MODIFIED="1705002898912" TEXT="Konsequenzen">
<icon BUILTIN="bell"/>
@ -116922,6 +117023,10 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1712850458971" ID="ID_1498250878" LINK="../doc/devel/dump/2024-04-08.Scheduler-LoadTest/index.txt" MODIFIED="1712850511023" TEXT="2024-04-08: Scheduler Load Testing">
<node CREATED="1712850525805" ID="ID_814177708" MODIFIED="1712850535543" TEXT="Load peak measurement series"/>
<node CREATED="1712850542843" ID="ID_68188280" MODIFIED="1712850556331" TEXT="Gnuplot scripts and run dumps"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1702415671495" ID="ID_690521198" MODIFIED="1702416445460" TEXT="Doxygen">
@ -116981,6 +117086,21 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1712595711766" ID="ID_1469323006" MODIFIED="1712595717814" TEXT="SchedulerBehaviour">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1712879618321" ID="ID_1531181397" MODIFIED="1712879620191" TEXT="A synthetic load for performance testing">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1712879626928" ID="ID_1042937198" MODIFIED="1712879636069" TEXT="description of the measurement methods">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1712879642918" ID="ID_45187641" MODIFIED="1712879652384" TEXT="Observations regarding Breaking Point and Stress">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1712879670330" ID="ID_1304308439" MODIFIED="1712879687631" TEXT="Obervations in staturated working state">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1712879690327" ID="ID_1827910418" MODIFIED="1712879714487" TEXT="emulated extended stable schedule">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1702417945750" ID="ID_219061374" MODIFIED="1704287870162" TEXT="SchedulerTest">
<icon BUILTIN="pencil"/>
@ -124690,7 +124810,18 @@ unsigned int ThreadIdAsInt = *static_cast&lt;unsigned int*&gt;(static_cast&lt;vo
</node>
<node CREATED="1700105113377" ID="ID_1656490787" LINK="https://graphviz.org/faq/#FaqLarger" MODIFIED="1700105197251" TEXT="Gr&#xf6;&#xdf;en">
<node CREATED="1700105117995" ID="ID_1615340120" LINK="https://graphviz.org/docs/attrs/size/" MODIFIED="1700105130514" TEXT="size">
<node CREATED="1700105132262" ID="ID_343226797" MODIFIED="1700105138969" TEXT="maximalgr&#xe4;&#xdf;e in Inches"/>
<node CREATED="1700105132262" ID="ID_343226797" MODIFIED="1700105138969" TEXT="Maximalgr&#xf6;&#xdf;e in Inches">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
size="10!"<br/>
ratio="expand"
</p>
<p>Beachte das Ausrufezeichen; auch <tt>expand</tt> ist wichtig, um die Apsect-Ratio zu erhalten. Wenn man stark verkleinert, sollte man ein generisches node-Template hinzufügen mit <tt>node[fontsize="16"]</tt>... dann Rendern mit -Tsvg</p>
</body>
</html></richcontent>
</node>
<node CREATED="1700105139702" ID="ID_1994987569" MODIFIED="1700105152857" TEXT="size! : dann verbindliche Gr&#xf6;&#xdf;e"/>
<node CREATED="1700105153462" ID="ID_1167641306" MODIFIED="1700105161830" TEXT="Wechselwirkung mit ratio"/>
</node>