linux/Documentation/ABI/testing
Mike Snitzer 0ce65797a7 dm: impose configurable deadline for dm_request_fn's merge heuristic
Otherwise, for sequential workloads, the dm_request_fn can allow
excessive request merging at the expense of increased service time.

Add a per-device sysfs attribute to allow the user to control how long a
request, that is a reasonable merge candidate, can be queued on the
request queue.  The resolution of this request dispatch deadline is in
microseconds (ranging from 1 to 100000 usecs), to set a 20us deadline:
  echo 20 > /sys/block/dm-7/dm/rq_based_seq_io_merge_deadline

The dm_request_fn's merge heuristic and associated extra accounting is
disabled by default (rq_based_seq_io_merge_deadline is 0).

This sysfs attribute is not applicable to bio-based DM devices so it
will only ever report 0 for them.

By allowing a request to remain on the queue it will block others
requests on the queue.  But introducing a short dequeue delay has proven
very effective at enabling certain sequential IO workloads on really
fast, yet IOPS constrained, devices to build up slightly larger IOs --
yielding 90+% throughput improvements.  Having precise control over the
time taken to wait for larger requests to build affords control beyond
that of waiting for certain IO sizes to accumulate (which would require
a deadline anyway).  This knob will only ever make sense with sequential
IO workloads and the particular value used is storage configuration
specific.

Given the expected niche use-case for when this knob is useful it has
been deemed acceptable to expose this relatively crude method for
crafting optimal IO on specific storage -- especially given the solution
is simple yet effective.  In the context of DM multipath, it is
advisable to tune this sysfs attribute to a value that offers the best
performance for the common case (e.g. if 4 paths are expected active,
tune for that; if paths fail then performance may be slightly reduced).

Alternatives were explored to have request-based DM autotune this value
(e.g. if/when paths fail) but they were quickly deemed too fragile and
complex to warrant further design and development time.  If this problem
proves more common as faster storage emerges we'll have to look at
elevating a generic solution into the block core.

Tested-by: Shiva Krishna Merla <shivakrishna.merla@netapp.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
2015-04-15 12:10:15 -04:00
..
configfs-spear-pcie-gadget
configfs-usb-gadget usb: gadget: configfs: OS Extended Properties descriptors support 2014-05-14 09:39:51 -05:00
configfs-usb-gadget-acm Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-ecm Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-eem Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-ffs Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-hid usb: gadget: hid: add configfs support 2014-11-06 16:18:19 -06:00
configfs-usb-gadget-loopback Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-mass-storage Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-midi usb: gadget: f_midi: add configfs support 2014-11-05 13:37:17 -06:00
configfs-usb-gadget-ncm Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-obex Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-phonet Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-rndis Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-serial Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-sourcesink Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-subset Documentation: fix multiple typo occurences s/KenelVersion/KernelVersion/ 2014-01-29 16:22:40 -08:00
configfs-usb-gadget-uac1 usb: gadget: f_uac1: add configfs support 2014-08-20 14:05:21 -05:00
configfs-usb-gadget-uac2 usb: gadget: f_uac2: add configfs support 2014-08-20 14:04:42 -05:00
configfs-usb-gadget-uvc usb: gadget: uvc: configfs support in uvc function 2015-01-12 12:13:26 -06:00
debugfs-driver-genwqe GenWQE Debugfs interfaces 2013-12-18 16:51:15 -08:00
debugfs-ec
debugfs-ideapad
debugfs-olpc
debugfs-pfo-nx-crypto
debugfs-pktcdvd
dev-kmsg
evm
ima_policy ima: add support for measuring and appraising firmware 2014-07-25 11:47:46 -07:00
procfs-diskstats
pstore
sysfs-ata
sysfs-block block: Add a disk flag to block integrity profile 2014-09-27 09:14:51 -06:00
sysfs-block-bcache
sysfs-block-dm dm: impose configurable deadline for dm_request_fn's merge heuristic 2015-04-15 12:10:15 -04:00
sysfs-block-rssd
sysfs-block-zram zram: use notify_free to account all free notifications 2014-10-09 22:26:03 -04:00
sysfs-bus-acpi ACPI: Add sysfs ABI documentation 2013-06-21 00:13:15 +02:00
sysfs-bus-amba ARM: 8256/1: driver coamba: add device binding path 'driver_override' 2015-02-10 10:23:15 +00:00
sysfs-bus-bcma
sysfs-bus-coresight-devices-etb10 coresight: Adding ABI documentation 2014-11-26 19:27:28 -08:00
sysfs-bus-coresight-devices-etm3x coresight: Adding ABI documentation 2014-11-26 19:27:28 -08:00
sysfs-bus-coresight-devices-funnel coresight: Adding ABI documentation 2014-11-26 19:27:28 -08:00
sysfs-bus-coresight-devices-tmc coresight: Adding ABI documentation 2014-11-26 19:27:28 -08:00
sysfs-bus-css
sysfs-bus-event_source-devices-events perf Documentation: Add event parameters 2015-01-21 13:24:33 -03:00
sysfs-bus-event_source-devices-format perf: Expand definition of sysfs format attribute 2013-05-29 16:11:40 +03:00
sysfs-bus-event_source-devices-hv_24x7 powerpc/perf/hv-24x7: Document sysfs event description entries 2015-02-02 17:56:40 +11:00
sysfs-bus-event_source-devices-hv_gpci powerpc: Update contact info in Documentation files 2014-10-07 16:58:06 +11:00
sysfs-bus-fcoe
sysfs-bus-hsi
sysfs-bus-i2c-devices-fsa9480
sysfs-bus-i2c-devices-hm6352
sysfs-bus-i2c-devices-lm3533
sysfs-bus-iio iio: add driver for Freescale MMA9553 2015-01-30 20:34:59 +00:00
sysfs-bus-iio-accel-bmc150 iio: accel: BMC150 accel documentation 2014-08-07 11:44:45 +01:00
sysfs-bus-iio-frequency-ad9523 iio: move ABI specification for store_eeprom; is used by ad9523, mcp4725 and ds1077 devices 2013-08-03 18:40:31 +01:00
sysfs-bus-iio-frequency-adf4350 iio: fix typo, Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 2013-08-03 18:40:32 +01:00
sysfs-bus-iio-gyro-bmg160 iio:gyro:bmg160 documentation 2014-08-26 18:37:50 +01:00
sysfs-bus-iio-light-lm3533-als
sysfs-bus-iio-mpu6050
sysfs-bus-iio-proximity-as3935 iio: Add AS3935 lightning sensor support 2014-03-16 18:00:32 +00:00
sysfs-bus-iio-trigger-sysfs iio: Move documentation of iio-trig-sysfs to ABI/testing 2014-06-14 16:05:24 +01:00
sysfs-bus-mdio net: phy: expose phydev->has_fixups to sysfs 2014-02-12 19:08:49 -05:00
sysfs-bus-media
sysfs-bus-mei
sysfs-bus-pci PCI: Allow numa_node override via sysfs 2014-11-06 15:10:06 -07:00
sysfs-bus-pci-devices-cciss
sysfs-bus-pci-drivers-ehci_hcd
sysfs-bus-platform driver core: platform: add device binding path 'driver_override' 2014-07-08 15:31:26 -07:00
sysfs-bus-rbd rbd: show the entire chain of parent images 2014-07-25 13:14:27 +04:00
sysfs-bus-rpmsg
sysfs-bus-umc
sysfs-bus-usb USB / PM: Drop CONFIG_PM_RUNTIME from the USB core 2014-12-04 00:51:54 +01:00
sysfs-bus-usb-devices-usbsevseg
sysfs-bus-usb-lvstest USB: Add LVS Test device driver 2014-07-17 17:11:09 -07:00
sysfs-c2port
sysfs-cfq-target-latency
sysfs-class
sysfs-class-backlight-driver-adp8870
sysfs-class-backlight-driver-lm3533
sysfs-class-bdi
sysfs-class-cxl cxl: Export optional AFU configuration record in sysfs 2015-02-06 11:16:56 +11:00
sysfs-class-devfreq PM / devfreq: add comments and Documentation 2013-06-03 20:20:29 +09:00
sysfs-class-extcon
sysfs-class-iommu iommu: Add sysfs support for IOMMUs 2014-07-04 12:35:59 +02:00
sysfs-class-iommu-amd-iommu iommu/amd: Add sysfs support 2014-07-04 12:35:59 +02:00
sysfs-class-iommu-intel-iommu iommu/vt-d: Make use of IOMMU sysfs support 2014-07-04 12:35:59 +02:00
sysfs-class-lcd
sysfs-class-led
sysfs-class-led-driver-lm3533
sysfs-class-leds-gt683r HID: gt683r: move mode attribute to led-class devices 2014-07-03 11:14:11 -07:00
sysfs-class-mei mei: add ABI documentation for fw_status exported through sysfs 2015-01-09 14:53:13 -08:00
sysfs-class-mic.txt misc: mic: Enable OSPM suspend and resume support. 2013-10-05 18:01:42 -07:00
sysfs-class-mtd mtd: Add sysfs attributes to expose the ECC stats fields 2014-07-08 18:37:26 -07:00
sysfs-class-net net-sysfs: expose physical switch id for particular device 2014-12-02 20:01:22 -08:00
sysfs-class-net-batman-adv batman-adv: update email address for Marek Lindner 2013-10-19 14:53:48 +02:00
sysfs-class-net-cdc_ncm net: cdc_ncm: document the sysfs API 2014-06-02 16:01:31 -07:00
sysfs-class-net-grcan
sysfs-class-net-mesh batman-adv: Modified forwarding behaviour for multicast packets 2014-03-22 09:18:57 +01:00
sysfs-class-net-queues net: sysfs: add documentation entries for /sys/class/<iface>/queues 2014-05-26 01:01:47 -04:00
sysfs-class-net-statistics net: sysfs: document /sys/class/net/statistics/* 2014-05-26 01:02:20 -04:00
sysfs-class-pktcdvd
sysfs-class-power Documentation: power: max77693-charger: Document exported sysfs entry 2015-01-20 14:04:12 +01:00
sysfs-class-powercap PowerCap: Documentation 2013-10-17 00:36:06 +02:00
sysfs-class-pwm pwm: Add sysfs interface 2013-06-21 11:32:51 +02:00
sysfs-class-rc [media] rc: add wakeup_protocols sysfs file 2014-03-11 13:28:20 -03:00
sysfs-class-regulator
sysfs-class-rtc-rtc0-device-rtc_calibration
sysfs-class-scsi_host [SCSI] hpsa: allow user to disable accelerated i/o path 2014-03-15 10:19:07 -07:00
sysfs-class-uwb_rc uwb: doc: add documentation for ASIE sysfs attribute 2014-09-23 22:05:26 -07:00
sysfs-class-uwb_rc-wusbhc wusbcore: add entries in Documentation/ABI for new wusbhc sysfs attributes 2013-06-24 16:19:03 -07:00
sysfs-dev
sysfs-devices
sysfs-devices-edac MAINTAINERS & ABI: Update to point to my new email 2013-07-08 11:04:11 -03:00
sysfs-devices-firmware_node
sysfs-devices-lpss_ltr
sysfs-devices-memory memory-hotplug: add sysfs valid_zones attribute 2014-10-09 22:25:52 -04:00
sysfs-devices-mmc
sysfs-devices-online Driver core: Add offline/online device operations 2013-05-12 14:14:09 +02:00
sysfs-devices-platform-_UDC_-gadget
sysfs-devices-platform-docg3
sysfs-devices-platform-sh_mobile_lcdc_fb
sysfs-devices-power PM / wakeup: Correct presence vs. emptiness of wakeup_* attributes 2014-04-07 14:18:24 +02:00
sysfs-devices-power_resources_D0
sysfs-devices-power_resources_D1
sysfs-devices-power_resources_D2
sysfs-devices-power_resources_D3hot
sysfs-devices-power_resources_wakeup ACPI / PM: Expose lists of device wakeup power resources to user space 2013-04-11 22:41:48 +02:00
sysfs-devices-power_state
sysfs-devices-real_power_state
sysfs-devices-resource_in_use
sysfs-devices-soc
sysfs-devices-sun ACPI: Add sysfs ABI documentation 2013-06-21 00:13:15 +02:00
sysfs-devices-system-cpu drivers: base: support cpu cache information interface to userspace via sysfs 2014-11-07 11:45:00 -08:00
sysfs-devices-system-ibm-rtl
sysfs-devices-system-xen_cpu
sysfs-driver-genwqe GenWQE: Add sysfs interface for bitstream reload 2014-07-09 14:14:27 -07:00
sysfs-driver-hid
sysfs-driver-hid-lenovo HID: lenovo: Add support for Compact (BT|USB) keyboard 2014-07-29 11:24:47 +02:00
sysfs-driver-hid-logitech-lg4ff
sysfs-driver-hid-multitouch
sysfs-driver-hid-picolcd
sysfs-driver-hid-prodikeys
sysfs-driver-hid-roccat-arvo
sysfs-driver-hid-roccat-isku
sysfs-driver-hid-roccat-kone
sysfs-driver-hid-roccat-koneplus
sysfs-driver-hid-roccat-konepure
sysfs-driver-hid-roccat-kovaplus
sysfs-driver-hid-roccat-lua
sysfs-driver-hid-roccat-pyra
sysfs-driver-hid-roccat-ryos HID: roccat: add support for Ryos MK keyboards 2013-10-30 14:17:31 +01:00
sysfs-driver-hid-roccat-savu
sysfs-driver-hid-srws1
sysfs-driver-hid-wiimote HID: wiimote: add pro-controller analog stick calibration 2013-10-30 14:13:29 +01:00
sysfs-driver-input-axp-pek Input: add driver for AXP20x Power Enable Key 2015-01-08 13:53:51 -08:00
sysfs-driver-intel-rapid-start Add support driver for Intel Rapid Start Technology 2013-07-10 15:42:48 -04:00
sysfs-driver-pciback xen-pciback: Document the 'quirks' sysfs file 2014-08-01 16:02:34 +01:00
sysfs-driver-ppi
sysfs-driver-samsung-laptop samsung-laptop: enable better lid handling 2015-02-06 18:33:55 -08:00
sysfs-driver-sunxi-sid ARM: sunxi: Initial support for Allwinner's Security ID fuses 2013-09-26 13:47:36 -07:00
sysfs-driver-tegra-fuse soc/tegra: Add efuse driver for Tegra 2014-07-17 14:36:01 +02:00
sysfs-driver-toshiba_acpi Documentation/ABI: Add file describing the sysfs entries for toshiba_acpi 2015-02-11 21:04:35 -08:00
sysfs-driver-wacom Input: wacom - update the ABI doc according to latest changes 2014-08-07 23:26:06 -07:00
sysfs-driver-xen-blkback xen-blkback/sysfs: Move the parameters for the persistent grant features 2013-06-04 15:58:43 -04:00
sysfs-driver-xen-blkfront xen-blkfront: Introduce a 'max' module parameter to alter the amount of indirect segments. 2013-06-04 15:58:35 -04:00
sysfs-firmware-acpi ACPI / hotplug: Use device offline/online for graceful hot-removal 2013-05-12 14:14:24 +02:00
sysfs-firmware-dmi
sysfs-firmware-efi efi: Export more EFI table variables to sysfs 2013-12-21 15:29:36 +00:00
sysfs-firmware-efi-runtime-map efi: Export EFI runtime memory mapping to sysfs 2013-12-21 15:29:36 +00:00
sysfs-firmware-gsmi
sysfs-firmware-log
sysfs-firmware-memmap
sysfs-firmware-ofw of: Make device nodes kobjects so they show up in sysfs 2014-03-11 20:48:26 +00:00
sysfs-firmware-sfi
sysfs-firmware-sgi_uv
sysfs-fs-ext4
sysfs-fs-f2fs f2fs: introduce a batched trim 2015-02-11 17:04:44 -08:00
sysfs-fs-nilfs2 nilfs2: add /sys/fs/nilfs2/<device>/mounted_snapshots/<snapshot> group 2014-08-08 15:57:21 -07:00
sysfs-fs-xfs xfs: document log sysfs attributes in testing ABI 2014-07-15 08:09:06 +10:00
sysfs-gpio
sysfs-i2c-bmp085
sysfs-ibft Documentation/ABI/testing/sysfs-ibft: fix a typo 2014-10-21 10:31:26 -04:00
sysfs-kernel-boot_params x86: Export x86 boot_params to sysfs 2013-12-29 13:09:07 +00:00
sysfs-kernel-fscaps
sysfs-kernel-iommu_groups
sysfs-kernel-livepatch livepatch: kernel: add support for live patching 2014-12-22 15:40:49 +01:00
sysfs-kernel-mm
sysfs-kernel-mm-hugepages
sysfs-kernel-mm-ksm
sysfs-kernel-slab
sysfs-kernel-uids
sysfs-kernel-vmcoreinfo kdump: add /sys/kernel/vmcoreinfo ABI documentation 2014-01-23 16:37:03 -08:00
sysfs-memory-page-offline
sysfs-module Use 'E' instead of 'X' for unsigned module taint flag. 2014-03-31 14:52:43 +10:30
sysfs-ocfs2
sysfs-platform-asus-laptop
sysfs-platform-asus-wmi
sysfs-platform-at91
sysfs-platform-brcmstb-gisb-arb Documentation: sysfs: add Broadcom GISB arbiter sysfs properties 2014-05-24 00:58:44 +02:00
sysfs-platform-chipidea-usb-otg Documentation: ABI: usb: sysfs Description for chipidea USB OTG HNP and SRP 2014-04-24 12:56:35 -07:00
sysfs-platform-eeepc-laptop
sysfs-platform-ideapad-laptop
sysfs-platform-kim
sysfs-platform-msi-laptop
sysfs-platform-tahvo-usb usb: omap1: Tahvo USB transceiver driver 2013-12-06 14:46:32 -06:00
sysfs-platform-ts5500 x86/platform/ts5500: Add a 'name' sysfs attribute 2014-07-16 21:17:41 +02:00
sysfs-power PM / sleep: Introduce command line argument for sleep state enumeration 2014-05-26 13:40:59 +02:00
sysfs-pps
sysfs-profiling
sysfs-ptp ptp: expose the programmable pins via sysfs 2014-03-21 14:21:14 -04:00
sysfs-tty serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers 2014-07-17 18:23:35 -07:00
sysfs-wusb_cbaf