All of lore.kernel.org
 help / color / mirror / Atom feed
* Approximate structure-allocation limit problem improvement
@ 2015-12-16 13:21 Colin Pitrat
  2015-12-18 18:03 ` Paul E. McKenney
  0 siblings, 1 reply; 4+ messages in thread
From: Colin Pitrat @ 2015-12-16 13:21 UTC (permalink / raw)
  To: perfbook

Hello,

in chapter 5 (Counting), in the paragraph concerning "Approximate
structure-allocation limit problem", it is said:

"Similarly, sub_count() can fail even when the aggregate value of the
counter is nowhere near zero. In many cases, this is unacceptable."

In the case of the Quick Quiz 5.3 question, it's true that it's quite
a problem if it means freeing the structure fails because the counter
cannot be updated ! And freeing it without updating the counter means
the counter shifts from reality.

However, the very existence of the structure is a guarantee that the
real (total) counter value cannot be 0 or less than delta, so couldn't
we imagine to always succeed the sub_count operation by keeping a
global negative offset ? In the slow path, after globalize_count, if
the global count is lower than delta then we set it to 0 and we
increment the negative offset by what remains.

On the next slow path operation during a add_count, this negative
offset can be removed (or reduced) by reducing the local counter of
the thread by the same value.

This improvement over the proposed solution make it an acceptable
answer for the quick quiz 5.3 whereas it isn't without.

What do you think ?
Should I spend a bit of time writing a paragraph and a code sample about it ?

Regards,
Colin

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-12-21 15:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-16 13:21 Approximate structure-allocation limit problem improvement Colin Pitrat
2015-12-18 18:03 ` Paul E. McKenney
2015-12-21 15:18   ` Colin Pitrat
2015-12-21 15:28     ` Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.