aha/include
Peter Zijlstra 04fbfdc14e mm: per device dirty threshold
Scale writeback cache per backing device, proportional to its writeout speed.

By decoupling the BDI dirty thresholds a number of problems we currently have
will go away, namely:

 - mutual interference starvation (for any number of BDIs);
 - deadlocks with stacked BDIs (loop, FUSE and local NFS mounts).

It might be that all dirty pages are for a single BDI while other BDIs are
idling. By giving each BDI a 'fair' share of the dirty limit, each one can have
dirty pages outstanding and make progress.

A global threshold also creates a deadlock for stacked BDIs; when A writes to
B, and A generates enough dirty pages to get throttled, B will never start
writeback until the dirty pages go away. Again, by giving each BDI its own
'independent' dirty limit, this problem is avoided.

So the problem is to determine how to distribute the total dirty limit across
the BDIs fairly and efficiently. A DBI that has a large dirty limit but does
not have any dirty pages outstanding is a waste.

What is done is to keep a floating proportion between the DBIs based on
writeback completions. This way faster/more active devices get a larger share
than slower/idle devices.

[akpm@linux-foundation.org: fix warnings]
[hugh@veritas.com: Fix occasional hang when a task couldn't get out of balance_dirty_pages]
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-17 08:42:45 -07:00
..
acpi
asm-alpha alpha: beautify vmlinux.lds 2007-10-16 09:43:03 -07:00
asm-arm imxfb: fast read flag and nonstandard field configurable 2007-10-16 09:43:21 -07:00
asm-avr32 kprobes: support kretprobe blacklist 2007-10-16 09:43:10 -07:00
asm-blackfin bf54x-lq043fb: framebuffer driver for Blackfin BF54x framebuffer device driver 2007-10-16 09:43:20 -07:00
asm-cris
asm-frv include/asm-frv/thread_info.h: kmalloc + memset conversion to kzalloc 2007-10-16 09:43:03 -07:00
asm-generic flush icache before set_pte() on ia64: flush icache at set_pte 2007-10-16 09:42:59 -07:00
asm-h8300
asm-ia64 Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block 2007-10-16 10:09:16 -07:00
asm-m32r m32r: convert to generic sys_ptrace 2007-10-16 09:43:04 -07:00
asm-m68k
asm-m68knommu M68KNOMMU: remove unused config symbol CONFIG_DISKtel 2007-10-16 09:43:03 -07:00
asm-mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2007-10-16 10:44:35 -07:00
asm-parisc
asm-powerpc powerpc: add Altivec/VMX state to coredumps 2007-10-17 08:42:44 -07:00
asm-ppc
asm-s390 kprobes: support kretprobe blacklist 2007-10-16 09:43:10 -07:00
asm-sh x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
asm-sh64
asm-sparc SPARC: sg chaining support 2007-10-16 11:27:32 +02:00
asm-sparc64 Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block 2007-10-16 10:09:16 -07:00
asm-um uml: style fixes in FP code 2007-10-16 09:43:07 -07:00
asm-v850
asm-x86 x86: replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define 2007-10-17 08:42:44 -07:00
asm-xtensa
crypto
keys
linux mm: per device dirty threshold 2007-10-17 08:42:45 -07:00
math-emu
media
mtd
net [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
pcmcia pcmcia: use DMA_MASK_NONE for the default for all pcmcia devices 2007-10-16 09:42:50 -07:00
rdma
rxrpc
scsi remove sglist_len 2007-10-16 11:24:44 +02:00
sound [ALSA] version 1.0.15 2007-10-16 16:57:46 +02:00
video pm2fb: hardware cursor support for the Permedia2 2007-10-16 09:43:18 -07:00
xen
Kbuild