Description[heap] make inline allocation step size dynamic
Presently the inline allocation step is a static value defined to be the minimum
of the step sizes over all the observers. The step occur every (approx.) step
byte. This is unfair to observers whose steps are not evenly divisible by the
min step size. For example, consider two observers with steps sizes of 512 and
576 bytes. Across 16kb allocated, you would expect the first observer to be hit
approximately 32 times, and the second observer to be hit approximately 28
times.
In reality, the observers get notified 30 and 15 times respectively. The reason
is that each step is 512 bytes, and since 576 is not evenly divisible by 512,
it gets notified much less frequently.
This CL fixes the problem by making the next step size be the minimum (over all
observers) of the remaining bytes to get to the step, making the steps fair.
BUG=
R=hpayer@chromium.org,ulan@chromium.org
Committed: https://crrev.com/f5836617843cb4749c82954d0788f64736803509
Cr-Commit-Position: refs/heads/master@{#31948}
Patch Set 1 #
Total comments: 4
Patch Set 2 : address code review comments #
Total comments: 2
Patch Set 3 : only assert non-zero next_step when there are > 0 listeners #Patch Set 4 : Rebase #
Messages
Total messages: 15 (4 generated)
|