linux/drivers
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
..
acorn [ARM] Turn ARM RiscPC PCF8583 i2c RTC driver into a proper module 2005-10-30 19:07:59 +00:00
acpi [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
atm [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
base [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
block [PATCH] as: cooperating processes 2005-11-07 07:53:43 -08:00
bluetooth [Bluetooth] Ignore additional interfaces of BPA 100/105 devices 2005-10-28 19:20:57 +02:00
cdrom merge filename and modify references to iseries/vio.h 2005-11-02 15:13:57 +11:00
char [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
connector [PATCH] Process Events Connector 2005-11-07 07:53:35 -08:00
cpufreq [PATCH] create and destroy cpufreq sysfs entries based on cpu notifiers 2005-10-30 17:37:14 -08:00
crypto [PATCH] CONFIG_IA32 2005-10-30 17:37:10 -08:00
dio
eisa Create platform_device.h to contain all the platform device details. 2005-10-29 19:07:23 +01:00
fc4 [SCSI] fc4 warning fix 2005-07-30 09:47:53 -05:00
firmware [PATCH] dell_rbu: Adding BIOS memory floor support 2005-11-07 07:53:36 -08:00
hwmon [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
i2c Merge master.kernel.org:/home/rmk/linux-2.6-arm 2005-11-01 21:32:14 -08:00
ide Merge ../linux-2.6 by hand 2005-10-31 13:37:12 +11:00
ieee1394 Merge ../bleed-2.6 2005-10-28 10:13:16 -07:00
infiniband [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
input [PATCH] i386: CONFIG_PC removal 2005-10-31 09:20:54 -08:00
isdn [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
macintosh Merge ../linux-2.6 2005-11-02 15:20:55 +11:00
mca [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
md [BLOCK] Unify the seperate read/write io stat fields into arrays 2005-11-01 09:26:16 +01:00
media [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
message [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
mfd [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
misc Create platform_device.h to contain all the platform device details. 2005-10-29 19:07:23 +01:00
mmc [MMC] Use controller id instead of driver name for printks 2005-11-05 10:36:35 +00:00
mtd Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-10-31 07:32:56 -08:00
net [PATCH] 3c59x: don't enable scatter/gather w/o checksum support 2005-11-07 07:53:25 -08:00
nubus
oprofile [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
parisc Auto-update from upstream 2005-10-28 12:18:07 -04:00
parport [PARISC] Convert parisc_device to use struct resource for hpa 2005-10-21 22:36:40 -04:00
pci [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
pcmcia Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-10-31 07:32:56 -08:00
pnp [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
s390 [PATCH] s390: fix memory leak in vmcp 2005-11-07 07:53:34 -08:00
sbus [PATCH] Remove unnecessary check_region references in comments 2005-09-13 08:22:29 -07:00
scsi [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
serial [PATCH] serial console: touch NMI watchdog 2005-11-07 07:53:35 -08:00
sh [PATCH] superhyway: multiple block support and VCR rework 2005-11-07 07:53:28 -08:00
sn
tc Use physical addresses at the interface level, letting drivers remap 2005-10-29 19:31:35 +01:00
telephony [PATCH] telephony: fix-up schedule_timeout() usage 2005-09-10 10:06:39 -07:00
usb [USB]: Make early handoff a final fixup instead of a header one. 2005-11-04 11:17:24 -08:00
video Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel 2005-11-06 16:58:38 -08:00
w1 [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
zorro [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
Kconfig [NET]: Add netlink connector. 2005-09-11 19:15:07 -07:00
Makefile [PATCH] sh: Re-add sh to drivers/Makefile 2005-11-07 07:53:27 -08:00