Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (43 sloc) 1.27 KB
local metrics = {"auth.meta_load", "all.meta_load", "req_rate", "queue_len", "cpu_load_avg"}
-- Metric for balancing is the workload; also dumps metrics
local function mds_load()
for rank, mds in pairs(mds) do
local s = "MDS"..rank..": < "
for _, metric in ipairs(metrics) do
s = s..metric.."="..mds[metric].." "
end
mds.load = mds["all.meta_load"]
BAL_LOG(5, s.."> load="..mds.load)
end
end
-- Shed load when you have load and your neighbor doesn't
local function when()
if not mds[whoami+1] then
-- i'm the last rank
BAL_LOG(5, "when: not migrating! I am the last rank, nothing to spill to.");
return false
end
my_load = mds[whoami]["load"]
his_load = mds[whoami+1]["load"]
if my_load > 0.01 and his_load < 0.01 then
BAL_LOG(5, "when: migrating! my_load="..my_load.." hisload="..his_load)
return true
end
BAL_LOG(5, "when: not migrating! my_load="..my_load.." hisload="..his_load)
return false
end
-- Shed half your load to your neighbor
-- neighbor=whoami+2 because Lua tables are indexed starting at 1
local function where(targets)
targets[whoami+1] = mds[whoami]["load"]/2
return targets
end
local targets = {}
for rank in pairs(mds) do
targets[rank] = 0
end
mds_load()
if when() then
where(targets)
end
return targets
You can’t perform that action at this time.