-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGet_DiskIO_Usage.sh
More file actions
52 lines (47 loc) · 2.02 KB
/
Copy pathGet_DiskIO_Usage.sh
File metadata and controls
52 lines (47 loc) · 2.02 KB
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
#!/bin/bash
time_delay="1"
declare -A data_buff1
declare -A data_buff2
if [ -d /sys/class/block ]; then
dev_list="$(ls /sys/class/block/ |egrep -v "^dm-|^loop|^ram" |sed "s/[0-9]//g" |sort |uniq)"
else
dev_list=""
fi
if [ x"${dev_list}" != x"" ]; then
for i in ${dev_list}; do
if [ -r "/sys/class/block/${i}/stat" ]; then
data_buff1[${i}]="$(cat /sys/class/block/${i}/stat |sed -e "s/\s\+/,/g" -e "s/^,*//g" -e "s/,\+/,/g")"
else
data_buff1[${i}]="0"
fi
done
sleep ${time_delay}
for i in ${dev_list}; do
if [ -r "/sys/class/block/${i}/stat" ]; then
data_buff2[${i}]="$(cat /sys/class/block/${i}/stat |sed -e "s/\s\+/,/g" -e "s/^,*//g" -e "s/,\+/,/g")"
else
data_buff2[${i}]="0"
fi
done
for i in ${dev_list}; do
read_ms1="$(echo "${data_buff1[${i}]}" |awk -F',' '{print $4}')"
read_ms2="$(echo "${data_buff2[${i}]}" |awk -F',' '{print $4}')"
write_ms1="$(echo "${data_buff1[${i}]}" |awk -F',' '{print $8}')"
write_ms2="$(echo "${data_buff2[${i}]}" |awk -F',' '{print $8}')"
io_ms1="$(echo "${data_buff1[${i}]}" |awk -F',' '{print $10}')"
io_ms2="$(echo "${data_buff2[${i}]}" |awk -F',' '{print $10}')"
read_ms="$(echo |awk '{printf("%f",("'"${read_ms2}"'"-"'"${read_ms1}"'")/"'"${time_delay}"'")}')"
write_ms="$(echo |awk '{printf("%f",("'"${write_ms2}"'"-"'"${write_ms1}"'")/"'"${time_delay}"'")}')"
io_ms="$(echo |awk '{printf("%f",("'"${io_ms2}"'"-"'"${io_ms1}"'")/"'"${time_delay}"'")}')"
if [ x"${res_str}" == x"" ]; then
res_str="{\"dev_name\":\"${i}\",\"read_avg_ms\":\"${read_ms}\",\"write_avg_ms\":\"${write_ms}\",\"io_avg_ms\":\"${io_ms}\"}"
else
res_str="${res_str},{\"dev_name\":\"${i}\",\"read_avg_ms\":\"${read_ms}\",\"write_avg_ms\":\"${write_ms}\",\"io_avg_ms\":\"${io_ms}\"}"
fi
done
else
echo "[{\"error\":\"获取磁盘设备列表失败\"}]"
exit 0
fi
echo "[$(echo ${res_str})]"
exit 0