On Mon, Dec 05, 2011 at 03:32:31PM +1100, Dave Chinner wrote:
> > + /*
> > + * move the dquot to the front of the hashchain
> > + */
> > + list_move(&dqp->q_hashlist, &qh->qh_list);
> > + trace_xfs_dqlookup_done(dqp);
> > + *O_dqpp = dqp;
> > + return 0;
>
> Back when the inode cache used a hash, we found that this moving of
> the item to the front of the list actually slowed down lookups - the
> impact of dirtying cachelines (i.e. remote CPU cache invalidation)
> to move the item in the list was greater than the time saved during
> lookups. That was because that when there are no hash chain
> modifications taking place, then the frequently hit chains simply
> end up shared in all the cpu caches rather than being turfed out on
> every successful lookup on a different CPU....
Yes, I doubt having this is an overly good idea. But instead of
spending more time on optimizing the cache I'd prefer getting the
patches to move to a tree in after another merge window or two.
|