Your patches improve the performance if lots of processes areaccessing the same file at the same time, right?

If so, I think we can introduce multiple radix-trees instead,which enhance each inode to be able to have two or more radix-treesin it to avoid the race condition traversing the trees.Some decision mechanism is needed which radix-tree each pageshould be in, how many radix-tree should be prepared.

It seems to be simple and effective.

What do you think?

> Now the tree_lock was recently(ish) converted to an rwlock, precisely> for such a workload and that was apparently very successful. However> an rwlock is significantly heavier, and as machines get faster and> bigger, rwlocks (and any locks) will tend to use more and more of Paul> McKenney's toilet paper due to cacheline bouncing.> > So in the interest of saving some trees, let's try it without any locks.> > First I'll put up some numbers to get you interested - of a 64-way Altix> with 64 processes each read-faulting in their own 512MB part of a 32GB> file that is preloaded in pagecache (with the proper NUMA memory> allocation).