Revision d7831a0bdf06b9f722b947bb0c205ff7d77cebd8 authored by Richard Kennedy on 30 June 2009, 18:41:35 UTC, committed by Linus Torvalds on 01 July 2009, 01:56:01 UTC
balance_dirty_pages can overreact and move all of the dirty pages to
writeback unnecessarily.

balance_dirty_pages makes its decision to throttle based on the number of
dirty plus writeback pages that are over the calculated limit,so it will
continue to move pages even when there are plenty of pages in writeback
and less than the threshold still dirty.

This allows it to overshoot its limits and move all the dirty pages to
writeback while waiting for the drives to catch up and empty the writeback
list.

A simple fio test easily demonstrates this problem.

fio --name=f1 --directory=/disk1 --size=2G -rw=write --name=f2 --directory=/disk2 --size=1G --rw=write --startdelay=10

This is the simplest fix I could find, but I'm not entirely sure that it
alone will be enough for all cases.  But it certainly is an improvement on
my desktop machine writing to 2 disks.

Do we need something more for machines with large arrays where
bdi_threshold * number_of_drives is greater than the dirty_ratio ?

Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent df279ca
Raw File
Kconfig
#
# Input device configuration
#

menu "Input device support"
	depends on !S390

config INPUT
	tristate "Generic input layer (needed for keyboard, mouse, ...)" if EMBEDDED
	default y
	---help---
	  Say Y here if you have any input device (mouse, keyboard, tablet,
	  joystick, steering wheel ...) connected to your system and want
	  it to be available to applications. This includes standard PS/2
	  keyboard and mouse.

	  Say N here if you have a headless (no monitor, no keyboard) system.

	  More information is available: <file:Documentation/input/input.txt>

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called input.

if INPUT

config INPUT_FF_MEMLESS
	tristate "Support for memoryless force-feedback devices"
	default n
	---help---
	  Say Y here if you have memoryless force-feedback input device
	  such as Logitech WingMan Force 3D, ThrustMaster FireStorm Dual
	  Power 2, or similar. You will also need to enable hardware-specific
	  driver.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ff-memless.

config INPUT_POLLDEV
	tristate "Polled input device skeleton"
	help
	  Say Y here if you are using a driver for an input
	  device that periodically polls hardware state. This
	  option is only useful for out-of-tree drivers since
	  in-tree drivers select it automatically.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called input-polldev.

comment "Userland interfaces"

config INPUT_MOUSEDEV
	tristate "Mouse interface" if EMBEDDED
	default y
	---help---
	  Say Y here if you want your mouse to be accessible as char devices
	  13:32+ - /dev/input/mouseX and 13:63 - /dev/input/mice as an
	  emulated IntelliMouse Explorer PS/2 mouse. That way, all user space
	  programs (including SVGAlib, GPM and X) will be able to use your
	  mouse.

	  If unsure, say Y.

	  To compile this driver as a module, choose M here: the
	  module will be called mousedev.

config INPUT_MOUSEDEV_PSAUX
	bool "Provide legacy /dev/psaux device"
	default y
	depends on INPUT_MOUSEDEV
	---help---
	  Say Y here if you want your mouse also be accessible as char device
	  10:1 - /dev/psaux. The data available through /dev/psaux is exactly
	  the same as the data from /dev/input/mice.

	  If unsure, say Y.


config INPUT_MOUSEDEV_SCREEN_X
	int "Horizontal screen resolution"
	depends on INPUT_MOUSEDEV
	default "1024"
	help
	  If you're using a digitizer, or a graphic tablet, and want to use
	  it as a mouse then the mousedev driver needs to know the X window
	  screen resolution you are using to correctly scale the data. If
	  you're not using a digitizer, this value is ignored.

config INPUT_MOUSEDEV_SCREEN_Y
	int "Vertical screen resolution"
	depends on INPUT_MOUSEDEV
	default "768"
	help
	  If you're using a digitizer, or a graphic tablet, and want to use
	  it as a mouse then the mousedev driver needs to know the X window
	  screen resolution you are using to correctly scale the data. If
	  you're not using a digitizer, this value is ignored.

config INPUT_JOYDEV
	tristate "Joystick interface"
	---help---
	  Say Y here if you want your joystick or gamepad to be
	  accessible as char device 13:0+ - /dev/input/jsX device.

	  If unsure, say Y.

	  More information is available: <file:Documentation/input/joystick.txt>

	  To compile this driver as a module, choose M here: the
	  module will be called joydev.

config INPUT_EVDEV
	tristate "Event interface"
	help
	  Say Y here if you want your input device events be accessible
	  under char device 13:64+ - /dev/input/eventX in a generic way.

	  To compile this driver as a module, choose M here: the
	  module will be called evdev.

config INPUT_EVBUG
	tristate "Event debugging"
	---help---
	  Say Y here if you have a problem with the input subsystem and
	  want all events (keypresses, mouse movements), to be output to
	  the system log. While this is useful for debugging, it's also
	  a security threat - your keypresses include your passwords, of
	  course.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called evbug.

config INPUT_APMPOWER
	tristate "Input Power Event -> APM Bridge" if EMBEDDED
	depends on INPUT && APM_EMULATION
	---help---
	  Say Y here if you want suspend key events to trigger a user
	  requested suspend through APM. This is useful on embedded
	  systems where such behaviour is desired without userspace
	  interaction. If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called apm-power.

config XEN_KBDDEV_FRONTEND
	tristate "Xen virtual keyboard and mouse support"
	depends on XEN_FBDEV_FRONTEND
	default y
	help
	  This driver implements the front-end of the Xen virtual
	  keyboard and mouse device driver.  It communicates with a back-end
	  in another domain.

comment "Input Device Drivers"

source "drivers/input/keyboard/Kconfig"

source "drivers/input/mouse/Kconfig"

source "drivers/input/joystick/Kconfig"

source "drivers/input/tablet/Kconfig"

source "drivers/input/touchscreen/Kconfig"

source "drivers/input/misc/Kconfig"

endif

menu "Hardware I/O ports"

source "drivers/input/serio/Kconfig"

source "drivers/input/gameport/Kconfig"

endmenu

endmenu

back to top