Messages in this thread | | | Date | Sat, 8 May 2004 20:53:57 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: dentry bloat. |
| |
On Sat, 8 May 2004, David S. Miller wrote: > > FWIW this patch does not change the dentry size on sparc64. > It's 256 bytes both before and after. But of course the > inline string length is larger.
Yup. I tested it on ppc64, that was part of the reason for the increase in the inline string size ("reclaim the lost space" rather than "make the dentry shrink from 256 bytes to 248 bytes").
That shows how broken the old setup was, btw: on 64-bit architectures, the old code resulted in the inline string size being 16 bytes, while on a P4 it would be something like 120 bytes. That makes no sense.
Btw, the cacheline alignment was actually likely to guarantee the _worst_ possible cache behaviour on a P4: the fields we access on lookup are:
- d_hash (pointer *2) - d_bucket (pointer) - d_move_count (unsigned long) - d_name.hash (part of a struct with 1 pointer + 2 ints) - d_parent (pointer)
and they were all close together, but I think "d_bucket" was guaranteed to be in another cacheline exactly because of the thing always being aligned. So removing the alignment is likely to cause more of the lookups to only need one cacheline instead of two like it was before.
I think. Maybe I counted the offsets wrong.
Linus - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |