Dipankar Sarma 529bf6be5c [PATCH] fix file counting
I have benchmarked this on an x86_64 NUMA system and see no significant
performance difference on kernbench.  Tested on both x86_64 and powerpc.

The way we do file struct accounting is not very suitable for batched
freeing.  For scalability reasons, file accounting was
constructor/destructor based.  This meant that nr_files was decremented
only when the object was removed from the slab cache.  This is susceptible
to slab fragmentation.  With RCU based file structure, consequent batched
freeing and a test program like Serge's, we just speed this up and end up
with a very fragmented slab -

llm22:~ # cat /proc/sys/fs/file-nr
587730  0       758844

At the same time, I see only a 2000+ objects in filp cache.  The following
patch I fixes this problem.

This patch changes the file counting by removing the filp_count_lock.
Instead we use a separate percpu counter, nr_files, for now and all
accesses to it are through get_nr_files() api.  In the sysctl handler for
nr_files, we populate files_stat.nr_files before returning to user.

Counting files as an when they are created and destroyed (as opposed to
inside slab) allows us to correctly count open files with RCU.

Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-08 14:14:01 -08:00
..
2006-01-08 20:13:48 -08:00
2006-01-11 18:42:13 -08:00
2006-01-18 19:20:30 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-10-30 17:37:32 -08:00
2006-01-11 18:42:13 -08:00
2005-10-08 15:00:57 -07:00
2005-10-30 17:37:17 -08:00
2006-01-09 15:59:19 -08:00
2006-01-08 20:13:40 -08:00
2005-07-07 18:23:46 -07:00
2006-03-08 14:14:01 -08:00
2005-04-16 15:20:36 -07:00
2005-09-10 10:06:21 -07:00
2006-02-07 20:57:47 -05:00
2006-03-08 14:14:01 -08:00
2006-01-11 18:42:13 -08:00
2005-04-16 15:20:36 -07:00