Messages in this thread | | | Date | Thu, 23 Oct 2008 11:47:48 -0500 (CDT) | From | Christoph Lameter <> | Subject | Re: SLUB defrag pull request? |
| |
On Thu, 23 Oct 2008, Eric Dumazet wrote:
>> SLUB touches objects by default when allocating. And it does it immediately >> in slab_alloc() in order to retrieve the pointer to the next object. So >> there is no point of hinting there right now. >> > > Please note SLUB touches by reading object. > > prefetchw() gives a hint to cpu saying this cache line is going to be > *modified*, even > if first access is a read. Some architectures can save some bus transactions, > acquiring > the cache line in an exclusive way instead of shared one.
Most architectures actually can do that. Its probably worth to run some tests with that. Conversion of a cacheline from shared to exclusive can cost something.
>> If we go to the pointer arrays then the situation is similar to SLAB where >> the object is not touched by the allocator. Then the hint would be useful >> again. > > It is usefull right now for ((SLAB_DESTROY_BY_RCU | SLAB_POISON) or ctor > caches.
Correct.
> Probably not that important because many objects are very large anyway, and a > prefetchw() > of the begining of object is partial.
Right.
| |