On Thu, Mar 29, 2012 at 11:52:24AM +1100, Dave Chinner wrote: > I suspect that this can be done without much API churn, and it would > remove the central per-AG buffer cache lookups for most operations. > Smaller caches means less lookup overhead for most operations - with > 10-11% of CPU time being spent in lookups on an 8p machine, that's > almost an entire CPU worth of time being used. Hence reducing the > rbtree lookup and modification overhead should be a significant win. > > Crazy idea, yes, but I'm going to think about it some more, > especially as the shrinker operates of the LRU and is entirely > independent of the rbtree indexing..... Sounds like a good idea to me. I think the biggest win will be to index the directory blocks logically, e.g. have a tree hanging off the inode to find them. The other worthwhile optimizations besides avoiding AGI buffer lookups during inode scanning would be to do something more about inode buffers - probably a tree that maps directly from inode number to the backing buffer. I'd probably add the secondary tree linkage directly to the buffer to keep things simpler. In fact I'm not even sure we need a secondary linkage - at least from a quick look I can't see why we'd need to keep buffers on the physically indexed per-ag rbtree if we can find them by other means. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs