1
linux/drivers/block
Nick Piggin f5b3db0017 [PATCH] as: cooperating processes
Introduce the notion of cooperating processes (those that submit requests
close to one another), and use these statistics to make better choices about
whether or not to do anticipatory waiting.

Help and analysis from Seetharami Seelam <seelam@cs.utep.edu>

Performance testing from Seelam:

I set up my system and executed a couple of tests that I used for OLS.  I
tested with AS, cooperative process patch merged in -mm tree (which I called
Nick, below) and the cooperative patch with modifications to as_update_iohist
(which I called Seelam).

I used a dual-processor (2.28GHz Pentium 4 Xeon) system, with 1 GB main memory
and 1 MB L2 cache, running Linux 2.6.9.  Only a single processor is used for
the experiments.  I used 7.2K RPM Maxtor 10GB drive configured with ext2 file
system.

Experiment 1 (ex1) consists of reading  one Linux source trees using

  find . -type f -exec cat '{}' ';' > /dev/null.

Experiment 2 (ex2) consists of reading two disjoint Linux source trees
using

  find . -type f -exec cat '{}' ';' > /dev/null.

Experiment 3 (ex3) consists of streaming read of a 2GB file in the background
and 1 instance of the chunk reads in Experiment 1.

Timings for reading the Linux source are shown below:

             AS                     Nick          Seelam
ex1:      0m25.813s               0m27.859s      0m27.640s
ex2:      1m11.468s               1m13.918s      1m5.869s
ex3:      81m44.352s             10m38.572s      6m47.994s

The difference between the numbers in Experiment 3 must be due to the code in
as_update_iohist.  (akpm: that's not part of this patch.  So this patch is
"Nick").

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-07 07:53:43 -08:00
..
aoe [BLOCK] aoe: update for combined io statistics 2005-11-01 09:54:23 +01:00
paride [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
acsi_slm.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
acsi.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
amiflop.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
as-iosched.c [PATCH] as: cooperating processes 2005-11-07 07:53:43 -08:00
ataflop.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
cciss_cmd.h [PATCH] cciss: direct lookup for command completions 2005-09-13 08:22:30 -07:00
cciss_scsi.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
cciss_scsi.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cciss.c [PATCH] cciss: busy_initializing bug fix 2005-09-21 10:11:54 -07:00
cciss.h [PATCH] cciss: direct lookup for command completions 2005-09-13 08:22:30 -07:00
cfq-iosched.c [PATCH] Fix on-the-fly switch from cfq i/o scheduler 2005-10-31 07:41:28 -08:00
cpqarray.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpqarray.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cryptoloop.c [CRYPTO]: Use CRYPTO_TFM_REQ_MAY_SLEEP where appropriate 2005-09-01 17:43:25 -07:00
DAC960.c [PATCH] DAC960: add support for Mylex AcceleRAID 4/5/600 2005-05-05 16:36:43 -07:00
DAC960.h [PATCH] DAC960: add support for Mylex AcceleRAID 4/5/600 2005-05-05 16:36:43 -07:00
deadline-iosched.c Merge branch 'generic-dispatch' of git://brick.kernel.dk/data/git/linux-2.6-block 2005-10-28 08:53:49 -07:00
elevator.c [PATCH] blk: fix dangling pointer access in __elv_add_request 2005-11-01 21:58:06 -08:00
floppy.c Create platform_device.h to contain all the platform device details. 2005-10-29 19:07:23 +01:00
genhd.c [BLOCK] Unify the seperate read/write io stat fields into arrays 2005-11-01 09:26:16 +01:00
ida_cmd.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ida_ioctl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl.c [PATCH] block: add unlocked_ioctl support for block devices 2005-06-23 09:45:32 -07:00
Kconfig [PATCH] Kconfig fix (BLK_DEV_FD dependencies) 2005-09-07 17:17:12 -07:00
Kconfig.iosched [PATCH] block cleanups: Add kconfig default iosched submenu 2005-10-30 17:37:20 -08:00
ll_rw_blk.c [BLOCK] Unify the seperate read/write io stat fields into arrays 2005-11-01 09:26:16 +01:00
loop.c [PATCH] gfp_t: remaining bits of drivers/* 2005-10-28 08:16:51 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nbd.c [PATCH] nbd: Don't create all MAX_NBD devices by default all the time 2005-05-01 08:59:07 -07:00
noop-iosched.c [PATCH] noop-iosched: avoid corrupted request merging 2005-10-31 07:46:28 -08:00
pktcdvd.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
ps2esdi.c [PATCH] timer initialization cleanup: DEFINE_TIMER 2005-09-09 14:03:48 -07:00
rd.c [PATCH] gfp_t: remaining bits of drivers/* 2005-10-28 08:16:51 -07:00
scsi_ioctl.c [PATCH] scsi_ioctl: only warn for rejected commands 2005-10-08 15:00:57 -07:00
smart1,2.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
swim3.c [PATCH] drivers/block: fix-up schedule_timeout() usage 2005-09-10 10:06:38 -07:00
swim_iop.c [PATCH] drivers/block: fix-up schedule_timeout() usage 2005-09-10 10:06:38 -07:00
sx8.c drivers/block/sx8: kill unused variable 2005-10-22 01:33:18 -04:00
ub.c [PATCH] ub: suppress gcc warnings for pointer casts 2005-10-28 16:47:38 -07:00
umem.c [PATCH] janitor: block/umem: replace PRINTK with pr_debug 2005-09-10 10:06:33 -07:00
viodasd.c merge filename and modify references to iseries/vio.h 2005-11-02 15:13:57 +11:00
xd.c [PATCH] drivers/block: fix-up schedule_timeout() usage 2005-09-10 10:06:38 -07:00
xd.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
z2ram.c [PATCH] vfree and kfree cleanup in drivers/ 2005-09-10 10:06:30 -07:00