-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathincone.sh
executable file
·64 lines (50 loc) · 1.9 KB
/
incone.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash
# Increment by one
# https://dom.as/2009/12/21/on-deadlock-detection/
# https://bugs.mysql.com/bug.php?id=49047
if [[ $1 == "" ]]; then
echo 'Please specify experiment name'
exit 1
fi
testname=$1
sockfile=/tmp/mysql.sock
function mymysql {
mysql -S ${sockfile} -u root "${@}"
}
function run_once {
thds=$1
trial=$2
runname=incone-${testname}-${thds}-${trial}-$(date +%s)
logfile=incone-${testname}-${thds}.log
cpulogfile=inconecpu-${testname}-${thds}.log
reportfile=incone-${testname}-${thds}-report-${trial}.log
# those are append
echo $runname >> $logfile
echo $runname >> $cpulogfile
# this will overwrite
echo $runname > $reportfile
mymysql -e "SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME = 'lock_deadlock_checker_forks';" | tee -a $logfile
ps -p $mysqldpid -o pid,comm,etime,time >> $cpulogfile
cat /proc/$mysqldpid/stat >> $cpulogfile
cat /proc/stat | grep '^cpu ' >> $cpulogfile
# First half EOF
echo 'EOF FIRST' >> $cpulogfile
mymysql play -e "UPDATE t1 SET a = 0"
for i in `seq $thds`; do ( yes "UPDATE t1 SET a=a+1;" | mymysql play & ) ; done
for i in {1..60}; do
sleep 2
mymysql --skip-column-names -e "select a from play.t1" >> $reportfile
done
killall mysql
ps -p $mysqldpid -o pid,comm,etime,time >> $cpulogfile
cat /proc/$mysqldpid/stat >> $cpulogfile
cat /proc/stat | grep '^cpu ' >> $cpulogfile
# First half EOF
echo 'EOF SECOND' >> $cpulogfile
sleep 5
mymysql -e "select a, a/120 AS per_sec from play.t1" | tee -a $logfile
mymysql -e "SELECT NAME, COUNT FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME = 'lock_deadlock_checker_forks';" | tee -a $logfile
}
mymysql -e "CREATE DATABASE IF NOT EXISTS play; DROP TABLE IF EXISTS play.t1; CREATE TABLE play.t1 (a int); INSERT INTO play.t1 VALUES (5);"
mysqldpid=$4
run_once $2 $3