test/vhost: Fix parse_fio_results() for a single client

Signed-off-by: Michal Berger <michal.berger@intel.com>
Change-Id: I5aa53d0d06564030a3dbae8a8aa5c6179e972980
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13713
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
This commit is contained in:
Michal Berger 2022-07-19 12:33:29 +02:00 committed by Tomasz Zawadzki
parent c1cb6b0d4f
commit 51a8f16e72

View File

@ -1164,6 +1164,7 @@ function parse_fio_results() {
local client_stats iops bw
local read_avg_lat read_min_lat read_max_lat
local write_avg_lat write_min_lat write_min_lat
local clients
declare -A results
results["iops"]=0
@ -1176,16 +1177,23 @@ function parse_fio_results() {
# matching files. This is in case we ran fio test multiple times.
log_files=("$fio_log_dir/$fio_log_filename"*)
for log_file in "${log_files[@]}"; do
rwmode=$(jq -r '.["client_stats"][0]["job options"]["rw"]' "$log_file")
# Save entire array to avoid opening $log_file multiple times
clients=$(jq -r '.client_stats' "$log_file")
[[ -n $clients ]]
rwmode=$(jq -r '.[0]["job options"]["rw"]' <<< "$clients")
mixread=1
mixwrite=1
if [[ $rwmode = *"rw"* ]]; then
mixread=$(jq -r '.["client_stats"][0]["job options"]["rwmixread"]' "$log_file")
mixread=$(jq -r '.[0]["job options"]["rwmixread"]' <<< "$clients")
mixread=$(bc -l <<< "scale=3; $mixread/100")
mixwrite=$(bc -l <<< "scale=3; 1-$mixread")
fi
client_stats=$(jq -r '.["client_stats"][] | select(.jobname == "All clients")' "$log_file")
client_stats=$(jq -r '.[] | select(.jobname == "All clients")' <<< "$clients")
if [[ -z $client_stats ]]; then
# Potentially single client (single VM)
client_stats=$(jq -r '.[]' <<< "$clients")
fi
# Check latency unit and later normalize to microseconds
lat_key="lat_us"