need to normal stream if i want leaky bucket to work nicely but hmmm
parent
51d11a6afb
commit
40343490f2
|
|
@ -9,7 +9,6 @@ def main():
|
||||||
N=args.n,
|
N=args.n,
|
||||||
M=args.m,
|
M=args.m,
|
||||||
R=args.r,
|
R=args.r,
|
||||||
T=args.t,
|
|
||||||
p=args.p,
|
p=args.p,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -18,11 +17,10 @@ def get_args():
|
||||||
ap.add_argument("-n", type=int, help="queue capacity", default=3)
|
ap.add_argument("-n", type=int, help="queue capacity", default=3)
|
||||||
ap.add_argument("-m", type=int, help="queue fill line", default=3)
|
ap.add_argument("-m", type=int, help="queue fill line", default=3)
|
||||||
ap.add_argument("-r", type=int, help="drain rate per second", default=2)
|
ap.add_argument("-r", type=int, help="drain rate per second", default=2)
|
||||||
ap.add_argument("-t", type=int, help="threshold for state", default=2)
|
|
||||||
ap.add_argument("-p", type=str, help="path to write out to", default="/tmp/cbappend.both.txt")
|
ap.add_argument("-p", type=str, help="path to write out to", default="/tmp/cbappend.both.txt")
|
||||||
return ap.parse_args()
|
return ap.parse_args()
|
||||||
|
|
||||||
def with_(N, M, R, T, p):
|
def with_(N, M, R, p):
|
||||||
triggered = CBAppend(p)
|
triggered = CBAppend(p)
|
||||||
released = CBAppend(p)
|
released = CBAppend(p)
|
||||||
cb = CBFork(triggered, released)
|
cb = CBFork(triggered, released)
|
||||||
|
|
@ -33,7 +31,7 @@ def with_(N, M, R, T, p):
|
||||||
got = readline()
|
got = readline()
|
||||||
if got:
|
if got:
|
||||||
if not got in buckets:
|
if not got in buckets:
|
||||||
buckets[got] = Bucket(N, M, R, T, cb.cb(got))
|
buckets[got] = Bucket(N, M, R, cb.cb(got))
|
||||||
buckets[got].push()
|
buckets[got].push()
|
||||||
# TODO no /state
|
# TODO no /state
|
||||||
[buckets[i].pop() for i in buckets]
|
[buckets[i].pop() for i in buckets]
|
||||||
|
|
@ -59,12 +57,11 @@ class State():
|
||||||
self.f = f
|
self.f = f
|
||||||
|
|
||||||
class Bucket():
|
class Bucket():
|
||||||
def __init__(self, N, M, R, T, CB):
|
def __init__(self, N, M, R, CB):
|
||||||
self.q = 0.0
|
self.q = 0.0
|
||||||
self.N = N
|
self.N = N
|
||||||
self.M = M
|
self.M = M
|
||||||
self.R = R
|
self.R = R
|
||||||
self.T = T
|
|
||||||
self.CB = CB
|
self.CB = CB
|
||||||
self.__last_pop = 0
|
self.__last_pop = 0
|
||||||
self.__last_state = False
|
self.__last_state = False
|
||||||
|
|
@ -80,16 +77,16 @@ class Bucket():
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def __cb(self):
|
def __cb(self):
|
||||||
new_state = self.q > self.T
|
new_state = self.q >= self.M
|
||||||
if new_state == self.__last_state:
|
if new_state == self.__last_state:
|
||||||
return
|
return
|
||||||
self.__last_state = new_state
|
self.__last_state = new_state
|
||||||
filledness = int(
|
filledness = int(
|
||||||
100*(
|
100*(
|
||||||
max(
|
max(
|
||||||
[self.q-self.T, 0]
|
[self.q-self.M, 0]
|
||||||
)/max(
|
)/max(
|
||||||
[self.M-self.T, 1]
|
[self.N-self.M, 1]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)/100.0
|
)/100.0
|
||||||
|
|
|
||||||
|
|
@ -30,4 +30,7 @@ python3 ./testdata/rand_0_n_weighted_stream.py \
|
||||||
-between 10 \
|
-between 10 \
|
||||||
-w 3 \
|
-w 3 \
|
||||||
| peek \
|
| peek \
|
||||||
| python3 ./stream_to_state.py
|
| python3 ./stream_to_state.py \
|
||||||
|
-n 7 \
|
||||||
|
-m 6 \
|
||||||
|
-r 6
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue