From: Andrew Morton <akpm@osdl.org>
To: Wu Fengguang <wfg@mail.ustc.edu.cn>
Cc: linux-kernel@vger.kernel.org, wfg@mail.ustc.edu.cn, mstone@mathom.us
Subject: Re: [PATCH 00/33] Adaptive read-ahead V12
Date: Thu, 25 May 2006 08:44:15 -0700 [thread overview]
Message-ID: <20060525084415.3a23e466.akpm@osdl.org> (raw)
In-Reply-To: <348469535.17438@ustc.edu.cn>
Wu Fengguang <wfg@mail.ustc.edu.cn> wrote:
>
> Andrew,
>
> This is the 12th release of the adaptive readahead patchset.
>
> It has received tests in a wide range of applications in the past
> six months, and polished up considerably.
>
> Please consider it for inclusion in -mm tree.
>
>
> Performance benefits
> ====================
>
> Besides file servers and desktops, it is recently found to benefit
> postgresql databases a lot.
>
> I explained to pgsql users how the patch may help their db performance:
> http://archives.postgresql.org/pgsql-performance/2006-04/msg00491.php
> [QUOTE]
> HOW IT WORKS
>
> In adaptive readahead, the context based method may be of particular
> interest to postgresql users. It works by peeking into the file cache
> and check if there are any history pages present or accessed. In this
> way it can detect almost all forms of sequential / semi-sequential read
> patterns, e.g.
> - parallel / interleaved sequential scans on one file
> - sequential reads across file open/close
> - mixed sequential / random accesses
> - sparse / skimming sequential read
>
> It also have methods to detect some less common cases:
> - reading backward
> - seeking all over reading N pages
>
> WAYS TO BENEFIT FROM IT
>
> As we know, postgresql relies on the kernel to do proper readahead.
> The adaptive readahead might help performance in the following cases:
> - concurrent sequential scans
> - sequential scan on a fragmented table
> (some DBs suffer from this problem, not sure for pgsql)
> - index scan with clustered matches
> - index scan on majority rows (in case the planner goes wrong)
>
> And received positive responses:
> [QUOTE from Michael Stone]
> I've got one DB where the VACUUM ANALYZE generally takes 11M-12M ms;
> with the patch the job took 1.7M ms. Another VACUUM that normally takes
> between 300k-500k ms took 150k. Definately a promising addition.
>
> [QUOTE from Michael Stone]
> >I'm thinking about it, we're already using a fixed read-ahead of 16MB
> >using blockdev on the stock Redhat 2.6.9 kernel, it would be nice to
> >not have to set this so we may try it.
>
> FWIW, I never saw much performance difference from doing that. Wu's
> patch, OTOH, gave a big boost.
>
> [QUOTE: odbc-bench with Postgresql 7.4.11 on dual Opteron]
> Base kernel:
> Transactions per second: 92.384758
> Transactions per second: 99.800896
>
> After read-ahvm.readahead_ratio = 100:
> Transactions per second: 105.461952
> Transactions per second: 105.458664
>
> vm.readahead_ratio = 100 ; vm.readahead_hit_rate = 1:
> Transactions per second: 113.055367
> Transactions per second: 124.815910
These are nice-looking numbers, but one wonders. If optimising readahead
makes this much difference to postgresql performance then postgresql should
be doing the readahead itself, rather than relying upon the kernel's
ability to guess what the application will be doing in the future. Because
surely the database can do a better job of that than the kernel.
That would involve using posix_fadvise(POSIX_FADV_RANDOM) to disable kernel
readahead and then using posix_fadvise(POSIX_FADV_WILLNEED) to launch
application-level readahead.
Has this been considered or attempted?
next prev parent reply other threads:[~2006-05-25 15:45 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060524111246.420010595@localhost.localdomain>
2006-05-24 11:12 ` Wu Fengguang
2006-05-25 15:44 ` Andrew Morton [this message]
2006-05-25 19:26 ` Michael Stone
2006-05-25 19:40 ` David Lang
2006-05-25 22:01 ` Andrew Morton
2006-05-25 20:28 ` David Lang
2006-05-26 0:48 ` Michael Stone
[not found] ` <20060526011939.GA6220@mail.ustc.edu.cn>
2006-05-26 1:19 ` Wu Fengguang
2006-05-26 2:10 ` Jon Smirl
2006-05-26 3:14 ` Nick Piggin
2006-05-26 14:00 ` Andi Kleen
2006-05-26 16:25 ` Andrew Morton
2006-05-26 23:54 ` Folkert van Heusden
2006-05-27 0:00 ` Con Kolivas
2006-05-27 0:08 ` Con Kolivas
2006-05-28 22:20 ` Diego Calleja
2006-05-28 22:31 ` kernel
[not found] ` <20060529030445.GB5994@mail.ustc.edu.cn>
2006-05-29 3:04 ` Wu Fengguang
[not found] ` <20060524111857.983845462@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 02/33] radixtree: look-aside cache Wu Fengguang
[not found] ` <20060524111858.357709745@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 03/33] radixtree: hole scanning functions Wu Fengguang
2006-05-25 16:19 ` Andrew Morton
[not found] ` <20060526070416.GB5135@mail.ustc.edu.cn>
2006-05-26 7:04 ` Wu Fengguang
[not found] ` <20060526110559.GA14398@mail.ustc.edu.cn>
2006-05-26 11:05 ` Wu Fengguang
2006-05-26 16:19 ` Andrew Morton
[not found] ` <20060524111858.869793445@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 04/33] readahead: page flag PG_readahead Wu Fengguang
2006-05-25 16:23 ` Andrew Morton
[not found] ` <20060526070646.GC5135@mail.ustc.edu.cn>
2006-05-26 7:06 ` Wu Fengguang
2006-05-24 12:27 ` Peter Zijlstra
[not found] ` <20060524123740.GA16304@mail.ustc.edu.cn>
2006-05-24 12:37 ` Wu Fengguang
2006-05-24 12:48 ` Peter Zijlstra
[not found] ` <20060524111859.540640819@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 05/33] readahead: refactor do_generic_mapping_read() Wu Fengguang
[not found] ` <20060524111859.909928820@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 06/33] readahead: refactor __do_page_cache_readahead() Wu Fengguang
2006-05-25 16:30 ` Andrew Morton
2006-05-25 22:33 ` Paul Mackerras
2006-05-25 22:40 ` Andrew Morton
[not found] ` <20060526071339.GE5135@mail.ustc.edu.cn>
2006-05-26 7:13 ` Wu Fengguang
[not found] ` <20060524111900.419314658@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 07/33] readahead: insert cond_resched() calls Wu Fengguang
[not found] ` <20060524111900.970898174@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 08/33] readahead: common macros Wu Fengguang
2006-05-25 5:56 ` Nick Piggin
[not found] ` <20060525104117.GE4996@mail.ustc.edu.cn>
2006-05-25 10:41 ` Wu Fengguang
2006-05-26 3:33 ` Nick Piggin
[not found] ` <20060526065906.GA5135@mail.ustc.edu.cn>
2006-05-26 6:59 ` Wu Fengguang
[not found] ` <20060525134224.GJ4996@mail.ustc.edu.cn>
2006-05-25 13:42 ` Wu Fengguang
2006-05-25 14:38 ` Andrew Morton
2006-05-25 16:33 ` Andrew Morton
[not found] ` <20060524111901.581603095@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 09/33] readahead: events accounting Wu Fengguang
2006-05-25 16:36 ` Andrew Morton
[not found] ` <20060526070943.GD5135@mail.ustc.edu.cn>
2006-05-26 7:09 ` Wu Fengguang
[not found] ` <20060527132002.GA4814@mail.ustc.edu.cn>
2006-05-27 13:20 ` Wu Fengguang
2006-05-29 8:19 ` Martin Peschke
[not found] ` <20060524111901.976888971@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 10/33] readahead: support functions Wu Fengguang
2006-05-25 5:13 ` Nick Piggin
[not found] ` <20060525111318.GH4996@mail.ustc.edu.cn>
2006-05-25 11:13 ` Wu Fengguang
2006-05-25 16:48 ` Andrew Morton
[not found] ` <20060526073114.GH5135@mail.ustc.edu.cn>
2006-05-26 7:31 ` Wu Fengguang
[not found] ` <20060524111902.491708692@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 11/33] readahead: sysctl parameters Wu Fengguang
2006-05-25 4:50 ` [PATCH 12/33] readahead: min/max sizes Nick Piggin
[not found] ` <20060525121206.GI4996@mail.ustc.edu.cn>
2006-05-25 12:12 ` Wu Fengguang
[not found] ` <20060524111903.510268987@localhost.localdomain>
2006-05-24 11:12 ` [PATCH 13/33] readahead: state based method - aging accounting Wu Fengguang
2006-05-26 17:04 ` Andrew Morton
[not found] ` <20060527062234.GB4991@mail.ustc.edu.cn>
2006-05-27 6:22 ` Wu Fengguang
2006-05-27 7:00 ` Andrew Morton
[not found] ` <20060527072201.GA5284@mail.ustc.edu.cn>
2006-05-27 7:22 ` Wu Fengguang
[not found] ` <20060524111904.019763011@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 14/33] readahead: state based method - data structure Wu Fengguang
2006-05-25 6:03 ` Nick Piggin
[not found] ` <20060525104353.GF4996@mail.ustc.edu.cn>
2006-05-25 10:43 ` Wu Fengguang
2006-05-26 17:05 ` Andrew Morton
[not found] ` <20060527070248.GD4991@mail.ustc.edu.cn>
2006-05-27 7:02 ` Wu Fengguang
[not found] ` <20060527082758.GF4991@mail.ustc.edu.cn>
2006-05-27 8:27 ` Wu Fengguang
[not found] ` <20060524111904.683513683@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 15/33] readahead: state based method - routines Wu Fengguang
2006-05-26 17:15 ` Andrew Morton
[not found] ` <20060527020616.GA7418@mail.ustc.edu.cn>
2006-05-27 2:06 ` Wu Fengguang
[not found] ` <20060524111905.586110688@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 17/33] readahead: context based method Wu Fengguang
2006-05-25 5:26 ` Nick Piggin
[not found] ` <20060525080308.GB4996@mail.ustc.edu.cn>
2006-05-25 8:03 ` Wu Fengguang
2006-05-26 17:23 ` Andrew Morton
[not found] ` <20060527021252.GB7418@mail.ustc.edu.cn>
2006-05-27 2:12 ` Wu Fengguang
2006-05-26 17:27 ` Andrew Morton
[not found] ` <20060527080443.GE4991@mail.ustc.edu.cn>
2006-05-27 8:04 ` Wu Fengguang
2006-05-24 12:37 ` Peter Zijlstra
[not found] ` <20060524133353.GA16508@mail.ustc.edu.cn>
2006-05-24 13:33 ` Wu Fengguang
2006-05-24 15:53 ` Peter Zijlstra
[not found] ` <20060525012556.GA6111@mail.ustc.edu.cn>
2006-05-25 1:25 ` Wu Fengguang
[not found] ` <20060524111906.245276338@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 18/33] readahead: initial method - guiding sizes Wu Fengguang
[not found] ` <20060524111906.588647885@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 19/33] readahead: initial method - thrashing guard size Wu Fengguang
[not found] ` <20060524111907.134685550@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 20/33] readahead: initial method - expected read size Wu Fengguang
2006-05-25 5:34 ` [PATCH 22/33] readahead: initial method Nick Piggin
[not found] ` <20060525085957.GC4996@mail.ustc.edu.cn>
2006-05-25 8:59 ` Wu Fengguang
2006-05-26 17:29 ` [PATCH 20/33] readahead: initial method - expected read size Andrew Morton
[not found] ` <20060527063826.GC4991@mail.ustc.edu.cn>
2006-05-27 6:38 ` Wu Fengguang
[not found] ` <20060524111908.569533741@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 23/33] readahead: backward prefetching method Wu Fengguang
2006-05-26 17:37 ` Nate Diller
2006-05-26 19:22 ` Nathan Scott
[not found] ` <20060528123006.GC6478@mail.ustc.edu.cn>
2006-05-28 12:30 ` Wu Fengguang
[not found] ` <20060524111909.147416866@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 24/33] readahead: seeking reads method Wu Fengguang
[not found] ` <20060524111909.635589701@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 25/33] readahead: thrashing recovery method Wu Fengguang
[not found] ` <20060524111910.207894375@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 26/33] readahead: call scheme Wu Fengguang
[not found] ` <20060524111910.544274094@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 27/33] readahead: laptop mode Wu Fengguang
2006-05-26 17:38 ` Andrew Morton
[not found] ` <20060524111911.607080495@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 29/33] readahead: nfsd case Wu Fengguang
[not found] ` <20060524111912.156646847@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 30/33] readahead: turn on by default Wu Fengguang
[not found] ` <20060524111912.485160282@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 31/33] readahead: debug radix tree new functions Wu Fengguang
[not found] ` <20060524111912.967392912@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 32/33] readahead: debug traces showing accessed file names Wu Fengguang
[not found] ` <20060524111913.603476893@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 33/33] readahead: debug traces showing read patterns Wu Fengguang
[not found] ` <20060524111911.032100160@localhost.localdomain>
2006-05-24 11:13 ` [PATCH 28/33] readahead: loop case Wu Fengguang
2006-05-24 14:01 ` Limin Wang
[not found] ` <20060525154846.GA6907@mail.ustc.edu.cn>
2006-05-25 15:48 ` wfg
2006-05-26 9:53 [PATCH 00/33] Adaptive read-ahead V12 Just Marc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060525084415.3a23e466.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mstone@mathom.us \
--cc=wfg@mail.ustc.edu.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome