Skip to content

Instantly share code, notes, and snippets.

@non-static
Created April 29, 2020 20:58
Show Gist options
  • Save non-static/6ad1c28b2d0599213fee8c168f883d4b to your computer and use it in GitHub Desktop.
Save non-static/6ad1c28b2d0599213fee8c168f883d4b to your computer and use it in GitHub Desktop.
Analysis header values with percentiles
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