Re: Linux 2.6.25-rc2

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mathieu Desnoyers
Date: Tuesday, February 19, 2008 - 1:03 pm

* Eric Dumazet (dada1@cosmosbay.com) wrote:

I think you are right. A way to fix this would use the fact that the
freelist is only useful to point to the first free object in a page. We
could change it to an offset rather than an address.

The freelist would become a counter of type "long" which increments
until it wraps at 2^32 or 2^64. A PAGE_MASK bitmask could then be used
to get low order bits which would get the page offset of the first free
object, while the high order bits would insure we can detect this type
of object reuse when doing a cmpxchg. Upon free, the freelist counter
should always be incremented; this would be provided by adding PAGE_SIZE
to the counter and setting the LSBs to the correct offset.

On 32 bits architectures, it would allow 2^(32-12) = 1048576
allocations-free pairs to be done within interrupt handlers interrupting
a cmpxchg_local before the counter wraps. On 64 bits archs, it would
give 2^(64-12) = 2^52 allocation-free.

If we assume kmalloc/kfree pairs can take up to 1000 cycles to execute
(see
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=068fbad288...)
(3GHz Pentium 4) (therefore 333ns)
an interrupt handler doing 1048576 kmalloc/kfree would run for 0.35
seconds. An interrupt handler taking that much time would lead to other
OS problems (potential scheduler problems), so this quantity of
available allocations before a wrap-around looks safe. However, making
sure preemption is disabled would be safer here, since we cannot bound
the number of allocations that can be done by other processes if we are
scheduled out in the middle of the cmpxchg_local loop.

A revert is indeed the right solution at this stage until a corrected
version is ready.

Mathieu

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Linux 2.6.25-rc2, Linus Torvalds, (Fri Feb 15, 2:23 pm)
Re: Linux 2.6.25-rc2, Rafael J. Wysocki, (Fri Feb 15, 7:08 pm)
[BUG] Linux 2.6.25-rc2 - Kernel Ooops while running dbench, Kamalesh Babulal, (Fri Feb 15, 10:44 pm)
[BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-git1 s ..., Kamalesh Babulal, (Fri Feb 15, 11:10 pm)
Re: Linux 2.6.25-rc2, Jan Engelhardt, (Sat Feb 16, 9:52 am)
Linux 2.6.25-rc2 regression: LVM cannot find volume group, Tilman Schmidt, (Sat Feb 16, 12:14 pm)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Sat Feb 16, 2:38 pm)
Re: [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-gi ..., Rafael J. Wysocki, (Sun Feb 17, 1:08 pm)
Re: Linux 2.6.25-rc2, Rafael J. Wysocki, (Sun Feb 17, 1:25 pm)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Sun Feb 17, 2:32 pm)
Re: Linux 2.6.25-rc2, Linus Torvalds, (Mon Feb 18, 4:54 pm)
Re: Linux 2.6.25-rc2 regression: LVM cannot find volume group, Alasdair G Kergon, (Mon Feb 18, 6:53 pm)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Mon Feb 18, 11:11 pm)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Mon Feb 18, 11:44 pm)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Mon Feb 18, 11:54 pm)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 12:21 am)
Re: [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-gi ..., KAMEZAWA Hiroyuki, (Tue Feb 19, 1:04 am)
Re: [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-gi ..., KAMEZAWA Hiroyuki, (Tue Feb 19, 1:47 am)
Re: [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-gi ..., KAMEZAWA Hiroyuki, (Tue Feb 19, 2:02 am)
Re: [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-gi ..., KAMEZAWA Hiroyuki, (Tue Feb 19, 2:07 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 3:27 am)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 3:45 am)
Re: Linux 2.6.25-rc2, Mathieu Desnoyers, (Tue Feb 19, 6:02 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 7:00 am)
Re: Linux 2.6.25-rc2, Mathieu Desnoyers, (Tue Feb 19, 7:02 am)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 7:21 am)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 7:38 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 7:55 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 7:57 am)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 8:52 am)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Tue Feb 19, 8:54 am)
Re: Linux 2.6.25-rc2, Linus Torvalds, (Tue Feb 19, 9:20 am)
Re: Linux 2.6.25-rc2, Eric Dumazet, (Tue Feb 19, 9:27 am)
Re: Linux 2.6.25-rc2, Linus Torvalds, (Tue Feb 19, 9:38 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 9:45 am)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Tue Feb 19, 9:48 am)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Tue Feb 19, 11:39 am)
Re: Linux 2.6.25-rc2, Torsten Kaiser, (Tue Feb 19, 12:27 pm)
Re: Linux 2.6.25-rc2, Mathieu Desnoyers, (Tue Feb 19, 1:03 pm)
Re: Linux 2.6.25-rc2, Mathieu Desnoyers, (Tue Feb 19, 1:08 pm)
Re: Linux 2.6.25-rc2, Zhang, Yanmin, (Tue Feb 19, 5:36 pm)
Re: Linux 2.6.25-rc2, Zhang, Yanmin, (Tue Feb 19, 7:08 pm)
Re: Linux 2.6.25-rc2, Zhang, Yanmin, (Tue Feb 19, 11:53 pm)
Re: Linux 2.6.25-rc2, Pekka Enberg, (Wed Feb 20, 12:10 am)
Re: Linux 2.6.25-rc2, Christoph Lameter, (Wed Feb 27, 4:32 pm)
Re: Linux 2.6.25-rc2, Christoph Lameter, (Wed Feb 27, 4:32 pm)
Re: Linux 2.6.25-rc2, Christoph Lameter, (Wed Feb 27, 4:34 pm)
Re: Linux 2.6.25-rc2, Andrew Morton, (Wed Feb 27, 6:57 pm)
Re: Linux 2.6.25-rc2, Christoph Lameter, (Wed Feb 27, 7:43 pm)
[PATCH] Implement slub fastpath in terms of freebase and f ..., Mathieu Desnoyers, (Wed Feb 27, 10:55 pm)
Re: Linux 2.6.25-rc2, Ingo Molnar, (Thu Feb 28, 1:14 am)
Re: Linux 2.6.25-rc2, Jiri Kosina, (Thu Feb 28, 4:13 am)
Re: Linux 2.6.25-rc2, Alan Cox, (Thu Feb 28, 4:15 am)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Christoph Lameter, (Thu Feb 28, 12:08 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Mathieu Desnoyers, (Thu Feb 28, 4:25 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Christoph Lameter, (Thu Feb 28, 5:57 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Mathieu Desnoyers, (Thu Feb 28, 6:56 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Christoph Lameter, (Thu Feb 28, 7:12 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Mathieu Desnoyers, (Thu Feb 28, 8:32 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Christoph Lameter, (Thu Feb 28, 10:11 pm)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Mathieu Desnoyers, (Fri Feb 29, 6:03 am)
[PATCH] Slub Freeoffset check overflow, Mathieu Desnoyers, (Fri Feb 29, 6:28 am)
Re: [PATCH] Implement slub fastpath in terms of freebase a ..., Christoph Lameter, (Fri Feb 29, 12:57 pm)
[PATCH] Slub Freeoffset check overflow (updated), Mathieu Desnoyers, (Mon Mar 3, 11:17 pm)
Re: [PATCH] Slub Freeoffset check overflow (updated), Christoph Lameter, (Tue Mar 4, 12:15 am)