perf/pm: Discard < 0 readings coming from RAPL

Signed-off-by: Michal Berger <michal.berger@intel.com>
Change-Id: I5a4071441b6eed53553624c5ee587b7c91360eb5
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16633
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Michal Berger 2023-01-31 15:03:52 +01:00 committed by Tomasz Zawadzki
parent 7ee11c56ce
commit 66ed26e06d

View File

@ -349,6 +349,18 @@ get_cpu_socket_reading() {
# Convert to Watts - use bc since $interval can be an actual float # Convert to Watts - use bc since $interval can be an actual float
reading=$(calc "(${socket_uj[-1]} - ${socket_uj[-2]}) / 1000000 / $interval") reading=$(calc "(${socket_uj[-1]} - ${socket_uj[-2]}) / 1000000 / $interval")
if ((reading < 0)); then
# Somehow this may happen, probably when the counter wraps over. Consider
# this as a faulty reading and don't include it since it may impact overall
# avg.
printf '(%s) CPU %s %s reading: error(%s) (interval: %ss)\n' \
"$ts" \
"$socket_name" \
"$socket_idx" \
"$reading" \
"$interval" >&2
return 0
fi
eval "_socket${_socket_idx}_readings+=($reading)" eval "_socket${_socket_idx}_readings+=($reading)"
power_readings["$socket_name-$socket_idx"]="_socket${_socket_idx}_readings[@]" power_readings["$socket_name-$socket_idx"]="_socket${_socket_idx}_readings[@]"