Skip to content

Commit 60d57f6

Browse files
committed
adaptivemm: add data collection & replay capability
Signed-off-by: George Kennedy <[email protected]>
1 parent 9aba4f8 commit 60d57f6

File tree

2 files changed

+403
-23
lines changed

2 files changed

+403
-23
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
2+
if [ ! -f ../../adaptivemmd ] ; then
3+
echo "Cannot find ../../adaptivemmd"
4+
exit
5+
fi
6+
7+
setup()
8+
{
9+
echo "Checking adaptivemmd config file in /etc/default..."
10+
if [ ! -f /etc/default/adaptivemmd ] ; then
11+
echo "/etc/default/adaptivemmd missing. Must setup first."
12+
exit
13+
fi
14+
echo ==============================================================
15+
cat /etc/default/adaptivemmd
16+
echo ==============================================================
17+
echo "If above config not correct, hit <Control-C> to exit and make changes to /etc/default/adaptivemmd"
18+
echo -n "Else hit <Enter> to continue: "
19+
read ANS
20+
}
21+
22+
usage()
23+
{
24+
echo "usage: $0 <-d sample_directory> [-l <max_loops>] [-m <maxgap>] [-a][-C][-R][-V][-h]" ; exit ;
25+
}
26+
27+
CAPTURE=false
28+
REPLAY=false
29+
VALIDATE=false
30+
MAXGAP=0
31+
32+
MAX_LOOPS=10
33+
34+
while getopts aCRVd:l:m:h name
35+
do
36+
case $name in
37+
a) CAPTURE=true ; REPLAY=true ; VALIDATE=true ;;
38+
C) CAPTURE=true ;;
39+
R) REPLAY=true ;;
40+
V) VALIDATE=true ;;
41+
d) DIR="$OPTARG" ;;
42+
l) MAX_LOOPS="$OPTARG" ;;
43+
m) MAXGAP="$OPTARG" ;;
44+
h) usage ;;
45+
*) usage ;;
46+
esac
47+
done
48+
49+
if [ -z "$DIR" ] ; then
50+
usage
51+
fi
52+
53+
if ! $CAPTURE && ! $REPLAY && ! $VALIDATE ; then
54+
usage
55+
fi
56+
57+
if $CAPTURE || $REPLAY ; then
58+
setup
59+
fi
60+
61+
if $CAPTURE ; then
62+
echo
63+
echo "Run adaptivemmd and capture data.."
64+
echo
65+
66+
if [ -d "$DIR" ] ; then
67+
echo -n "Capture directory ($DIR) cannot exist to avoid overwrite. Hit <Enter> to remove it: "
68+
read ANS
69+
rm -rf $DIR
70+
fi
71+
rm -f /tmp/capture.out
72+
73+
echo -n "Current value of /proc/sys/vm/watermark_scale_factor: "
74+
cat /proc/sys/vm/watermark_scale_factor
75+
76+
echo
77+
echo -n "Enter new value (max 1000) or just <Enter> to continue: "
78+
read M
79+
if [ ! -z "$M" ] ; then
80+
if [ $M -gt 1000 ] ; then
81+
echo "Value entered is too large! Setting value to 1000."
82+
M=1000
83+
fi
84+
echo $M > /proc/sys/vm/watermark_scale_factor
85+
cat /proc/sys/vm/watermark_scale_factor
86+
fi
87+
88+
pkill adaptivemmd
89+
rm -f /var/run/adaptivemmd.pid
90+
ps -ed |grep adaptivemmd
91+
92+
CMD="../../adaptivemmd -a 3 -d -vvvvv -C -m $MAXGAP -l $MAX_LOOPS -S $DIR"
93+
echo $CMD
94+
$CMD 2>&1 |tee /tmp/capture.out
95+
fi
96+
if [ ! -d $DIR ] ; then
97+
echo "Cannot find Capture directory with previously captured sample data."
98+
exit
99+
fi
100+
if $REPLAY ; then
101+
echo
102+
echo "Run adaptivemmd and replay captured data.."
103+
echo
104+
105+
rm -f /tmp/replay.out
106+
107+
if [ -d /tmp/adaptivemmd_data_capture_and_validate_REPLAY ] ; then
108+
rm -rf /tmp/adaptivemmd_data_capture_and_validate_REPLAY
109+
fi
110+
cp -rp $DIR /tmp/adaptivemmd_data_capture_and_validate_REPLAY
111+
112+
pkill adaptivemmd
113+
rm -f /var/run/adaptivemmd.pid
114+
ps -ed |grep adaptivemmd
115+
116+
CMD="../../adaptivemmd -a 3 -d -vvvvv -R -m $MAXGAP -l $MAX_LOOPS -S /tmp/adaptivemmd_data_capture_and_validate_REPLAY"
117+
echo $CMD
118+
$CMD 2>&1 |tee /tmp/replay.out
119+
fi
120+
if ! $VALIDATE ; then exit ; fi
121+
122+
echo
123+
echo "Validate adaptivemmd captured data.."
124+
echo
125+
grep "reclamation rate" /tmp/capture.out /tmp/replay.out >/dev/null 2>&1
126+
if [ $? = 0 ] ; then
127+
echo "NOTE: ignore any \"reclamation rate\" diffs (they are timing diffs between capture & replay)."
128+
echo
129+
fi
130+
set -x
131+
diff /tmp/capture.out /tmp/replay.out

0 commit comments

Comments
 (0)