Created
April 29, 2020 20:58
-
-
Save non-static/6ad1c28b2d0599213fee8c168f883d4b to your computer and use it in GitHub Desktop.
Analysis header values with percentiles
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wrk.method = "POST" | |
local f = io.open("batch_4.json", "r") | |
wrk.body = f:read("*all") | |
wrk.headers["Content-Type"] = "application/json" | |
wrk.headers["Authorization"] = "Bearer <token>" | |
local threads = {} | |
function percentile(data, p) | |
local sortedData = { } | |
for k, v in pairs(data) do | |
sortedData[k] = v | |
end | |
table.sort(sortedData) | |
return sortedData[math.ceil(#data * p / 100)] | |
end | |
function setup(thread) | |
thread:set("id", counter) | |
table.insert(threads, thread) | |
end | |
function init(args) | |
count_worker1 = 0 | |
count_worker2 = 0 | |
count_idk = 0 | |
duration_worker1 = {} | |
duration_worker2 = {} | |
duration_envoy1 ={} | |
duration_envoy2 = {} | |
end | |
function response(status, headers, body) | |
local srv_id = headers["x-ms-worker-id"] | |
if status == 200 then | |
local duration = tonumber(headers["x-ms-model-execution-duration"]) * 1000 | |
local duration_envoy = tonumber(headers["x-envoy-upstream-service-time"]) | |
if srv_id == "31311" then | |
count_worker1 = count_worker1 + 1 | |
duration_worker1[#duration_worker1 + 1] = duration | |
duration_envoy1[#duration_envoy1 + 1] = duration_envoy - duration | |
elseif srv_id == "31312" then | |
count_worker2 = count_worker2 + 1 | |
duration_worker2[#duration_worker2 + 1] = duration | |
duration_envoy2[#duration_envoy2 + 1] = duration_envoy - duration | |
else | |
count_idk = count_idk + 1 | |
end | |
end | |
end | |
function done(summary, latency, requests) | |
total_worker1 = 0 | |
total_worker2 = 0 | |
total_workeridk = 0 | |
total_duration1 = {} | |
total_duration2 = {} | |
total_envoy_duration1 = {} | |
total_envoy_duration2 = {} | |
total_envoy_duration = {} | |
for index, thread in ipairs(threads) do | |
total_worker1 = total_worker1 + thread:get("count_worker1") | |
total_worker2 = total_worker2 + thread:get("count_worker2") | |
total_workeridk = total_workeridk + thread:get("count_idk") | |
for _, v in pairs(thread:get("duration_worker1")) do | |
table.insert(total_duration1, v) | |
end | |
for _, v in pairs(thread:get("duration_worker2")) do | |
table.insert(total_duration2, v) | |
end | |
for _, v in pairs(thread:get("duration_envoy1")) do | |
table.insert(total_envoy_duration1, v) | |
table.insert(total_envoy_duration, v) | |
end | |
for _, v in pairs(thread:get("duration_envoy2")) do | |
table.insert(total_envoy_duration2, v) | |
table.insert(total_envoy_duration, v) | |
end | |
end | |
print("------------------------------\n") | |
print("Response from Worker GPU: ", total_worker1) | |
print("Response from Worker CPU: ", total_worker2) | |
print("Response from Worker idk: ", total_workeridk) | |
print(" ") | |
print("P50 model execution on GPU (ms):", percentile(total_duration1, 50)) | |
print("P90 model execution on GPU (ms):", percentile(total_duration1, 90)) | |
print("P99 model execution on GPU (ms):", percentile(total_duration1, 99)) | |
print(" ") | |
print("P50 model execution on CPU (ms):", percentile(total_duration2, 50)) | |
print("P90 model execution on CPU (ms):", percentile(total_duration2, 90)) | |
print("P99 model execution on CPU (ms):", percentile(total_duration2, 99)) | |
print(" ") | |
print("P50 envoy upstream - model execution on GPU (ms):", percentile(total_envoy_duration1, 50)) | |
print("P90 envoy upstream - model execution on GPU (ms):", percentile(total_envoy_duration1, 90)) | |
print("P99 envoy upstream - model execution on GPU (ms):", percentile(total_envoy_duration1, 99)) | |
print(" ") | |
print("P50 envoy upstream - model execution on CPU (ms):", percentile(total_envoy_duration2, 50)) | |
print("P90 envoy upstream - model execution on CPU (ms):", percentile(total_envoy_duration2, 90)) | |
print("P99 envoy upstream - model execution on CPU (ms):", percentile(total_envoy_duration2, 99)) | |
print(" ") | |
print("P50 envoy upstream - model execution (ms):", percentile(total_envoy_duration, 50)) | |
print("P90 envoy upstream - model execution (ms):", percentile(total_envoy_duration, 90)) | |
print("P99 envoy upstream - model execution (ms):", percentile(total_envoy_duration, 99)) | |
print("------------------------------\n") | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment