3d80b164d5
Now, each level is comprised of 3 files, A=Oldest, B=Older, C=Old As in [Overmars and Leeuwen, 1983]. As soon as we have A & B, we initiate a merge, (to the M=New) file, i.e. we merge more eagerly than previously. Next step in this refactoring is to add a scheduler that enforces some merge activity as part of a PUT.
59 lines
1,020 B
Bash
59 lines
1,020 B
Bash
#!/bin/bash
|
|
|
|
function periodic() {
|
|
t=0
|
|
while sleep 1 ; do
|
|
let "t=t+1"
|
|
printf "%5d [" "$t"
|
|
|
|
for ((i=0; i<35; i++)) ; do
|
|
if ! [ -f "A-$i.data" ] ; then
|
|
echo -n " "
|
|
elif ! [ -f "B-$i.data" ] ; then
|
|
echo -n "-"
|
|
elif ! [ -f "C-$i.data" ] ; then
|
|
echo -n "#"
|
|
elif ! [ -f "X-$i.data" ] ; then
|
|
echo -n "="
|
|
else
|
|
echo -n "*"
|
|
fi
|
|
done
|
|
echo
|
|
done
|
|
}
|
|
|
|
function dynamic() {
|
|
local old s t start now
|
|
t=0
|
|
start=`date +%s`
|
|
while true ; do
|
|
s=""
|
|
for ((i=0; i<35; i++)) ; do
|
|
if ! [ -f "A-$i.data" ] ; then
|
|
s="$s "
|
|
elif ! [ -f "B-$i.data" ] ; then
|
|
s="$s-"
|
|
elif ! [ -f "C-$i.data" ] ; then
|
|
s="$s="
|
|
elif ! [ -f "X-$i.data" ] ; then
|
|
s="$s%"
|
|
else
|
|
s="$s*"
|
|
fi
|
|
done
|
|
|
|
if [[ "$s" != "$old" ]] ; then
|
|
let "t=t+1"
|
|
now=`date +%s`
|
|
let "now=now-start"
|
|
printf "%5d %6d [%s\n" "$t" "$now" "$s"
|
|
old="$s"
|
|
else
|
|
# Sleep a little bit:
|
|
perl -e 'use Time::HiRes; Time::HiRes::usleep(100000)'
|
|
fi
|
|
done
|
|
}
|
|
|
|
dynamic
|