forked from intel/lkp-tests
-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot-iostat
executable file
·79 lines (62 loc) · 2.33 KB
/
plot-iostat
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash
# iostat -kx 1
# avg-cpu: %user %nice %system %iowait %steal %idle
# 0.75 0.00 6.36 18.20 0.00 74.69
# 1 2 3 4 5 6
# Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
# sda 0.00 0.00 0.00 136.63 0.00 63065.35 923.13 143.09 1416.26 7.28 99.41
# 1 2 3 4 5 6 7 8 9 10 11 12
plot() {
disk=$1
cpu=$2
suffix=$3
gnuplot <<EOF
set xlabel "time (s)"
set size 1
set terminal pngcairo size ${width:-1280}, 800
set terminal pngcairo size ${width:-1000}, 600
set grid
set output "iostat-bw$suffix.png"
set ylabel "throughput (MB/s)"
plot "$disk" using (\$7/1024) with linespoints pt 5 title "write MB/s", \
"$disk" using (\$6/1024) with linespoints pt 4 title "read MB/s"
unset grid
set output "iostat-util$suffix.png"
set ylabel "percent"
set yrange [0:100]
unset clip
plot "$disk" using 12 with linespoints pt 5 ps 0.6 title "disk util", \
"$cpu" using 1 with linespoints pt 4 ps 0.6 title "user", \
"$cpu" using 2 with linespoints pt 4 ps 0.6 title "nice", \
"$cpu" using 3 with linespoints pt 4 ps 0.6 title "system", \
"$cpu" using 4 with linespoints pt 4 ps 0.6 title "iowait", \
"$cpu" using 5 with linespoints pt 4 ps 0.6 title "steal", \
"$cpu" using 6 with linespoints pt 4 ps 0.6 title "idle"
unset ylabel
set yrange [*:*]
set output "iostat-misc$suffix.png"
set ytics nomirror
set y2label "time"
set y2tics
plot "$disk" using 4 axis x1y1 with linespoints title "r/s", \
"$disk" using 5 axis x1y1 with linespoints title "w/s", \
"$disk" using 8 axis x1y1 with linespoints title "avgrq-sz", \
"$disk" using 9 axis x1y1 with linespoints title "avgqu-sz", \
"$disk" using 10 axis x1y2 with points title "await", \
"$disk" using 11 axis x1y2 with points title "svctm"
EOF
}
test -s iostat || exit
[[ -f iostat-disk ]] || grep ${IOSTAT_DISK:-sda} iostat > iostat-disk
[[ -f iostat-cpu ]] || grep -A1 avg-cpu iostat | grep -v '[a-z-]' > iostat-cpu
plot iostat-disk iostat-cpu
lines=$(wc -l iostat-disk | cut -f1 -d' ')
# if [[ $lines -gt 100 ]]; then
# tail -n 50 < iostat-disk > iostat-disk-50
# tail -n 50 < iostat-cpu > iostat-cpu-50
# plot iostat-disk-50 iostat-cpu-50 -50
# fi
# if [[ $lines -ge 100 ]]; then
# width=3200
# plot $trace iostat-disk iostat-cpu +
# fi