- Inconsistent and Incorrect rw-lock stats
- There are multiple inconsistency and incorrect way in which rw-lock
stats are calculated.
- shared rw-lock stats:
- "rounds" counter is incremented only once for N rounds done in spin-cycle.
- all rw-lock stats:
- if the spin-cycle is short-circuited then attempts are re-counted.
[if spin-cycle is interrupted, before it completes srv_n_spin_wait_rounds
(default 30) rounds, spin_count (renamed to spin_round_count for better
clarity) is incremented to consider this.
if thread resumes spin-cycle (due to unavailability of the locks)
and is again interrupted or completed spin_count (spin_round_count) is
again incremented with the total count, failing to adjust the previous
- s/x rw-lock stats:
- spin_loop counter is not incremented at-all instead it is projected
as 0 (in show engine output) and division to calculate spin-round per
spin-loop is adjusted.
- as per the original semantics spin_loop counter should be incremented
once per spin_loop execution.
- sx rw-lock stats:
- sx locks increment spin_loop counter but instead of incrementing it once
for spin_loop invocation it does it multiple times based on how many
time spin_loop flow is repeated for same instance post os-wait.