Operational Remediation Reports
Mutex Guard Remediation Report
Turn the number of waiters behind a held guard into an enter, backoff, or page remediation action.
guard contention
The waiter count behind a held guard is kept as a scalar so the remediation action stays deterministic and never depends on scheduler timing or lock identity.
Mutex Guard Remediation Report
mutex_guard_remediation_report.rb
Replay: real traced execution (multi-file project)
waiters = 0
guard_limit = 2
acquired = 1
action = if waiters == 0
"enter"
elsif waiters <= guard_limit
"backoff"
else
"page"
end
puts "waiters=#{waiters}"
puts "acquired=#{acquired}"
puts "action=#{action}"
waiters = 1
guard_limit = 2
acquired = 1
action = if waiters == 0
"enter"
elsif waiters <= guard_limit
"backoff"
else
"page"
end
puts "waiters=#{waiters}"
puts "acquired=#{acquired}"
puts "action=#{action}"
waiters = 3
guard_limit = 2
acquired = 1
action = if waiters == 0
"enter"
elsif waiters <= guard_limit
"backoff"
else
"page"
end
puts "waiters=#{waiters}"
puts "acquired=#{acquired}"
puts "action=#{action}"
waiters ← 0, guard_limit ← 2, acquired ← 1, action ← enter
1waiters→ 0 = 0 #@waiters=1, 32guard_limit→ 2 = 23acquired→ 1 = 145action→ enter = if waiters0 == 06 "enter"7elsif waiters0 <= guard_limit28 "backoff"9else10 "page"11end1213puts "waiters=#{waiters0}"14puts "acquired=#{acquired1}"15puts "action=#{actionenter}"outputwaiters=0 acquired=1 action=enter
waiters ← 1, guard_limit ← 2, acquired ← 1, action ← backoff
1waiters→ 1 = 12guard_limit→ 2 = 23acquired→ 1 = 145action→ backoff = if waiters1 == 06 "enter"7elsif waiters1 <= guard_limit28 "backoff"9else10 "page"11end1213puts "waiters=#{waiters1}"14puts "acquired=#{acquired1}"15puts "action=#{actionbackoff}"outputwaiters=1 acquired=1 action=backoff
waiters ← 3, guard_limit ← 2, acquired ← 1, action ← page
1waiters→ 3 = 32guard_limit→ 2 = 23acquired→ 1 = 145action→ page = if waiters3 == 06 "enter"7elsif waiters3 <= guard_limit28 "backoff"9else10 "page"11end1213puts "waiters=#{waiters3}"14puts "acquired=#{acquired1}"15puts "action=#{actionpage}"outputwaiters=3 acquired=1 action=page