removed old docs

This commit is contained in:
Jonathan Shook 2020-03-13 01:09:10 -05:00
parent 4a5d72fe87
commit f7e255a459
26 changed files with 0 additions and 3946 deletions

View File

@ -1,61 +0,0 @@
@startuml
scale 600 width
[*] --> TrackedOp : track()
TrackedOp: setCycle(cycle)
TrackedOp: setWaitTime(delay)
TrackedOp: start()
TrackedOp:
TrackedOp: setData(data)
TrackedOp: getData()
TrackedOp: skip(reason)
State InProtocol {
TrackedOp --> StartedOp : start()
StartedOp: getCycle()
StartedOp: setData(data)
StartedOp: getData()
StartedOp: succeed(status)
StartedOp:
StartedOp: retry()
StartedOp: fail(status)
StartedOp: getStartedAtNanos()
StartedOp: getCurrentServiceTimeNanos()
StartedOp: getCurrentResponseTimeNanos()
StartedOp -> StartedOp : retry()
StartedOp --> SucceededOp : succeed()
SucceededOp: getCycle()
SucceededOp: getResult()
SucceededOp: getTries()
SucceededOp: getStartedAtNanos()
SucceededOp: getServiceTimeNanos()
SucceededOp: getResponseTimeNanos()
StartedOp --> FailedOp: fail()
FailedOp: getCycle()
FailedOp: getResult()
FailedOp: getTries()
FailedOp: getStartedAtNanos()
FailedOp: getServiceTimeNanos()
FailedOp: getResponseTimeNanos()
}
TrackedOp --> SkippedOp : skip()
SkippedOp: getSkippedReason()
SkippedOp:
SkippedOp: getCycle()
SkippedOp: getResult()
SkippedOp: getStartedAtNanos()
SkippedOp: getData()
SkippedOp: setData(data)
SucceededOp --> [*]
FailedOp --> [*]
SkippedOp --> [*]
@enduml

View File

@ -1,29 +0,0 @@
@startuml
Participant Input as i
Participant Thread as t
Participant Action as a
== acquire input ==
group TIMER read-input
t -> i : get segment(stride)
activate i
t <- i : <cycle segment>[stride]
deactivate i
end
group TIMER strides
loop over cycle values in segment
group TIMER cycle & phase
t -> a : runCycle(cycle)
activate a
t <- a : result
deactivate a
end
end
end # strides
@enduml

View File

@ -1,183 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentScriptType="application/ecmascript" contentStyleType="text/css" height="687.6px" preserveAspectRatio="none"
style="width:919px;height:687px;" version="1.1" viewBox="0 0 919 687" width="919.8px" zoomAndPan="magnify">
<defs>
<filter height="300%" id="f1a0022fu680ij" width="300%" x="-1" y="-1">
<feGaussianBlur result="blurOut" stdDeviation="3.5999999046325684"/>
<feColorMatrix in="blurOut" result="blurOut2" type="matrix"
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
<feOffset dx="7.199999809265137" dy="7.199999809265137" in="blurOut2" result="blurOut3"/>
<feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/>
</filter>
</defs>
<g>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="52.4391"
style="stroke: #A80036; stroke-width: 1.7999999523162842;" width="18" x="80.1" y="245.8125"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="52.4391"
style="stroke: #A80036; stroke-width: 1.7999999523162842;" width="18" x="639.9" y="493.6078"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="135.7172"
style="stroke: #000000; stroke-width: 3.5999999046325684;" width="486" x="23.4" y="177.1734"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="247.7953"
style="stroke: #000000; stroke-width: 3.5999999046325684;" width="563.4" x="316.8" y="338.0906"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="191.7562"
style="stroke: #000000; stroke-width: 3.5999999046325684;" width="527.4" x="334.8" y="381.5297"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="135.7172"
style="stroke: #000000; stroke-width: 3.5999999046325684;" width="369" x="352.8" y="424.9687"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842; stroke-dasharray: 5.0,5.0;" x1="88.2" x2="88.2"
y1="68.9344" y2="616.4859"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842; stroke-dasharray: 5.0,5.0;" x1="430.2"
x2="430.2" y1="68.9344" y2="616.4859"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842; stroke-dasharray: 5.0,5.0;" x1="648" x2="648"
y1="68.9344" y2="616.4859"/>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="88.2" x="41.4" y="5.4"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="63"
x="54" y="41.3912">Input
</text>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="88.2" x="41.4" y="614.6859"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="63"
x="54" y="650.6771">Input
</text>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="113.4" x="370.8" y="5.4"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="88.2"
x="383.4" y="41.3912">Thread
</text>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="113.4" x="370.8" y="614.6859"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="88.2"
x="383.4" y="650.6771">Thread
</text>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="102.6" x="594" y="5.4"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="77.4"
x="606.6" y="41.3912">Action
</text>
<rect fill="#FEFECE" filter="url(#f1a0022fu680ij)" height="54.5344"
style="stroke: #A80036; stroke-width: 2.6999999284744263;" width="102.6" x="594" y="614.6859"/>
<text fill="#000000" font-family="sans-serif" font-size="25.2" lengthAdjust="spacingAndGlyphs" textLength="77.4"
x="606.6" y="650.6771">Action
</text>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="52.4391"
style="stroke: #A80036; stroke-width: 1.7999999523162842;" width="18" x="80.1" y="245.8125"/>
<rect fill="#FFFFFF" filter="url(#f1a0022fu680ij)" height="52.4391"
style="stroke: #A80036; stroke-width: 1.7999999523162842;" width="18" x="639.9" y="493.6078"/>
<rect fill="#EEEEEE" filter="url(#f1a0022fu680ij)" height="5.4"
style="stroke: #EEEEEE; stroke-width: 1.7999999523162842;" width="892.8" x="5.4" y="123.9539"/>
<line style="stroke: #000000; stroke-width: 1.7999999523162842;" x1="5.4" x2="898.2" y1="123.9539"
y2="123.9539"/>
<line style="stroke: #000000; stroke-width: 1.7999999523162842;" x1="5.4" x2="898.2" y1="129.3539"
y2="129.3539"/>
<rect fill="#EEEEEE" filter="url(#f1a0022fu680ij)" height="41.6391"
style="stroke: #000000; stroke-width: 3.5999999046325684;" width="210.6" x="346.5" y="104.9344"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="176.4" x="357.3" y="133.8548">acquire input
</text>
<rect fill="none" height="135.7172" style="stroke: #000000; stroke-width: 3.5999999046325684;" width="486"
x="23.4" y="177.1734"/>
<polygon fill="#EEEEEE"
points="23.4,177.1734,331.2,177.1734,331.2,189.7734,313.2,207.7734,23.4,207.7734,23.4,177.1734"
style="stroke: #000000; stroke-width: 3.5999999046325684;"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="226.8" x="50.4" y="200.6938">TIMER read-input
</text>
<polygon fill="#A80036" points="117.9,238.6125,99.9,245.8125,117.9,253.0125,110.7,245.8125"
style="stroke: #A80036; stroke-width: 1.7999999523162842;"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842;" x1="107.1" x2="429.3" y1="245.8125"
y2="245.8125"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" lengthAdjust="spacingAndGlyphs"
textLength="230.4" x="128.7" y="236.9329">get segment(stride)
</text>
<polygon fill="#A80036" points="409.5,291.0516,427.5,298.2516,409.5,305.4516,416.7,298.2516"
style="stroke: #A80036; stroke-width: 1.7999999523162842;"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842;" x1="89.1" x2="420.3" y1="298.2516"
y2="298.2516"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" lengthAdjust="spacingAndGlyphs"
textLength="289.8" x="101.7" y="289.372">&lt;cycle segment&gt;[stride]
</text>
<rect fill="none" height="247.7953" style="stroke: #000000; stroke-width: 3.5999999046325684;" width="563.4"
x="316.8" y="338.0906"/>
<polygon fill="#EEEEEE"
points="316.8,338.0906,577.8,338.0906,577.8,350.6906,559.8,368.6906,316.8,368.6906,316.8,338.0906"
style="stroke: #000000; stroke-width: 3.5999999046325684;"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="180" x="343.8" y="361.611">TIMER strides
</text>
<rect fill="none" height="191.7562" style="stroke: #000000; stroke-width: 3.5999999046325684;" width="527.4"
x="334.8" y="381.5297"/>
<polygon fill="#EEEEEE"
points="334.8,381.5297,473.4,381.5297,473.4,394.1297,455.4,412.1297,334.8,412.1297,334.8,381.5297"
style="stroke: #000000; stroke-width: 3.5999999046325684;"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="57.6" x="361.8" y="405.0501">loop
</text>
<text fill="#000000" font-family="sans-serif" font-size="19.8" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="352.8" x="500.4" y="403.5085">[over cycle values in segment]
</text>
<rect fill="none" height="135.7172" style="stroke: #000000; stroke-width: 3.5999999046325684;" width="369"
x="352.8" y="424.9687"/>
<polygon fill="#EEEEEE"
points="352.8,424.9687,707.4,424.9687,707.4,437.5687,689.4,455.5687,352.8,455.5687,352.8,424.9687"
style="stroke: #000000; stroke-width: 3.5999999046325684;"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" font-weight="bold"
lengthAdjust="spacingAndGlyphs" textLength="273.6" x="379.8" y="448.4891">TIMER cycle &amp; phase
</text>
<polygon fill="#A80036" points="618.3,486.4078,636.3,493.6078,618.3,500.8078,625.5,493.6078"
style="stroke: #A80036; stroke-width: 1.7999999523162842;"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842;" x1="431.1" x2="629.1" y1="493.6078"
y2="493.6078"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" lengthAdjust="spacingAndGlyphs"
textLength="174.6" x="443.7" y="484.7282">runCycle(cycle)
</text>
<polygon fill="#A80036" points="450.9,538.8469,432.9,546.0469,450.9,553.2469,443.7,546.0469"
style="stroke: #A80036; stroke-width: 1.7999999523162842;"/>
<line style="stroke: #A80036; stroke-width: 1.7999999523162842;" x1="440.1" x2="647.1" y1="546.0469"
y2="546.0469"/>
<text fill="#000000" font-family="sans-serif" font-size="23.4" lengthAdjust="spacingAndGlyphs" textLength="64.8"
x="461.7" y="537.1673">result
</text><!--
@startuml
Participant Input as i
Participant Thread as t
Participant Action as a
== acquire input ==
group TIMER read-input
t -> i : get segment(stride)
activate i
t <- i : <cycle segment>[stride]
deactivate i
end
group TIMER strides
loop over cycle values in segment
group TIMER cycle & phase
t -> a : runCycle(cycle)
activate a
t <- a : result
deactivate a
end
end
end # strides
@enduml
PlantUML version 1.2017.15(Mon Jul 03 11:45:34 CDT 2017)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 1.8.0_152-release-1024-b11
Operating System: Linux
OS Version: 4.10.0-42-generic
Default Encoding: UTF-8
Language: en
Country: US
-->
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,42 +0,0 @@
@startuml
Participant Input as i
Participant Thread as t
Participant Action as a
== acquire input data ==
group TIMER read-input
t -> i : get segment(stride)
activate i
t <- i : <cycle segment>[stride]
deactivate i
end
group TIMER strides
loop over cycle values in segment
group TIMER cycle
group TIMER phase
t -> a : runCycle(cycle)
activate a
t <- a : result
deactivate a
end
== additional phases ==
group TIMER phase
loop until phases complete
t -> a : runPhase(cycle)
activate a
t <- a : result
deactivate a
end
end
end
end
end # strides
@enduml

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,38 +0,0 @@
@startuml
Participant user as u
Participant client as c
Participant resource as cr
Participant transport as t
Participant server as s
group responsetime
u -> c: request
activate c #Black
group waittime
c -> cr: wait
activate cr #Yellow
note left of cr: client\nwaits\nfor\nresource
cr -> c:
deactivate cr
end
group servicetime
c ->> t: request
activate t #Red
group servertime
t ->> s: request
deactivate t
activate s #Blue
note right of s: server\nprocesses\nrequest
s ->> t: response
deactivate s
activate t #Red
end
t ->> c: response
deactivate t
end
c -> u: response
deactivate c
end
@enduml

View File

@ -1,30 +0,0 @@
@startuml
Participant user as u
Participant client as c
Participant resource as cr
Participant server as s
group responsetime
u -> c: request
activate c #Black
' note left of c: user\nwaits\nfor\nresponse
group waittime
c -> cr: wait
activate cr #Yellow
note right of cr: client\nwaits\nfor\nresource
cr -> c:
deactivate cr
end
group servicetime
c ->> s: request
activate s #Blue
note right of s: server\nprocesses\nrequest
s ->> c: response
deactivate s
end
c -> u: response
deactivate c
end
@enduml

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,175 +0,0 @@
## RateLimiter Design
The nosqlbench rate limiter is based on a hybrid design, combining ideas
from well-known algorithms with a heavy dose of mechanical sympathy. The
resulting implementation provides the following:
1. A basic design that can be explained in one page (this page!)
2. High throughput, compared to other rate limiters tested.
3. Graceful degradation with increasing concurrency.
4. Clearly defined behavioral semantics.
5. Efficient burst capability, for tunable catch-up rates.
6. Efficient calculation of wait time.
## Parameters
**op rate** - In simplest terms, users simply need to configure the *op rate*.
For example, `cyclerate=12000` specifies an op rate of 12000 per second.
**burst rate** - Additionally, users may specify a burst rate which can be used
to recover unused time when a client is able to go faster than the strict
limit. The burst rate is multiplied by the _op rate_ to arrive at the maximum
rate when wait time is available to recover. For example, `cyclerate=12000,1.1`
specifies that a client may operate at 12000 ops/s _when it is caught up_,
while allowing it to go at a rate of up to 13200 ops/s _when it is behind
schedule_.
## Design Principles
The core design of the rate limiter is based on the [token
bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm as established in
the telecom industry for rate metering. Additional refinements have been
added to allow for flexible and reliable use on non-realtime systems.
The unit of scheduling used in this design is the token, corresponding directly
to a nanosecond of time. The schedule time that is made available to callers is
stored in a pool of tokens which is set to a configured size. The size of the
token pool determines how many grants are allowed to be dispatched before the
next one is forced to wait for available tokens.
At some regular frequency, a filler thread adds tokens (nanoseconds of time to
be distributed to waiting ops) to the pool. The callers which are waiting for
these tokens consume a number of tokens serially. If the pool does not contain
the requested number of tokens, then the caller is blocked using basic
synchronization primitives. When the pool is filled any blocked callers are
unblocked.
## Design Details
In fact, there are three pools. The _active_ pool, the _bursting_ pool, and the
_waiting_ pool. The active pool has a limited size based on the number of
operations that are allowed to be granted concurrently.
The bursting pool is sized according to the relative burst rate and the size of the
active pool. For example, with an op rate of 1000 ops/s and a burst rate of 1.1,
the active pool can be sized to 1E9 nanos (one second of nanos), and the burst
pool can be sized to 1E8 (1/10 of that), thus yielding a combined pool size of
1E9 + 1E8, or 1100000000 ns.
The waiting pool is where all extra tokens are held in reserve. It is unlimited
except by the size of a long value. The size of the waiting pool is a direct
measure of wait time in nanoseconds.
Within the pools, no tokens are created nor destroyed. They are added by the
filler based on the passage of time, and consumed by callers when they become
available. In between these operations, the net sum of tokens is preserved.
The filler thread adds tokens to the pool according to the system real-time
clock, at some estimated but unreliable interval. The frequency of filling is set
high enough to give a reliable perception of time passing smoothly, but low
enough to avoid wasting too much thread time in calling overhead. (It is set to
1K/s by default). Each time filling occurs, the real-time clock is
check-pointed, and the time delta is fed into the pool filling logic as
explained below.
![RateLimiterDesign](hybrid_ratelimiter_sketch.png)
During pool filling, the following steps are taken:
1) tokens are added to the active pool until it is full.
2) Any extra tokens are added to the waiting pool.
3) If the waiting pool has any tokens, and there is room in the bursting pool,
some tokens are moved from the waiting pool to the bursting pool.
When a caller asks for a number of tokens, the combined total from the active
and burst pools is available to that caller.
## Bursting Logic
Tokens in the waiting pool represent time that has not been claimed by a caller.
Tokens accumulate in the waiting pool as a side-effect of continuous filling
outpacing continuous draining, thus creating a backlog of operations. The pool
sizes determine both the maximum instantaneously available operations as well as
the rate at which unclaimed time can be back-filled back into the active or
burst pools.
### Normalizing for Jitter
Since it is not possible to schedule the filler thread to trigger on a strict
and reliable schedule (as in a real-time system), the method of moving tokens
from the waiting pool to the bursting pool must account for differences in
timing. Thus, tokens which are activated for bursting are scaled according to
the amount of time added in the last fill, relative to the maximum active pool.
This means that a full pool fill will allow a full burst pool fill, presuming
wait time is positive by that amount. It also means that the same effect can be
achieved by ten consecutive fills of a tenth the time each. In effect, bursting
is normalized to the passage of time and the burst rate, with a maximum cap
imposed when operations are unclaimed by callers.
## Mechanical Trade-offs
In this implementation, it is relatively easy to explain how accuracy and
performance trade-off. They are competing concerns. Consider these two extremes
of an isochronous configuration:
### Slow Isochronous
For example, the rate limiter could be configured for strict isochronous
behavior by setting the active pool size to *one* op of nanos and the burst rate
to 1.0, thus disabling bursting. If the op rate requested is 1 op/s, this
configuration will work relatively well, although *any* caller which doesn't
show up (or isn't already waiting) when the tokens become available will incur a
waittime penalty. The odds of this are relatively low for a high-velocity
client.
### Fast Isochronous
However, if the op rate for this type of configuration is set to 1E8 operations
per second, then the filler thread will be adding 100 ops worth of time when
there is only *one* op worth of active pool space. This is due to the fact that
filling can only occur at a maximal frequency which has been set to 1K fills/s
on average. That will create artificial wait time, since the token consumers and
producers would not have enough pool space to hold the tokens needed during
fill. It is not possible on most systems to fill the pool at arbitrarily high
fill frequencies. Thus, it is important for users to understand the limits of
the machinery when using high rates. In most scenarios, these limits will not be
onerous.
### Boundary Rules
Taking these effects into account, the default configuration makes some
reasonable trade-offs according to the rules below. These rules should work well
for most rates below 50M ops/s. The net effect of these rules is to increase
work bulking within the token pools as rates go higher.
Trying to go above 50M ops/s while also forcing isochronous behavior will result
in artificial wait-time. For this reason, the pool size itself is not
user-configurable at this time.
- The pool size will always be at least as big as two ops.
This rule ensures that there is adequate buffer
space for tokens when callers are accessing the token pools near the rate of
the filler thread. If this were not ensured, then artificial wait time would
be injected due to actual overflow error.
- The pool size will always be at least as big as 1E6 nanos, or 1/1000 of a second.
This rule ensures that the filler thread has a reasonably attainable
update frequency which will prevent underflow in the active or burst pools.
- The number of ops that can fit in the pool will determine how many ops
can be dispatched between fills. For example, an op rate of 1E6 will mean
that up to 1000 ops worth of tokens may be present between fills, and
up to 1000 ops may be allowed to start at any time before the next fill.
In practical terms, this means that rates slower than 1K ops/S will have their
strictness controlled by the burst rate in general, and rates faster than 1K
ops/S will automatically include some op bulking between fills.
## History
A CAS-oriented method which compensated for RTC calling overhead was used
previously. This method afforded very high performance, but it was difficult to
reason about.
This implementation replaces that previous version. Basic synchronization
primitives (implicit locking via synchronized methods) performed surprisingly
well -- well enough to discard the complexity of the previous implementation.
Further, this version is much easier to study and reason about.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,578 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (unknown)"
sodipodi:docname="hybrid_ratelimiter_sketch.svg"
inkscape:export-filename="/home/jshook/IdeaProjects/nosqlbench/docs/hybrid_ratelimiter_sketch.png"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001">
<defs
id="defs2">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 105 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="297 : 105 : 1"
inkscape:persp3d-origin="148.5 : 70 : 1"
id="perspective1025" />
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker2159"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path2157"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#ededed;stroke-width:1pt;stroke-opacity:1;fill:#ededed;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker2131"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#ededed;stroke-width:1pt;stroke-opacity:1;fill:#ededed;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2129" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker2087"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path2085"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#969696;stroke-width:1pt;stroke-opacity:1;fill:#969696;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker2083"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#969696;stroke-width:1pt;stroke-opacity:1;fill:#969696;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path2081" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker1640"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path1638"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker1501"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path1499"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1475"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1473" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1467"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1465" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker1435"
style="overflow:visible;"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1433"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker1431"
style="overflow:visible;"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1171"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker4804"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path4802"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#7d7d7d;stroke-width:1pt;stroke-opacity:1;fill:#7d7d7d;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path4529"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#7d7d7d;stroke-width:1pt;stroke-opacity:1;fill:#7d7d7d;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1431-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path1171-0"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1435-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path1433-3"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1475-7"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
inkscape:connector-curvature="0"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1473-2" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1640-5"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path1638-1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="382.87291"
inkscape:cy="497.31295"
inkscape:document-units="mm"
inkscape:current-layer="layer3"
showgrid="true"
inkscape:window-width="3840"
inkscape:window-height="1965"
inkscape:window-x="0"
inkscape:window-y="2160"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid815"
dotted="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="dividers"
style="display:none">
<path
style="display:inline;fill:none;stroke:#ededed;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 110.06667,74.533333 V 104.16667"
id="path2056"
inkscape:connector-curvature="0"
inkscape:export-xdpi="90.650002"
inkscape:export-ydpi="90.650002" />
<path
style="display:inline;fill:none;stroke:#ededed;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 101.6,74.533333 V 104.16667"
id="path2056-0"
inkscape:connector-curvature="0"
inkscape:export-xdpi="90.650002"
inkscape:export-ydpi="90.650002" />
<path
style="display:inline;fill:none;stroke:#ededed;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 67.733337,74.533333 V 104.16667"
id="path2056-4"
inkscape:connector-curvature="0"
inkscape:export-xdpi="90.650002"
inkscape:export-ydpi="90.650002" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="braces"
style="display:inline">
<rect
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.02645833;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1104"
width="79.375"
height="29.104174"
x="55.5625"
y="75.062492" />
<path
sodipodi:nodetypes="ccccccccccccccccccccc"
inkscape:connector-curvature="0"
id="path4994-6-0"
d="m 105.83333,91.443669 -0.10942,-0.38556 c -0.0398,-0.611433 -0.21108,-0.916913 -0.51363,-0.916913 l -2.4042,0.02088 c -0.36621,0 -0.65803,-0.253876 -0.87563,-0.761074 -0.22026,-0.50027 -0.33045,-1.22274 -0.33045,-2.167673 0.10032,0.0014 0.14342,0.479619 0.14342,0.479619 l 0.0397,0.385576 c 0.11676,0.799027 0.42061,1.209085 0.91155,1.229929 l 2.28875,0.08334 c 0.34568,0.01924 0.72562,0.473633 0.84998,1.150679 0.1244,-0.6769 0.50408,-1.131532 0.84972,-1.150679 l 2.28875,-0.08334 c 0.49094,-0.02088 0.79479,-0.430902 0.91155,-1.229929 l 0.0397,-0.385576 c 0,0 0.0431,-0.478151 0.14342,-0.479619 0,0.944933 -0.11019,1.667403 -0.33045,2.167669 -0.21761,0.507198 -0.50942,0.761074 -0.87563,0.761074 l -2.40421,-0.02088 c -0.30254,0 -0.47382,0.30548 -0.51363,0.916913 -0.10942,0.38556 -0.10942,0.38556 -0.10942,0.38556 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.08687019px;line-height:1.25;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol;letter-spacing:10.08199883px;word-spacing:8.54225349px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
sodipodi:nodetypes="cccccccccccccccccccccccccc"
inkscape:connector-curvature="0"
id="path4994-6-0-4-0"
d="m 84.66671,91.466666 -0.109422,-0.387697 c -0.03981,-0.614826 -0.211084,-0.921986 -0.513626,-0.921986 l -1.318321,0.01142 -13.785928,0.0098 c -0.36621,0 -0.658025,-0.255279 -0.875631,-0.765298 -0.22026,-0.503039 -0.330448,-1.229504 -0.330448,-2.179673 0.100315,0.0014 0.143415,0.482277 0.143415,0.482277 l 0.03974,0.387713 c 0.116761,0.803447 0.420616,1.215788 0.911549,1.236746 l 13.888567,0.04338 1.100229,0.04028 c 0.345685,0.01941 0.725625,0.476259 0.849979,1.157057 0.124404,-0.680651 0.504082,-1.137811 0.849718,-1.157057 l 1.096705,-0.04012 13.892054,-0.04355 c 0.49093,-0.02104 0.79478,-0.433299 0.91155,-1.236746 l 0.0397,-0.387713 c 0,0 0.0431,-0.480793 0.14342,-0.482277 0,0.950169 -0.11019,1.676634 -0.33045,2.179673 -0.2176,0.510019 -0.50942,0.765298 -0.87563,0.765298 l -13.7631,-0.0098 -1.341102,-0.01142 c -0.302541,0 -0.473827,0.30716 -0.513632,0.921986 l -0.109422,0.387697 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.08687019px;line-height:1.25;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol;letter-spacing:10.08199883px;word-spacing:8.54225349px;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
sodipodi:nodetypes="ccccccccccccscccscccc"
inkscape:connector-curvature="0"
id="path4994-6-0-0"
d="m 114.30004,91.443669 -0.10942,-0.38556 c -0.0398,-0.611433 -0.21109,-0.916913 -0.51363,-0.916913 l -2.4042,0.02088 c -0.36621,0 -0.65803,-0.253876 -0.87563,-0.761074 -0.22026,-0.500266 -0.33045,-1.222736 -0.33045,-2.167669 0.10031,0.0014 0.14341,0.479619 0.14341,0.479619 l 0.0397,0.385576 c 0.11676,0.799027 0.42061,1.209085 0.91155,1.229929 l 2.28875,0.08334 c 0.34568,0.01924 0.72562,0.473633 0.84998,1.150679 0.1244,-0.6769 0.50408,-1.131532 0.84971,-1.150679 0,0 1.5263,-0.04501 2.28876,-0.08334 1.02037,-0.05121 14.26874,-0.418154 14.26874,-0.418154 l 1.64269,0.89159 -1.66189,0.849203 c 0,0 -13.46931,-0.440515 -14.3609,-0.48902 -0.80025,-0.04355 -2.40421,-0.02088 -2.40421,-0.02088 -0.30254,0 -0.47382,0.30548 -0.51363,0.916913 L 114.3,91.443669 Z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.08687019px;line-height:1.25;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol;letter-spacing:10.08199883px;word-spacing:8.54225349px;display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
d="m 131.01288,90.188575 q -0.0482,-0.05595 -0.12433,-0.186487 -0.10412,0.186487 -0.19581,0.268851 -0.11499,0.09946 -0.29371,0.09946 -0.2098,0 -0.3481,-0.156957 -0.14609,-0.164729 -0.14609,-0.436687 0,-0.261081 0.14609,-0.438241 0.13053,-0.156961 0.35121,-0.156961 0.11344,0 0.19736,0.04662 0.0979,0.05129 0.16473,0.139865 0.0622,0.07926 0.12432,0.186483 0.10412,-0.186483 0.19581,-0.268847 0.11501,-0.09946 0.29372,-0.09946 0.2098,0 0.34811,0.156958 0.14608,0.164729 0.14608,0.436686 0,0.261082 -0.14608,0.438242 -0.13054,0.156957 -0.35122,0.156957 -0.11344,0 -0.19737,-0.04662 -0.0839,-0.04196 -0.16472,-0.139864 z m -0.63094,-0.02176 q 0.25642,0 0.41026,-0.372972 -0.19736,-0.407159 -0.41026,-0.407159 -0.15541,0 -0.23466,0.111893 -0.0855,0.119661 -0.0855,0.278174 0,0.174053 0.0855,0.281281 0.087,0.108783 0.23466,0.108783 z m 1.01324,-0.777021 q -0.23156,0 -0.41028,0.372971 0.19581,0.40716 0.41028,0.40716 0.1554,0 0.23466,-0.111893 0.0855,-0.119662 0.0855,-0.278174 0,-0.174054 -0.0855,-0.281281 -0.087,-0.108783 -0.23466,-0.108783 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;vector-effect:none;fill:#050023;fill-opacity:1;stroke:none;stroke-width:0.72470975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path1109"
inkscape:connector-curvature="0"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<text
id="text1114"
y="93.535225"
x="80.366043"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-size:2.82222199px;stroke-width:0.26458332"
y="93.535225"
x="80.366043"
id="tspan1112"
sodipodi:role="line">active</tspan></text>
<text
id="text1118"
y="93.233032"
x="102.11585"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-size:2.82222199px;stroke-width:0.26458332"
y="93.233032"
x="102.11585"
id="tspan1116"
sodipodi:role="line">burst</tspan></text>
<text
id="text1122"
y="93.195877"
x="111.30794"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-size:2.82222199px;stroke-width:0.26458332"
y="93.195877"
x="111.30794"
id="tspan1120"
sodipodi:role="line">wait</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker1431);marker-end:url(#marker1435)"
d="m 67.733333,78.766667 h 6.330709 c 1.0669,0.04027 2.110809,0.928831 2.135958,2.126243 v 4.223757"
id="path1166"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1475)"
d="m 74.083333,78.766667 c 2.116667,0 3.006299,0.06907 4.313132,0.04208 2.036868,-0.04208 21.782585,-0.238843 35.903535,-0.04208 1.21139,0.02829 2.06952,1.009 2.11667,2.116663 v 4.233339"
id="path1437"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccc"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1501)"
d="m 112.18333,89.35 v -6.352517 c 0,-2.11415 -4.23333,-2.11415 -4.23333,-0.0943 v 4.33015"
id="path1477"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
inkscape:connector-curvature="0"
id="path1507"
style="font-style:normal;font-weight:normal;font-size:medium;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1089268"
d="m 58.538652,77.608182 -1.021989,2.044587 h 2.04647 z m -1.704976,2.349641 1.420813,-2.710985 h 0.570818 l 1.418321,2.710985 z"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<path
inkscape:connector-curvature="0"
id="path1509"
style="font-style:normal;font-weight:normal;font-size:medium;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08632495"
d="m 59.14259,79.943673 v -0.328037 h 0.248615 v -0.587008 l 0.176103,-0.03798 q 0.210634,-0.04489 0.338395,-0.162291 0.131229,-0.117407 0.165744,-0.390189 0.04144,-0.328033 0.196821,-0.580103 0.155385,-0.255522 0.404002,-0.400548 0.252067,-0.145021 0.57665,-0.145021 0.321128,0 0.569745,0.145021 0.252067,0.14502 0.407452,0.400548 0.15884,0.25207 0.200276,0.580103 0.03452,0.272787 0.162287,0.390189 0.131214,0.117406 0.341848,0.162291 l 0.176104,0.03798 v 0.587008 h 0.248619 v 0.328037 H 62.143245 V 79.805556 H 60.35114 v 0.138117 z m 2.10633,-0.618087 q 0.186462,0 0.352205,-0.06905 0.165745,-0.07252 0.290053,-0.196822 0.12431,-0.12431 0.193369,-0.290053 0.07252,-0.165742 0.07252,-0.352205 0,-0.186464 -0.07252,-0.352205 -0.06905,-0.165744 -0.193369,-0.290052 -0.12431,-0.12431 -0.290053,-0.193368 -0.165743,-0.07252 -0.352205,-0.07252 -0.186463,0 -0.352207,0.07252 -0.165743,0.06905 -0.29005,0.193368 -0.12431,0.12431 -0.196821,0.290052 -0.06905,0.165741 -0.06905,0.352205 0,0.186463 0.06905,0.352205 0.07252,0.165745 0.196821,0.290053 0.12431,0.12431 0.29005,0.196822 0.165744,0.06905 0.352207,0.06905 z m 0,-0.756206 q -0.06561,0 -0.110503,-0.04489 -0.04489,-0.04489 -0.04489,-0.110502 l -0.334939,-0.196817 0.07252,-0.120859 0.334942,0.189915 0.01032,-0.0034 v -0.690601 h 0.145021 v 0.690601 q 0.03452,0.02071 0.05524,0.05524 0.02416,0.03452 0.02416,0.07941 0,0.06216 -0.04489,0.107036 -0.04489,0.04489 -0.107035,0.04489 z m 0.393642,-0.770019 q -0.02416,0 -0.04489,-0.01727 -0.01726,-0.02073 -0.01726,-0.04144 0,-0.02416 0.01726,-0.04144 0.02073,-0.01726 0.04144,-0.01726 0.02763,0 0.04144,0.02073 0.01728,0.02073 0.01728,0.03799 0,0.02416 -0.01728,0.04144 -0.01724,0.01727 -0.03798,0.01727 z m -0.787285,0 q -0.02073,0 -0.04144,-0.01727 -0.01726,-0.01726 -0.01726,-0.04144 0,-0.02416 0.01726,-0.04144 0.01727,-0.01726 0.04144,-0.01726 0.02416,0 0.04144,0.01726 0.01727,0.01727 0.01727,0.04144 0,0.03452 -0.02416,0.04834 -0.02416,0.01032 -0.03452,0.01032 z m 1.073886,0.286597 q -0.02418,0 -0.04144,-0.01727 -0.01727,-0.01726 -0.01727,-0.04144 0,-0.02416 0.01387,-0.04144 0.01726,-0.02073 0.04489,-0.02073 0.02073,0 0.03798,0.01727 0.01727,0.01727 0.01727,0.04489 0,0.03108 -0.02416,0.04489 -0.02073,0.01387 -0.0311,0.01387 z m -1.360485,0 q -0.02761,0 -0.04489,-0.01727 -0.01387,-0.02073 -0.01387,-0.04144 0,-0.02761 0.01727,-0.04489 0.02073,-0.01727 0.04144,-0.01727 0.02073,0 0.03798,0.01727 0.02073,0.01727 0.02073,0.04489 0,0.02763 -0.01727,0.04489 -0.01726,0.01387 -0.04144,0.01387 z m 0.680242,0.39019 q 0.02418,0 0.04144,-0.01727 0.01727,-0.01727 0.01727,-0.04144 0,-0.02418 -0.01727,-0.04144 -0.01726,-0.01727 -0.04144,-0.01727 -0.02418,0 -0.04144,0.01727 -0.01726,0.01727 -0.01726,0.04144 0,0.02416 0.01726,0.04144 0.01727,0.01727 0.04144,0.01727 z m 0.78383,0 q -0.02418,0 -0.04144,-0.01727 -0.01387,-0.01727 -0.01387,-0.04144 0,-0.02418 0.01387,-0.04144 0.01727,-0.01727 0.04144,-0.01727 0.02418,0 0.04144,0.01727 0.01727,0.01727 0.01727,0.04144 0,0.02416 -0.01727,0.04144 -0.01727,0.01727 -0.04144,0.01727 z m -1.567662,0 q -0.02763,0 -0.04489,-0.01727 -0.01387,-0.01727 -0.01387,-0.04144 0,-0.02418 0.01387,-0.04144 0.01726,-0.01727 0.04489,-0.01727 0.02416,0 0.03798,0.01727 0.01727,0.01727 0.01727,0.04144 0,0.02416 -0.01727,0.04144 -0.01387,0.01727 -0.03798,0.01727 z m 0.1036,0.393642 q -0.02073,0 -0.04144,-0.01728 -0.01726,-0.01726 -0.01726,-0.04144 0,-0.03108 0.02416,-0.04489 0.02416,-0.01727 0.03452,-0.01727 0.02073,0 0.03799,0.01727 0.02073,0.01726 0.02073,0.04489 0,0.02073 -0.01726,0.04144 -0.01387,0.01728 -0.04144,0.01728 z m 1.360484,0 q -0.02763,0 -0.04489,-0.01728 -0.01387,-0.02073 -0.01387,-0.04144 0,-0.02416 0.01727,-0.04144 0.01726,-0.01726 0.04144,-0.01726 0.05524,0 0.05524,0.05524 0,0.02763 -0.01727,0.04489 -0.01728,0.01728 -0.03798,0.01728 z m -0.286601,0.2866 q -0.02416,0 -0.04489,-0.01387 -0.01726,-0.01727 -0.01726,-0.04489 0,-0.02416 0.01726,-0.04144 0.01727,-0.01727 0.04489,-0.01727 0.02073,0 0.03798,0.01727 0.01727,0.01387 0.01727,0.04144 0,0.02073 -0.01727,0.04144 -0.01387,0.01726 -0.03798,0.01726 z m -0.787285,0 q -0.02416,0 -0.04144,-0.01727 -0.01726,-0.02073 -0.01726,-0.04144 0,-0.02761 0.01726,-0.04144 0.02073,-0.01726 0.04144,-0.01726 0.03452,0 0.04489,0.02073 0.01387,0.02073 0.01387,0.03799 0,0.02763 -0.01727,0.04489 -0.01727,0.01387 -0.04144,0.01387 z m 0.393643,0.103599 q -0.02418,0 -0.04144,-0.01387 -0.01726,-0.01726 -0.01726,-0.04489 0,-0.02416 0.01726,-0.03799 0.01727,-0.01727 0.04144,-0.01727 0.02418,0 0.04144,0.01727 0.01726,0.01387 0.01726,0.03799 0,0.02763 -0.01726,0.04489 -0.01727,0.01387 -0.04144,0.01387 z"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="77.238121"
y="83.363823"
id="text1532"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
sodipodi:role="line"
id="tspan1530"
x="77.238121"
y="83.363823"
style="font-size:2.82222223px;stroke-width:0.26458332">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="117.45479"
y="85.480492"
id="text1532-0"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
sodipodi:role="line"
id="tspan1530-9"
x="117.45479"
y="85.480492"
style="font-size:2.82222223px;stroke-width:0.26458332">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="109.41487"
y="84.546974"
id="text1532-0-7"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
sodipodi:role="line"
id="tspan1530-9-5"
x="109.41487"
y="84.546974"
style="font-size:2.82222223px;stroke-width:0.26458332">3</tspan></text>
<text
id="text1114-3"
y="78.380775"
x="68.256477"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-size:2.82222199px;stroke-width:0.26458332"
y="78.380775"
x="68.256477"
id="tspan1112-8"
sodipodi:role="line">refill</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot1875"
style="font-style:normal;font-weight:normal;font-size:10.66666698px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="scale(0.26458333)"
inkscape:export-xdpi="90.650002"
inkscape:export-ydpi="90.650002"><flowRegion
id="flowRegion1877"
style="font-size:10.66666698px"><rect
id="rect1879"
width="200"
height="40"
x="304"
y="257.70078"
style="font-size:10.66666698px" /></flowRegion><flowPara
id="flowPara1881" /></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="141.81667"
y="110.51666"
id="text1897"
inkscape:export-xdpi="90.650002"
inkscape:export-ydpi="90.650002"><tspan
sodipodi:role="line"
id="tspan1895"
x="141.81667"
y="113.63792"
style="stroke-width:0.26458332" /></text>
<text
id="text1114-0"
y="98.310852"
x="85.58918"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;vector-effect:none;fill:#949494;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-style:italic;font-weight:bold;font-size:2.82222199px;vector-effect:none;fill:#949494;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;"
y="98.310852"
x="85.58918"
id="tspan1112-9"
sodipodi:role="line">available</tspan></text>
<g
id="g1956"
transform="translate(0,-2.559597)"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001">
<path
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.08687019px;line-height:1.25;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol;letter-spacing:10.08199883px;word-spacing:8.54225349px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.71470124"
d="m 84.666564,98.702477 -0.109422,-0.19385 c -0.03981,-0.30741 -0.211084,-0.46099 -0.513626,-0.46099 l -9.784987,0.0057 -5.319262,0.005 c -0.36621,0 -0.658025,-0.12764 -0.875631,-0.382645 -0.22026,-0.25152 -0.330448,-0.614755 -0.330448,-1.08984 0.100315,5e-4 0.143415,0.24114 0.143415,0.24114 l 0.03974,0.193855 c 0.116761,0.401725 0.420616,0.607895 0.911549,0.618375 l 5.421901,0.0217 9.566895,0.02015 c 0.345685,0.0097 0.725625,0.238125 0.849979,0.578525 0.124404,-0.340325 0.504082,-0.568905 0.849718,-0.578525 l 1.096705,-0.02005 22.35871,-0.02175 c 0.49093,-0.0105 0.79479,-0.21665 0.91155,-0.618375 l 0.0397,-0.193855 c 0,0 0.0431,-0.240395 0.14342,-0.24114 0,0.475085 -0.11018,0.83832 -0.33044,1.08984 -0.21761,0.255005 -0.50942,0.382645 -0.87563,0.382645 l -22.229766,-0.005 -1.341102,-0.0057 c -0.302541,0 -0.473827,0.15358 -0.513632,0.46099 l -0.109422,0.19385 z"
id="path4994-6-0-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccc" />
<path
sodipodi:nodetypes="ccsc"
inkscape:connector-curvature="0"
id="path1616"
d="m 84.674306,98.542354 -0.0076,1.833906 c 0,0 0,2.11667 -2.116667,2.11667 H 63.5"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1640)" />
</g>
<path
sodipodi:nodetypes="ccccccccsscssc"
inkscape:connector-curvature="0"
id="path4994-6-0-4-4"
d="m 116.5919,95.49374 -5.31926,0.005 c -0.36621,0 -0.65803,-0.12764 -0.87563,-0.382645 -0.22026,-0.25152 -0.33045,-0.614755 -0.33045,-1.08984 0.10031,5e-4 0.14341,0.24114 0.14341,0.24114 l 0.0397,0.193855 c 0.11676,0.401725 0.42062,0.607895 0.91155,0.618375 l 5.4219,0.0217 c 2.93565,0.0045 9.63606,0.08367 13.81362,0.09876 0.65243,0.0024 0.12011,-0.218605 0.80418,-0.201947 0.74349,0.0181 1.46534,0.200354 2.04745,0.330975 -0.51415,0.110172 -1.32169,0.36346 -2.02005,0.362679 -0.66603,-7.44e-4 -0.16383,-0.155869 -0.82576,-0.15706 -4.20173,-0.0076 -9.95511,0.0051 -13.81066,-0.04099 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.08687019px;line-height:1.25;font-family:OpenSymbol;-inkscape-font-specification:OpenSymbol;letter-spacing:10.08199883px;word-spacing:8.54225349px;display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001" />
<text
id="text1114-0-7"
y="98.230682"
x="111.64234"
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;display:inline;opacity:1;vector-effect:none;fill:#949494;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal;"
xml:space="preserve"
inkscape:export-xdpi="188.85001"
inkscape:export-ydpi="188.85001"><tspan
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:OpenSymbol;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;vector-effect:none;fill:#949494;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;font-variant-east_asian:normal;"
y="98.230682"
x="111.64234"
id="tspan1112-9-1"
sodipodi:role="line">in-reserve</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

View File

@ -1,43 +0,0 @@
<svg width="407.5" height="552" version="1.1" baseProfile="full" viewbox="0 0 407.5 552" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" style="font-weight:bold; font-size:12pt; font-family:'Calibri', Helvetica, sans-serif;;stroke-width:3;stroke-linejoin:round;stroke-linecap:round"><path d="M265.8 43.5 L265.8 63.5 L265.8 83.5 L265.8 83.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M265.8 114.5 L265.8 134.5 L265.8 154.5 L265.8 154.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M260.4 141.2 L265.8 147.8 L271.1 141.2 L265.8 154.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M227.4 185.5 L178 205.5 L178 225.5 L178 225.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M304.1 185.5 L353.5 205.5 L353.5 225.5 L353.5 225.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M178 256.5 L178 276.5 L178 296.5 L178 296.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M172.7 283.2 L178 289.8 L183.3 283.2 L178 296.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M169.3 327.5 L158 347.5 L169.3 367.5 L169.3 367.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M136.5 325 L64.5 347.5 L64.5 367.5 L64.5 367.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M64.5 398.5 L64.5 418.5 L64.5 438.5 L64.5 438.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M59.2 425.2 L64.5 431.8 L69.8 425.2 L64.5 438.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M64.5 469.5 L64.5 489.5 L238.8 521.7 L238.8 521.7 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M224.7 524.5 L232.2 520.5 L226.6 514.1 L238.8 521.7 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M219.5 326.9 L277 347.5 L277 367.5 L277 367.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M277 398.5 L277 418.5 L277 438.5 L277 438.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M271.7 425.2 L277 431.8 L282.3 425.2 L277 438.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M277 469.5 L277 489.5 L263.7 509.5 L263.7 509.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M266.6 495.4 L267.4 503.9 L275.5 501.3 L263.7 509.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M186.7 367.5 L198 347.5 L186.7 327.5 L186.7 327.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M197.9 336.5 L190 333.3 L188.6 341.7 L186.7 327.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M353.5 256.5 L353.5 276.5 L353.5 296.5 L353.5 296.5 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M348.2 283.2 L353.5 289.8 L358.8 283.2 L353.5 296.5 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<path d="M353.5 327.5 L353.5 347.5 L353.5 489.5 L353.5 489.5 L268.8 519.2 L268.8 519.2 " style="stroke:#33322E;fill:none;stroke-dasharray:none;"></path>
<path d="M279.6 509.8 L275 517 L283.1 519.9 L268.8 519.2 Z" style="stroke:#33322E;fill:#33322E;stroke-dasharray:none;"></path>
<circle r="12" cx="265.8" cy="28.5" style="stroke:none; fill:#33322E;"></circle>
<circle r="10" cx="253.8" cy="524.5" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></circle>
<circle r="6" cx="253.8" cy="524.5" style="stroke:none; fill:#33322E;"></circle>
<text x="241.8" y="105" style="font-weight:normal;">track</text>
<text x="154.8" y="247" style="font-weight:normal;">start</text>
<text x="334.5" y="247" style="font-weight:normal;">skip</text>
<text x="154.8" y="389" style="font-weight:normal;">retry</text>
<text x="31.8" y="389" style="font-weight:normal;">succeed</text>
<text x="258.5" y="389" style="font-weight:normal;">fail</text>
<rect x="224.5" y="154.5" height="31" width="83" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="232.8" y="176" style="">tracked</text>
<rect x="136.5" y="296.5" height="31" width="83" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="144.8" y="318" style="">started</text>
<rect x="13.5" y="438.5" height="31" width="102" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="21.8" y="460" style="">succeeded</text>
<rect x="240.5" y="438.5" height="31" width="73" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="248.5" y="460" style="">failed</text>
<rect x="312.5" y="296.5" height="31" width="83" style="stroke:#33322E;fill:#eee8d5;stroke-dasharray:none;"></rect>
<text x="320.8" y="318" style="">skipped</text></svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,8 +0,0 @@
- io.nosqlbench.engine.<module name>
- io.nosqlbench.extensions.<extension name>
- io.nosqlbench.activitytypes.<activity type name>
- io.nosqlbench.virtdata.<module-name>
- io.nosqlbench.virtdata.library.<library name>
- io.nosqlbench.docs. ...

View File

View File

@ -1,82 +0,0 @@
@startuml
Participant "Calling\nThread" as t
Participant "Limiter\nlogic" as l
Participant "Allocated\nnanos" as a
Participant "Elapsed\nnanos" as e
Participant "Clock\nSource" as c
t -> l : acquire(nanos)
group allocate start time
l -> a : getAndIncrement(nanos)
activate a #black
note over l,a
**allocated** is an atomic accumulator
which represents scheduled time. Each
op causes it to be atomically incremented
by a time slice of nanos.
end note
a -> l : <scheduled_at>
deactivate a
end
group calculate delay (cached)
l -> e : get()
activate e
note over e
**elapsed** is an
atomic register
which caches
system time.
end note
e -> l : <elapsed>
deactivate e
l -> l : delay = \nelapsed - scheduled_at
note right
**delay** measures external delay
that causes an op to fire after
the ideal time. **positive delay**
thus means the rate limiter doesn't
need to impose its own blocking delay
in order to ensure delay>=0.
end note
end
group if delay<0 (cached)
note over l,c
If delay<0, then this operation is too soon according
to the cached clock value. Since this could be stale
and cause us to block needlessly, we update the cached
clock value and recompute delay.
end note
l -> c : get() (~25ns)
activate c #orange
c -> l : <elapsed>
deactivate c
l -> e : store(<elapsed>)
activate e #black
e -> l
deactivate e
l -> l : delay = \nelapsed - scheduled_at
group if delay<0 (updated)
l->l: sleep(-delay);\ndelay=0
note right
If delay is negative, we sleep
in the calling thread and
set delay=0
end note
activate l
deactivate l
end
end
l->t: <delay>
@enduml

View File

@ -1,47 +0,0 @@
@startuml
scale 100 as 100 pixels
Title Rate Limiter - **Timelines**
robust "typical" as W1
@W1
0 is past
100 is allocated #yellow
200 is scheduled #lightgreen
632 is now #lightblue
W1@100 <-> @200: schedule\ndelay
W1@200 <-> @632:
robust "no waittime" as W2
@W2
0 is past
200 is allocated #yellow
200.000001 is scheduled #lightgreen
632 is now #lightblue
robust "caughtup" as W3
@W3
0 is past
100 is allocated #yellow
200.000001 is scheduled #lightgreen
232 is now #lightblue
robust "ahead" as W4
@W4
0 is past
100 is allocated #yellow
200.000001 is scheduled #lightgreen
232 is now #lightblue
concise "perfect ops" as O
@O
0 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
@enduml

View File

@ -1,533 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="multivariate.svg"
inkscape:version="1.0beta1 (1:0.92.0+devel+201910161548+5c30636)"
id="svg8"
version="1.1"
viewBox="0 0 279.4 292.1"
height="11.5in"
width="11in">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="marker10162"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path10160"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="marker5537"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path5535"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow1Mend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3422" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path3416" />
</marker>
<linearGradient
id="linearGradient983"
inkscape:collect="always">
<stop
id="stop979"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop981"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
y2="63.5"
x2="173.12723"
y1="63.5"
x1="131.67278"
id="linearGradient985"
xlink:href="#linearGradient983"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="63.5"
x2="173.12723"
y1="63.5"
x1="131.67278"
id="linearGradient985-1"
xlink:href="#linearGradient983"
inkscape:collect="always"
gradientTransform="matrix(3.7795276,0,0,3.7795276,-496.71822,-166.61139)" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="63.5"
x2="173.12723"
y1="63.5"
x1="131.67278"
id="linearGradient985-14"
xlink:href="#linearGradient983"
inkscape:collect="always"
gradientTransform="matrix(3.7795276,0,0,3.7795276,-304.71821,-473.13109)" />
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mend-4"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3422-4"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mend-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3422-1"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:collect="always"
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mend-9-8"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3422-1-9"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mend-9-0"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3422-1-6"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9-8-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3422-1-9-6"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
</defs>
<sodipodi:namedview
inkscape:document-rotation="0"
inkscape:window-maximized="1"
inkscape:window-y="2160"
inkscape:window-x="328"
inkscape:window-height="1995"
inkscape:window-width="3512"
units="in"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="380.56599"
inkscape:cx="348.26541"
inkscape:zoom="1.6379"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base">
<inkscape:grid
empopacity="0.42352941"
empcolor="#3f3fff"
opacity="0.21568627"
color="#3f3fff"
empspacing="8"
spacingy="3.175"
spacingx="3.175"
units="in"
id="grid895"
type="xygrid" />
<inkscape:grid
opacity="0.0627451"
color="#3f3fff"
dotted="false"
empspacing="8"
spacingy="1.5875"
spacingx="1.5875"
units="in"
id="grid918"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="default">
<text
transform="scale(0.94694521,1.0560273)"
id="text4631-9-2-6"
y="56.387547"
x="234.92065"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
xml:space="preserve"><tspan
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755"
y="56.387547"
x="234.92065"
sodipodi:role="line"
id="tspan4194-6">SCORE</tspan></text>
<text
id="text4362-2-0"
y="116.8091"
x="222.9207"
style="font-size:8.1286px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.508037"
xml:space="preserve"><tspan
style="stroke-width:0.508037"
y="116.8091"
x="222.9207"
sodipodi:role="line"
id="tspan4412-6">value</tspan></text>
<text
id="text4362-0-1"
y="114.82746"
x="116.60229"
style="font-size:7.20838px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.450523"
xml:space="preserve"><tspan
id="tspan4381-2-4"
style="text-align:start;text-anchor:start;stroke-width:0.450523"
y="114.82746"
x="116.60229"
sodipodi:role="line">throughput</tspan><tspan
id="tspan4643"
style="text-align:start;text-anchor:start;stroke-width:0.450523"
y="122.03584"
x="116.60229"
sodipodi:role="line">latency</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
x="46.883053"
y="56.429405"
id="text4631-9-2-3-7"
transform="scale(0.94694521,1.0560273)"><tspan
id="tspan4194-1-6"
sodipodi:role="line"
x="46.883053"
y="56.429405"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">PARAMS</tspan></text>
<g
transform="translate(-25.399999)"
id="g4718">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.058128;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 50.799999,50.8 v 12.7 l 3.175001,-10e-7 v -1.5875 l -1.5875,1e-6 v -9.525 h 1.5875 v -1.587499 z"
id="path4145"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4145-5"
d="m 88.899999,50.8 v 12.7 l -3.175,-10e-7 v -1.5875 l 1.5875,1e-6 v -9.525 h -1.5875 v -1.587499 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
</g>
<g
transform="translate(152.4)"
id="g4718-6">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4145-93"
d="m 50.799999,50.8 v 12.7 l 3.175001,-10e-7 v -1.5875 l -1.5875,1e-6 v -9.525 h 1.5875 v -1.587499 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.058128;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 88.9,50.8 v 12.7 l -3.175,-10e-7 v -1.5875 l 1.5875,1e-6 v -9.525 H 85.725 v -1.587499 z"
id="path4145-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
</g>
<g
id="g4718-6-8"
transform="translate(63.50001,38.0998)">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.058128;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 50.799999,50.8 v 12.7 l 3.175001,-10e-7 v -1.5875 l -1.5875,1e-6 v -9.525 h 1.5875 v -1.587499 z"
id="path4145-93-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4145-5-7-8"
d="m 88.89999,50.8002 v 12.7 l -3.175,-10e-7 v -1.5875 l 1.5875,10e-7 v -9.525 h -1.5875 v -1.587499 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
x="140.54529"
y="92.507927"
id="text4631-9-2-6-8"
transform="scale(0.94694521,1.0560273)"><tspan
id="tspan4194-6-4"
sodipodi:role="line"
x="140.54529"
y="92.507927"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">RESULT</tspan></text>
<text
xml:space="preserve"
style="font-size:6.74675px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.421672"
x="32.730816"
y="112.82606"
id="text4362-4"><tspan
sodipodi:role="line"
x="32.730816"
y="112.82606"
style="text-align:start;text-anchor:start;stroke-width:0.421672"
id="tspan4364-9">ccph</tspan><tspan
sodipodi:role="line"
x="32.730816"
y="119.57281"
style="text-align:start;text-anchor:start;stroke-width:0.421672"
id="tspan4379-2">async</tspan><tspan
sodipodi:role="line"
x="32.730816"
y="126.31956"
style="text-align:start;text-anchor:start;stroke-width:0.421672"
id="tspan4381-0">threads</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5393"
d="M 133.35,69.85 98.425,85.725"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5537);stop-color:#000000;stop-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5395"
d="m 133.35,69.85 34.925,15.875"
style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-8)" />
<text
transform="scale(0.94694521,1.0560273)"
id="text4631-9-2-3-7-0"
y="92.508018"
x="46.883053"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
xml:space="preserve"><tspan
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755"
y="92.508018"
x="46.883053"
sodipodi:role="line"
id="tspan4194-1-6-4">PARAMS</tspan></text>
<g
id="g4718-8"
transform="translate(-25.4,38.1)">
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4145-7"
d="m 50.799999,50.8 v 12.7 l 3.175001,-10e-7 v -1.5875 l -1.5875,1e-6 v -9.525 h 1.5875 v -1.587499 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.058128;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 88.899999,50.8 v 12.7 l -3.175,-10e-7 v -1.5875 l 1.5875,1e-6 v -9.525 h -1.5875 v -1.587499 z"
id="path4145-5-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
x="234.92065"
y="92.466156"
id="text4631-9-2-6-7"
transform="scale(0.94694521,1.0560273)"><tspan
id="tspan4194-6-2"
sodipodi:role="line"
x="234.92065"
y="92.466156"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">VALUE</tspan></text>
<g
id="g4718-6-7"
transform="translate(152.4,38.1)">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.058128;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 50.799999,50.8 v 12.7 l 3.175001,-10e-7 v -1.5875 l -1.5875,1e-6 v -9.525 h 1.5875 v -1.587499 z"
id="path4145-93-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4145-5-7-2"
d="m 88.9,50.8 v 12.7 l -3.175,-10e-7 v -1.5875 l 1.5875,1e-6 v -9.525 H 85.725 v -1.587499 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
</g>
<path
inkscape:connector-curvature="0"
id="path6959"
d="m 82.55,88.9 12.7,6.35 -12.7,6.35 z"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="M 127,50.8 139.7,57.15 127,63.5 Z"
id="path6959-1"
inkscape:connector-curvature="0" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0581279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 171.45,88.9 12.7,6.35 -12.7,6.35 z"
id="path6959-5"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
x="93.353188"
y="107.81679"
id="text4631-9-2-3-7-0-9"
transform="scale(0.94694521,1.0560273)"><tspan
id="tspan4194-1-6-4-4"
sodipodi:role="line"
x="93.353188"
y="107.81679"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">result</tspan><tspan
id="tspan9760"
sodipodi:role="line"
x="93.353188"
y="114.16679"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">function</tspan><tspan
id="tspan9807"
sodipodi:role="line"
x="93.353188"
y="120.51678"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">R(P)</tspan></text>
<text
transform="scale(0.94694521,1.0560273)"
id="text4631-9-2-3-7-0-9-9"
y="108.20721"
x="188.93344"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
xml:space="preserve"><tspan
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755"
y="108.20721"
x="188.93344"
sodipodi:role="line"
id="tspan9760-9">value</tspan><tspan
id="tspan9785"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755"
y="114.55721"
x="188.93344"
sodipodi:role="line">function</tspan><tspan
id="tspan9809"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755"
y="120.9072"
x="188.93344"
sodipodi:role="line">V(R)</tspan></text>
<rect
y="39.6875"
x="15.875"
height="28.575001"
width="242.8875"
id="rect10158"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10162);paint-order:markers stroke fill;stop-color:#000000;stop-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.0156755;stop-opacity:1"
x="141.80322"
y="78.606888"
id="text4631-9-2-3-7-0-9-1"
transform="scale(0.94694521,1.0560273)"><tspan
id="tspan9807-1"
sodipodi:role="line"
x="141.80322"
y="78.606888"
style="font-weight:bold;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke-width:0.0156755">V(R(P))</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,607 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="11in"
height="11.5in"
viewBox="0 0 279.4 292.1"
version="1.1"
id="svg8"
inkscape:version="1.0beta1 (1:0.92.0+devel+201910270845+4b2fe24)"
sodipodi:docname="op_tracking.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mstart"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path13431"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.4) translate(10,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker13786"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path13434"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:stockid="ExperimentalArrow"
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="ExperimentalArrow"
inkscape:isstock="true">
<path
id="path13678"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#000000;stroke-opacity:1" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker13321"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path13319"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker13227"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path13225" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker13139"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path13137" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker12937"
style="overflow:visible;"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path12935"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker12791"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend"
inkscape:collect="always">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path12789" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;"
inkscape:isstock="true">
<path
id="path3416"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<linearGradient
inkscape:collect="always"
id="linearGradient983">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop979" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop981" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientTransform="matrix(3.7795276,0,0,3.7795276,-496.71822,-166.61139)"
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985-1"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientTransform="matrix(3.7795276,0,0,3.7795276,-304.71821,-473.13109)"
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985-14"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3422-4"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3422-1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3422-1-9"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-9-0"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path3422-1-6"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="Arrow1Mend-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3422-0"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="marker12791-1"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path12789-5"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker12937-4"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path12935-7"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.7621436"
inkscape:cx="440.89754"
inkscape:cy="403.22142"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="true"
units="in"
inkscape:window-width="3512"
inkscape:window-height="1995"
inkscape:window-x="328"
inkscape:window-y="2160"
inkscape:window-maximized="1"
inkscape:document-rotation="0">
<inkscape:grid
type="xygrid"
id="grid895"
units="in"
spacingx="3.175"
spacingy="3.175"
empspacing="8"
color="#3f3fff"
opacity="0.21568627"
empcolor="#3f3fff"
empopacity="0.42352941" />
<inkscape:grid
type="xygrid"
id="grid918"
units="in"
spacingx="1.5875"
spacingy="1.5875"
empspacing="8"
dotted="false"
color="#3f3fff"
opacity="0.0627451" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="default"
id="layer1"
inkscape:groupmode="layer">
<g
id="g10677"
transform="translate(155.575,46.037501)" />
<g
id="g10677-3-9"
transform="translate(155.575,31.75)">
<rect
y="25.4"
x="25.4"
height="12.700001"
width="22.225"
id="rect7301-5-1"
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000" />
<text
id="text10672-6-2"
y="30.548523"
x="36.444027"
style="font-size:5.29167px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="30.548523"
x="36.444027"
id="tspan10670-2-7"
sodipodi:role="line">op</tspan><tspan
style="stroke-width:0.264583"
y="35.840195"
x="36.444027"
sodipodi:role="line"
id="tspan10763">tracker</tspan></text>
</g>
<g
id="g10677-3-0"
transform="translate(19.05,49.2125)">
<rect
y="26.987499"
x="19.049999"
height="25.400002"
width="203.2"
id="rect7301-5-9"
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000" />
</g>
<g
id="g10677-3-0-0">
<rect
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000"
id="rect7301-5-9-6"
width="228.60001"
height="177.8"
x="25.4"
y="25.4" />
</g>
<g
id="g10848"
transform="translate(-36.512503,9.5250004)">
<rect
y="9.5249996"
x="71.4375"
height="12.7"
width="41.275002"
id="rect10843"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:none;paint-order:markers stroke fill;stop-color:#000000" />
<text
id="text10672-6-3-1"
y="19.031397"
x="92.074997"
style="font-size:8.46667px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="19.031397"
x="92.074997"
id="tspan10670-2-6-8"
sodipodi:role="line">scenario</tspan></text>
</g>
<g
id="g10677-3-0-0-2"
transform="translate(3.1749988,19.05)">
<rect
y="25.4"
x="28.574999"
height="136.52499"
width="215.90001"
id="rect7301-5-9-6-0"
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000" />
</g>
<g
transform="translate(-28.575003,28.575)"
id="g10848-2">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:markers stroke fill;stop-color:#000000"
id="rect10843-3"
width="41.275002"
height="12.700001"
x="66.675003"
y="9.5249996" />
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="87.184349"
y="18.210775"
id="text10672-6-3-1-7"><tspan
sodipodi:role="line"
id="tspan10670-2-6-8-5"
x="87.184349"
y="18.210775"
style="stroke-width:0.264583">activity</tspan></text>
</g>
<g
transform="translate(42.862499,28.575)"
id="g10677-2">
<rect
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000"
id="rect7301-2"
width="25.4"
height="12.700001"
x="20.637501"
y="25.4" />
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="33.152756"
y="33.209862"
id="text10672-8"><tspan
id="tspan10765-7"
sodipodi:role="line"
x="33.152756"
y="33.209862"
style="stroke-width:0.264583">input</tspan></text>
</g>
<g
transform="translate(214.3125,39.6875)"
id="g10677-31">
<rect
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000"
id="rect7301-9"
width="22.225"
height="12.700001"
x="4.7624998"
y="17.4625" />
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="15.882751"
y="22.611023"
id="text10672-4"><tspan
id="tspan10765-8"
sodipodi:role="line"
x="15.882751"
y="22.611023"
style="stroke-width:0.264583">async</tspan><tspan
sodipodi:role="line"
x="15.882751"
y="27.902693"
style="stroke-width:0.264583"
id="tspan14012">count</tspan></text>
</g>
<g
transform="translate(114.3,57.15)"
id="g10677-3-9-4">
<rect
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000"
id="rect7301-5-1-5"
width="25.4"
height="12.699999"
x="25.4"
y="25.4" />
<text
xml:space="preserve"
style="font-size:5.29167px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
x="38.031528"
y="31.076914"
id="text10672-6-2-0"><tspan
sodipodi:role="line"
id="tspan10670-2-7-3"
x="38.031528"
y="31.076914"
style="stroke-width:0.264583">stride</tspan><tspan
id="tspan10763-6"
sodipodi:role="line"
x="38.031528"
y="36.368584"
style="stroke-width:0.264583">tracker</tspan></text>
</g>
<g
id="g10677-31-1"
transform="translate(85.724998,61.912501)">
<rect
y="20.637499"
x="12.7"
height="12.7"
width="28.575001"
id="rect7301-9-0"
style="fill:none;stroke:#000000;stroke-width:1;paint-order:markers stroke fill;stop-color:#000000" />
<text
id="text10672-4-6"
y="25.801523"
x="26.908693"
style="font-size:5.29167px;line-height:1;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="25.801523"
x="26.908693"
sodipodi:role="line"
id="tspan10765-8-3">cycle</tspan><tspan
style="stroke-width:0.264583"
y="31.093193"
x="26.908693"
sodipodi:role="line"
id="tspan12217">segment</tspan></text>
</g>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker12791);stop-color:#000000;stop-opacity:1"
d="m 127,88.9 12.7,-1e-6"
id="path12719"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g10677-31-1"
inkscape:connection-end="#g10677-3-9-4" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker12937);stop-color:#000000;stop-opacity:1"
d="m 162.32187,82.55 19.84375,-12.7"
id="path12853"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g10677-3-9-4"
inkscape:connection-end="#g10677-3-9" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#marker13786);stop-color:#000000;stop-opacity:1"
d="m 203.2,63.5 15.875,0"
id="path13043"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g10677-3-9"
inkscape:connection-end="#g10677-31" />
<g
id="g10848-2-5"
transform="matrix(0,-0.6153845,0.6153845,0,32.238463,142.63076)">
<rect
y="9.5249996"
x="66.675003"
height="12.700001"
width="41.275002"
id="rect10843-3-6"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:markers stroke fill;stop-color:#000000" />
<text
id="text10672-6-3-1-7-9"
y="18.210775"
x="87.184349"
style="font-size:8.46667px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
xml:space="preserve"><tspan
style="stroke-width:0.264583"
y="18.210775"
x="87.184349"
id="tspan10670-2-6-8-5-3"
sodipodi:role="line">thread</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,45 +0,0 @@
@startuml
scale 100 as 100 pixels
Title Rate Limit - **EARLY**
concise "clock" as C
concise "elapsed" as E
concise "scheduled" as S
concise "allocated" as A
C is the_past #red
E is elapsed #lightblue
S is scheduled #orange
A is allocated #yellow
@C
732 is future #white
E->C
@E
500 is unseen #white
@500 <-> @732: **error** = 232
A -> C
@S
0 is idle #grey
100 is scheduled #orange
600 is unscheduled #white
@500 <-> @600: **scheduling_delay** =\nelapsed - scheduled = -100
@A
300 is unallocated #white
@300 <-> @500: **wait_time** =\nelapsed - allocated = 200
concise "Ops" as O
@O
0 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
@enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,51 +0,0 @@
@startuml
scale 100 as 100 pixels
Title Rate Limit **LATE**
concise "clock" as C
concise "elapsed" as E
concise "scheduled" as S
concise "allocated" as A
C is the_past #red
E is NOWTIME #lightblue
S is scheduled #orange
A is allocated #yellow
@0
S is idle #grey
@100
A is unallocated #white
S is scheduled #orange
@200
S is unscheduled #white
@500
E is unseen #white
A -> C
@632
C is future #white
E->C
@A
@100 <-> @500: **wait_time** =\nelapsed - allocated = 400
@E
@500 <-> @632: **error** = 132
@S
@200 <-> @500: **scheduling_delay** =\nelapsed - scheduled = 300
concise "Ops" as O
@O
0 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
+100 is op
@enduml

View File

@ -1,11 +0,0 @@
- convert core input to be equivalent of `input=type:interval,cycles:N[..M]`
- Add doc support for input, input filters, outputs, output filters
- Build metadata scaffolding for parameters, so unused parameters may be warned about.
- parameters should be part of the activity API
- parameters should not re-trigger def observers for non-change evhandler
- parameters across all subsystems should be discoverable or enumerable
- make stride auto-sizing uniformly apply after sequencing
- reimplement core activity and scenario logic as async/reactor with monitors
- convert to Java 9
- add activity library commands
- add --list-input-filters and --list-output-filters