@@ -17,6 +17,8 @@ if [ -z "${2}" ]; then
17
17
fi
18
18
METRICS=" ${2} "
19
19
20
+ P99_LATENCY=" ${3:- false} "
21
+
20
22
if [ -z " FIRST_VOL_NAME" ]; then
21
23
echo Require the first volume name
22
24
exit 1
@@ -49,6 +51,9 @@ parse_metrics() {
49
51
for IO_TYPE in " ${io_types_array[@]} " ; do
50
52
local output=" ${vol_name} -${IO_TYPE} -${METRIC} .json"
51
53
local parse_func=" parse_${IO_TYPE} _${METRIC} "
54
+ if [ " $P99_LATENCY " = " true" ]; then
55
+ parse_func=" parse_${IO_TYPE} _${METRIC} _p99"
56
+ fi
52
57
53
58
if declare -f " $parse_func " > /dev/null; then
54
59
$parse_func " $output "
@@ -80,8 +85,6 @@ calc_cmp_bandwidth
80
85
calc_cmp_latency
81
86
82
87
# Build the summary with header information
83
- RESULT=${FIRST_VOL_NAME} _vs_${SECOND_VOL_NAME} .summary
84
-
85
88
QUICK_MODE_TEXT=" Quick Mode: disabled"
86
89
if [ -n " $QUICK_MODE " ]; then
87
90
QUICK_MODE_TEXT=" Quick Mode: enabled"
@@ -92,22 +95,31 @@ if [ -n "$SIZE" ]; then
92
95
SIZE_TEXT=" Size: $SIZE "
93
96
fi
94
97
98
+ # Determine the file name suffix and title based on P99_LATENCY
99
+ if [ " $P99_LATENCY " = " false" ]; then
100
+ FILE_SUFFIX=" summary"
101
+ TITLE=" FIO Benchmark Comparison Summary"
102
+ else
103
+ FILE_SUFFIX=" p99_latency.summary"
104
+ TITLE=" FIO Benchmark P99 Latency Comparison Summary"
105
+ fi
106
+
107
+ RESULT=" ${FIRST_VOL_NAME} _vs_${SECOND_VOL_NAME} _${FILE_SUFFIX} "
108
+
95
109
SUMMARY="
96
- ================================
97
- FIO Benchmark Comparsion Summary
110
+ ===============================
111
+ $TITLE
98
112
For: $FIRST_VOL_NAME vs $SECOND_VOL_NAME
99
113
CPU Idleness Profiling: $CPU_IDLE_PROF
100
114
$SIZE_TEXT
101
115
$QUICK_MODE_TEXT
102
- ================================
116
+ ===============================
103
117
"
104
118
105
119
printf -v header " $CMP_FMT " \
106
120
" " $FIRST_VOL_NAME " vs" $SECOND_VOL_NAME " :" " Change"
107
121
SUMMARY+=$header
108
122
109
- #! /bin/bash
110
-
111
123
# Define a function to add metrics to the summary
112
124
add_metrics_to_summary () {
113
125
local metric_name=" ${1} "
@@ -139,7 +151,7 @@ add_metrics_to_summary() {
139
151
local cmp_seqwrite=" ${25} "
140
152
local cmp_cpu_idle_pct_seqwrite=" ${26} "
141
153
142
- if [ " $CPU_IDLE_PROF " = " enabled" ]; then
154
+ if [ " $CPU_IDLE_PROF " = " enabled" ] && [ " $P99_LATENCY " = " false " ] ; then
143
155
printf -v cxt " ${metric_name} in ${metric_unit} with CPU idleness in percent (Read/Write)\n${CMP_FMT}${CMP_FMT}${CMP_FMT} \n" \
144
156
" Random:" \
145
157
" $( commaize " ${first_randread} " ) ($( commaize " ${first_cpu_idle_pct_randread} " ) ) / $( commaize " ${first_randwrite} " ) ($( commaize " ${first_cpu_idle_pct_randwrite} " ) )" \
@@ -174,33 +186,35 @@ if [ "x$CPU_IDLE_PROF" = "xenabled" ]; then
174
186
fi
175
187
176
188
# Example usage
177
- add_metrics_to_summary " IOPS" " ops" \
178
- " $FIRST_RANDREAD_IOPS " " $FIRST_CPU_IDLE_PCT_RANDREAD_IOPS " \
179
- " $FIRST_RANDWRITE_IOPS " " $FIRST_CPU_IDLE_PCT_RANDWRITE_IOPS " \
180
- " $SECOND_RANDREAD_IOPS " " $SECOND_CPU_IDLE_PCT_RANDREAD_IOPS " \
181
- " $SECOND_RANDWRITE_IOPS " " $SECOND_CPU_IDLE_PCT_RANDWRITE_IOPS " \
182
- " $CMP_RANDREAD_IOPS " " $CMP_CPU_IDLE_PCT_RANDREAD_IOPS " \
183
- " $CMP_RANDWRITE_IOPS " " $CMP_CPU_IDLE_PCT_RANDWRITE_IOPS " \
184
- " $FIRST_SEQREAD_IOPS " " $FIRST_CPU_IDLE_PCT_SEQREAD_IOPS " \
185
- " $FIRST_SEQWRITE_IOPS " " $FIRST_CPU_IDLE_PCT_SEQWRITE_IOPS " \
186
- " $SECOND_SEQREAD_IOPS " " $SECOND_CPU_IDLE_PCT_SEQREAD_IOPS " \
187
- " $SECOND_SEQWRITE_IOPS " " $SECOND_CPU_IDLE_PCT_SEQWRITE_IOPS " \
188
- " $CMP_SEQREAD_IOPS " " $CMP_CPU_IDLE_PCT_SEQREAD_IOPS " \
189
- " $CMP_SEQWRITE_IOPS " " $CMP_CPU_IDLE_PCT_SEQWRITE_IOPS "
190
-
191
- add_metrics_to_summary " Bandwidth" " KiB/sec" \
192
- " $FIRST_RANDREAD_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
193
- " $FIRST_RANDWRITE_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
194
- " $SECOND_RANDREAD_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
195
- " $SECOND_RANDWRITE_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
196
- " $CMP_RANDREAD_BANDWIDTH " " $CMP_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
197
- " $CMP_RANDWRITE_BANDWIDTH " " $CMP_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
198
- " $FIRST_SEQREAD_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
199
- " $FIRST_SEQWRITE_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH " \
200
- " $SECOND_SEQREAD_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
201
- " $SECOND_SEQWRITE_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH " \
202
- " $CMP_SEQREAD_BANDWIDTH " " $CMP_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
203
- " $CMP_SEQWRITE_BANDWIDTH " " $CMP_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH "
189
+ if [ " $P99_LATENCY " = " false" ]; then
190
+ add_metrics_to_summary " IOPS" " ops" \
191
+ " $FIRST_RANDREAD_IOPS " " $FIRST_CPU_IDLE_PCT_RANDREAD_IOPS " \
192
+ " $FIRST_RANDWRITE_IOPS " " $FIRST_CPU_IDLE_PCT_RANDWRITE_IOPS " \
193
+ " $SECOND_RANDREAD_IOPS " " $SECOND_CPU_IDLE_PCT_RANDREAD_IOPS " \
194
+ " $SECOND_RANDWRITE_IOPS " " $SECOND_CPU_IDLE_PCT_RANDWRITE_IOPS " \
195
+ " $CMP_RANDREAD_IOPS " " $CMP_CPU_IDLE_PCT_RANDREAD_IOPS " \
196
+ " $CMP_RANDWRITE_IOPS " " $CMP_CPU_IDLE_PCT_RANDWRITE_IOPS " \
197
+ " $FIRST_SEQREAD_IOPS " " $FIRST_CPU_IDLE_PCT_SEQREAD_IOPS " \
198
+ " $FIRST_SEQWRITE_IOPS " " $FIRST_CPU_IDLE_PCT_SEQWRITE_IOPS " \
199
+ " $SECOND_SEQREAD_IOPS " " $SECOND_CPU_IDLE_PCT_SEQREAD_IOPS " \
200
+ " $SECOND_SEQWRITE_IOPS " " $SECOND_CPU_IDLE_PCT_SEQWRITE_IOPS " \
201
+ " $CMP_SEQREAD_IOPS " " $CMP_CPU_IDLE_PCT_SEQREAD_IOPS " \
202
+ " $CMP_SEQWRITE_IOPS " " $CMP_CPU_IDLE_PCT_SEQWRITE_IOPS "
203
+
204
+ add_metrics_to_summary " Bandwidth" " KiB/sec" \
205
+ " $FIRST_RANDREAD_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
206
+ " $FIRST_RANDWRITE_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
207
+ " $SECOND_RANDREAD_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
208
+ " $SECOND_RANDWRITE_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
209
+ " $CMP_RANDREAD_BANDWIDTH " " $CMP_CPU_IDLE_PCT_RANDREAD_BANDWIDTH " \
210
+ " $CMP_RANDWRITE_BANDWIDTH " " $CMP_CPU_IDLE_PCT_RANDWRITE_BANDWIDTH " \
211
+ " $FIRST_SEQREAD_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
212
+ " $FIRST_SEQWRITE_BANDWIDTH " " $FIRST_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH " \
213
+ " $SECOND_SEQREAD_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
214
+ " $SECOND_SEQWRITE_BANDWIDTH " " $SECOND_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH " \
215
+ " $CMP_SEQREAD_BANDWIDTH " " $CMP_CPU_IDLE_PCT_SEQREAD_BANDWIDTH " \
216
+ " $CMP_SEQWRITE_BANDWIDTH " " $CMP_CPU_IDLE_PCT_SEQWRITE_BANDWIDTH "
217
+ fi
204
218
205
219
add_metrics_to_summary " Latency" " ns" \
206
220
" $FIRST_RANDREAD_LATENCY " " $FIRST_CPU_IDLE_PCT_RANDREAD_LATENCY " \
@@ -218,6 +232,4 @@ add_metrics_to_summary "Latency" "ns" \
218
232
219
233
220
234
echo " $SUMMARY " > $RESULT
221
- cat $RESULT
222
-
223
-
235
+ cat $RESULT
0 commit comments