1
linux/include
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
..
acpi [ACPI] ACPICA 20060127 2006-01-31 03:25:09 -05:00
asm-alpha [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-arm [ARM] 3352/1: DSB required for the completion of a TLB maintenance operation 2006-03-07 14:42:27 +00:00
asm-arm26 [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-cris [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-frv [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-generic [PATCH] __get_unaligned() gcc-4 fix 2006-03-08 14:14:00 -08:00
asm-h8300 [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-i386 [PATCH] x86: fix broken SMP boot sequence 2006-02-24 14:31:38 -08:00
asm-ia64 [IA64-SGI] Make number of TIO nodes configurable 2006-02-27 15:32:28 -08:00
asm-m32r [PATCH] m32r: fix and update for gcc-4.0 2006-02-24 14:31:36 -08:00
asm-m68k [PATCH] iomap_copy fallout (m68k) 2006-02-18 16:30:40 -05:00
asm-m68knommu [PATCH] m68knommu: hardirq.h needs definition of NR_IRQS 2006-02-07 16:16:54 -08:00
asm-mips [MIPS] Fix build error on processors that don's support copy-on-write. 2006-02-28 17:04:20 +00:00
asm-parisc [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-powerpc [PATCH] powerpc: restore eeh_add_device_late() prototype stub 2006-03-08 14:14:00 -08:00
asm-ppc [PATCH] powerpc: remove duplicate exports 2006-02-20 10:44:31 +11:00
asm-s390 [PATCH] s390: fix compile with VIRT_CPU_ACCOUNTING=n 2006-03-06 18:40:44 -08:00
asm-sh [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-sh64 [PATCH] sh/sh64: Fix bogus TIOCGICOUNT definitions 2006-02-01 08:53:20 -08:00
asm-sparc [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-sparc64 [SPARC64]: Mark __ex_table section correctly. 2006-03-04 23:23:56 -08:00
asm-um [PATCH] uml: avoid "CONFIG_NR_CPUS undeclared" bogus error messages 2006-02-01 08:53:23 -08:00
asm-v850 [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
asm-x86_64 Revert "[PATCH] x86_64: Only do the clustered systems have unsynchronized TSC assumption on IBM systems" 2006-02-27 20:41:56 -08:00
asm-xtensa [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
keys [PATCH] Keys: Remove key duplication 2006-01-06 08:33:29 -08:00
linux [PATCH] fix file counting 2006-03-08 14:14:01 -08:00
math-emu
media V4L/DVB (3388): tuner_params->tda988x is currently unused, so disable 2006-01-15 21:28:17 -02:00
mtd
net [IPSEC]: Kill post_input hook and do NAT-T in esp_input directly 2006-02-27 13:00:40 -08:00
pcmcia [PATCH] pcmcia: Add macro to match PCMCIA cards by numeric ID and first vendor string 2006-03-01 11:11:26 +01:00
rdma IB: Add node_guid to struct ib_device 2006-01-10 07:39:34 -08:00
rxrpc
scsi [PATCH] add scsi_execute_in_process_context() API 2006-02-14 11:14:26 -06:00
sound [PATCH] DocBook: fix kernel-doc comments 2006-01-10 08:01:53 -08:00
video [PATCH] neofb: avoid resetting display config on unblank (v2) 2006-02-15 15:32:21 -08:00