linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] MAX_READAHEAD gives doubled throuput
@ 2001-07-28  1:40 Roger Larsson
  2001-07-28  2:08 ` Daniel Phillips
  2001-07-28  3:14 ` Andrew Morton
  0 siblings, 2 replies; 5+ messages in thread
From: Roger Larsson @ 2001-07-28  1:40 UTC (permalink / raw)
  To: linux-mm; +Cc: linux-kernel

Hi all,

Got wondering why simultaneous streaming is so much slower than normal...

Are there any reasons nowadays why we should not attempt to read ahead more 
than 31 pages at once?

31 pages equals 0.1 MB, it is read from the HD in 4 ms => very close to the 
average access times. Resulting in a maximum of half the possible speed.

With this patch copy and diff throughput are increased from 14 respective 11 
MB/s to 27 and 28 !!!

I enable the profiling as well... (one printk warning fixed)

/RogerL

*******************************************
Patch prepared by: roger.larsson@norran.net

--- linux/mm/filemap.c.orig	Fri Jul 27 21:31:41 2001
+++ linux/mm/filemap.c	Sat Jul 28 03:01:05 2001
@@ -744,10 +744,8 @@
 	return NULL;
 }
 
-#if 0
 #define PROFILE_READAHEAD
 #define DEBUG_READAHEAD
-#endif
 
 /*
  * Read-ahead profiling information
@@ -791,13 +789,13 @@
 		}
 
 		printk("Readahead average:  max=%ld, len=%ld, win=%ld, async=%ld%%\n",
-			total_ramax/total_reada,
-			total_ralen/total_reada,
-			total_rawin/total_reada,
-			(total_async*100)/total_reada);
+		       total_ramax/total_reada,
+		       total_ralen/total_reada,
+		       total_rawin/total_reada,
+		       (total_async*100)/total_reada);
 #ifdef DEBUG_READAHEAD
-		printk("Readahead snapshot: max=%ld, len=%ld, win=%ld, raend=%Ld\n",
-			filp->f_ramax, filp->f_ralen, filp->f_rawin, filp->f_raend);
+		printk("Readahead snapshot: max=%ld, len=%ld, win=%ld, raend=%ld\n",
+		       filp->f_ramax, filp->f_ralen, filp->f_rawin, filp->f_raend);
 #endif
 
 		total_reada	= 0;
--- linux/include/linux/blkdev.h.orig	Fri Jul 27 21:36:37 2001
+++ linux/include/linux/blkdev.h	Sat Jul 28 02:51:10 2001
@@ -184,7 +184,7 @@
 #define PageAlignSize(size) (((size) + PAGE_SIZE -1) & PAGE_MASK)
 
 /* read-ahead in pages.. */
-#define MAX_READAHEAD	31
+#define MAX_READAHEAD	511
 #define MIN_READAHEAD	3
 
 #define blkdev_entry_to_request(entry) list_entry((entry), struct request, 
queue)
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] MAX_READAHEAD gives doubled throuput
  2001-07-28  1:40 [PATCH] MAX_READAHEAD gives doubled throuput Roger Larsson
@ 2001-07-28  2:08 ` Daniel Phillips
  2001-07-28  2:29   ` Roger Larsson
  2001-07-28  3:14 ` Andrew Morton
  1 sibling, 1 reply; 5+ messages in thread
From: Daniel Phillips @ 2001-07-28  2:08 UTC (permalink / raw)
  To: Roger Larsson, linux-mm; +Cc: linux-kernel

On Saturday 28 July 2001 03:40, Roger Larsson wrote:
> Hi all,
>
> Got wondering why simultaneous streaming is so much slower than
> normal...
>
> Are there any reasons nowadays why we should not attempt to read
> ahead more than 31 pages at once?
>
> 31 pages equals 0.1 MB, it is read from the HD in 4 ms => very close
> to the average access times. Resulting in a maximum of half the
> possible speed.
>
> With this patch copy and diff throughput are increased from 14
> respective 11 MB/s to 27 and 28 !!!

Wheeeeee!  Out of interest, what are the numbers for 2.4.7 vs 
2.4.8-pre1 ?

--
Daniel
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] MAX_READAHEAD gives doubled throuput
  2001-07-28  2:08 ` Daniel Phillips
@ 2001-07-28  2:29   ` Roger Larsson
  0 siblings, 0 replies; 5+ messages in thread
From: Roger Larsson @ 2001-07-28  2:29 UTC (permalink / raw)
  To: Daniel Phillips, linux-mm; +Cc: linux-kernel

On Saturdayen den 28 July 2001 04:08, Daniel Phillips wrote:
> [- - -]
> Wheeeeee!  Out of interest, what are the numbers for 2.4.7 vs
> 2.4.8-pre1 ?
>

Ok, time for a table... (all but dbench are best of 3 with source and 
destination files bigger than memory, dbench is only run once)

		write	copy	read	diff	dbench
2.4.0		32.2	16.4	29.7	15.4	32.9
2.4.4		33.2	15.8	29.8	-	-
2.4.6-pre1+s-irq	33.0	15.6	29.5	11.0	38.9
2.4.7		32.8	16.1	29.4	10.9	32.9
2.4.8-pre1	33.2	16.4	29.5	11.2	26.1
2.4.8-pre1+MRA	30.3	28.3	29.8	28.4	34.8
		
/RogerL
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] MAX_READAHEAD gives doubled throuput
  2001-07-28  1:40 [PATCH] MAX_READAHEAD gives doubled throuput Roger Larsson
  2001-07-28  2:08 ` Daniel Phillips
@ 2001-07-28  3:14 ` Andrew Morton
  2001-07-28  9:07   ` Roger Larsson
  1 sibling, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2001-07-28  3:14 UTC (permalink / raw)
  To: Roger Larsson; +Cc: linux-mm, linux-kernel

Roger Larsson wrote:
> 
> Hi all,
> 
> Got wondering why simultaneous streaming is so much slower than normal...
> 
> Are there any reasons nowadays why we should not attempt to read ahead more
> than 31 pages at once?
> 
> 31 pages equals 0.1 MB, it is read from the HD in 4 ms => very close to the
> average access times. Resulting in a maximum of half the possible speed.
> 
> With this patch copy and diff throughput are increased from 14 respective 11
> MB/s to 27 and 28 !!!
> 
> I enable the profiling as well... (one printk warning fixed)
> 

It doesn't make any difference here.

Dual 500MHz x86, 20 meg/sec IDE, 512 megs of RAM, kernel 2.4.7.
Diffing two kernel trees is 129 seconds without patch, 130 with.
Increasing MIN_READAHEAD to 31 as well saved eight seconds or so.

What kernel did you test with, and what are the specs for the
test machine?  Are your disks performing internal readahead?
If so, how much, and how large is the on-disk cache?



/dev/hdf:
 multcount    = 16 (on)
 I/O support  =  1 (32-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 5606/255/63, sectors = 90069840, start = 0
mnm:/home/akpm> 0 hdparm -I /dev/hdf 

/dev/hdf:

 Model=BI-MTDAL3-7040 5                        , FwRev=XTO66AA0, SerialNo=        Y EMMYQG9424
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
 BuffType=DualPortCache, BuffSize=1916kB, MaxMultSect=16, MultSect=16
 CurCHS=65535/1/63, CurSects=4128705, LBA=yes, LBAsects=90069840
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4 
 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 *udma3 udma4 udma5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] MAX_READAHEAD gives doubled throuput
  2001-07-28  3:14 ` Andrew Morton
@ 2001-07-28  9:07   ` Roger Larsson
  0 siblings, 0 replies; 5+ messages in thread
From: Roger Larsson @ 2001-07-28  9:07 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-mm, linux-kernel

On Saturdayen den 28 July 2001 05:14, Andrew Morton wrote:
> Roger Larsson wrote:
> > Hi all,
> >
> > Got wondering why simultaneous streaming is so much slower than normal...
> >
> > Are there any reasons nowadays why we should not attempt to read ahead
> > more than 31 pages at once?
> >
> > 31 pages equals 0.1 MB, it is read from the HD in 4 ms => very close to
> > the average access times. Resulting in a maximum of half the possible
> > speed.
> >
> > With this patch copy and diff throughput are increased from 14 respective
> > 11 MB/s to 27 and 28 !!!
> >
> > I enable the profiling as well... (one printk warning fixed)
>
> It doesn't make any difference here.
>
> Dual 500MHz x86, 20 meg/sec IDE, 512 megs of RAM, kernel 2.4.7.
> Diffing two kernel trees is 129 seconds without patch, 130 with.
> Increasing MIN_READAHEAD to 31 as well saved eight seconds or so.
>

Do not diff the trees - diff the tars!
(most files in the tree is so small that they fit well in the 31 pages)
Even the tars might be to small for a second run (fits in memory...)


> What kernel did you test with, and what are the specs for the
> test machine?  Are your disks performing internal readahead?
> If so, how much, and how large is the on-disk cache?
>
>
>
> /dev/hdf:
>  multcount    = 16 (on)
>  I/O support  =  1 (32-bit)
>  unmaskirq    =  1 (on)
>  using_dma    =  1 (on)
>  keepsettings =  0 (off)
>  nowerr       =  0 (off)
>  readonly     =  0 (off)
>  readahead    =  8 (on)
>  geometry     = 5606/255/63, sectors = 90069840, start = 0
> mnm:/home/akpm> 0 hdparm -I /dev/hdf
>

/dev/hda:
 multcount    = 16 (on)
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 5606/255/63, sectors = 90069840, start = 0

ok, so I did not have 32 bit nor unmaskirq turned on... should it matter?

> /dev/hdf:
>
>  Model=BI-MTDAL3-7040 5                        , FwRev=XTO66AA0, SerialNo= 
>       Y EMMYQG9424 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
>  RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
>  BuffType=DualPortCache, BuffSize=1916kB, MaxMultSect=16, MultSect=16
>  CurCHS=65535/1/63, CurSects=4128705, LBA=yes, LBAsects=90069840
>  IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
>  PIO modes: pio0 pio1 pio2 pio3 pio4
>  DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 *udma3 udma4 udma5

/dev/hda:
 
 Model=BI-MTDAL3-7040 5                        , FwRev=XTO66AA0, SerialNo=
  Y EMMYQM0073
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
 BuffType=DualPortCache, BuffSize=1916kB, MaxMultSect=16, MultSect=16
 CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=90069840
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4
 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
 Drive Supports : Reserved : ATA-2 ATA-3 ATA-4 ATA-5
 Kernel Drive Geometry LogicalCHS=5606/255/63 PhysicalCHS=22075/16/255
-- 
Roger Larsson
Skelleftea
Sweden
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2001-07-28  9:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-28  1:40 [PATCH] MAX_READAHEAD gives doubled throuput Roger Larsson
2001-07-28  2:08 ` Daniel Phillips
2001-07-28  2:29   ` Roger Larsson
2001-07-28  3:14 ` Andrew Morton
2001-07-28  9:07   ` Roger Larsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox