Field - performance_index
Performance Index value of a service class period.
- Map: R723SCS
- Based on: class_goal_percentile, class_goal_value, class_goal_type, execution_velocity, class_rt_bucket_1, class_rt_bucket_2, class_rt_bucket_3, class_rt_bucket_4, class_rt_bucket_5, class_rt_bucket_6, class_rt_bucket_7, class_rt_bucket_8, class_rt_bucket_9, class_rt_bucket_10, class_rt_bucket_11, class_rt_bucket_12, class_rt_bucket_13, class_rt_bucket_14
Performance Index value of a service class period at one timepoint. Calculated according to the goal type. This value is the main performance metric used by Workload Manager to manage the system resources. Currently it requires the timestamp to be requested because database structure in Rocket does not allow querying for RT buckets for a single period.
The field is created using the following pseudocode:
bucket_sum = class_rt_bucket_1 + class_rt_bucket_2 + class_rt_bucket_3 + class_rt_bucket_4 + class_rt_bucket_5 + class_rt_bucket_6 + class_rt_bucket_7 + class_rt_bucket_8 + class_rt_bucket_9 + class_rt_bucket_10 + class_rt_bucket_11 + class_rt_bucket_12 + class_rt_bucket_13 + class_rt_bucket_14
weighted_bucket_sum = 50*class_rt_bucket_1 + 60*class_rt_bucket_2 + 70*class_rt_bucket_3 + 80*class_rt_bucket_4 + 90*class_rt_bucket_5 + 100*class_rt_bucket_6 + 110*class_rt_bucket_7 + 120*class_rt_bucket_8 + 130*class_rt_bucket_9 + 140*class_rt_bucket_10 + 150*class_rt_bucket_11 + 200*class_rt_bucket_12 + 400*class_rt_bucket_13 + 550*class_rt_bucket_14
bucket1 = (class_rt_bucket_1 / bucket_sum * 100) >= class_goal_percentile
bucket2 = ((class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket3 = ((class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket4 = ((class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket5 = ((class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket6 = ((class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket7 = ((class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket8 = ((class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket9 = ((class_rt_bucket_9 + class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket10 = ((class_rt_bucket_10 + class_rt_bucket_9 + class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket11 = ((class_rt_bucket_11 + class_rt_bucket_10 + class_rt_bucket_9 + class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket12 = ((class_rt_bucket_12 + class_rt_bucket_11 + class_rt_bucket_10 + class_rt_bucket_9 + class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
bucket13 = ((class_rt_bucket_13 + class_rt_bucket_12 + class_rt_bucket_11 + class_rt_bucket_10 + class_rt_bucket_9 + class_rt_bucket_8 + class_rt_bucket_7 + class_rt_bucket_6 + class_rt_bucket_5 + class_rt_bucket_4 + class_rt_bucket_3 + class_rt_bucket_2 + class_rt_bucket_1) / bucket_sum * 100) >= class_goal_percentile
maxindex = pd.Series([13] * shape[0])
for bucket in [bucket1, bucket2, bucket3, bucket4, bucket5, bucket6, bucket7, bucket8, bucket9, bucket10, bucket11, bucket12, bucket13]:
maxindex = maxindex.subtract(bucket.astype('int64'))
performance_index = 0.0 * bucket_sum
exvel_pi = class_goal_value / execution_velocity * 100
avres_pi = weighted_bucket_sum / bucket_sum
prres_pi = 50 + maxindex * 10 + ((maxindex == 11) * 40) + ((maxindex == 12) * 230) + ((maxindex == 13) * 370)
performance_index = performance_index.where(class_goal_type != "Execution Velocity", exvel_pi)
performance_index = performance_index.where(class_goal_type != "Average Resp. Time", avres_pi)
performance_index = performance_index.where(class_goal_type != "Percentile Resp. Time", prres_pi)
zerosum = (bucket_sum != 0) | (class_goal_type == "Execution Velocity")
performance_index = performance_index.where(zerosum, 0)
return performance_index