The patch titled readahead: kconfig options has been removed from the -mm tree. Its filename is readahead-kconfig-options.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: readahead: kconfig options From: Wu Fengguang <wfg@xxxxxxxxxxxxxxxx> This patchset introduces a set of adaptive read-ahead methods. They enable the kernel to better support many important I/O applications. MAIN FEATURES ============= - Adaptive read-ahead buffer management - aggressive, thrashing safe read-ahead size - optimal memory utilisation while achieving good I/O throughput - unnecessary to hand tuning VM_MAX_READAHEAD - support slow/fast readers at the same time - support large number of concurrent readers - aggressive read-ahead on start-of-file - configurable recommended read-ahead size - safeguarded by dynamic estimated thrashing threshold - safeguarded by dynamic estimated expected read size - good for lots-of-small-files case - shrinkable look-ahead size - cut down up to 40% memory consumption on overloaded situation - Detecting any form of (semi-)sequencial scan - parallel / interleaved sequential scans on one fd - sequential reads across file open/close lifetime - mixed sequential / random accesses - sparse / skimming sequential read - Support more access patterns - backward prefetching - seeking around reading N pages - Better special case handling - nfs daemon support: the raparams cache is no longer required - laptop mode support: defer look-ahead on drive spinned down - loopback file support: avoid double look-ahead DESIGN STRATEGIES ================= - Dual methods design - stateful method: the fast and default one - stateless method: the robust and failsafe one - if anything abnormal happens, the stateful method bails out, the stateless method queries the page cache and possibly restart the read-ahead process - Robust feedback design - sense and handle important states so that the logic wont run away - detect danger of thrashing and prevent it in advance - extensive accounting and debugging traces This patch: Add kconfig options to enable/disable: - adaptive read-ahead logic - adaptive read-ahead debug traces and events accounting The read-ahead introduction text is cited from the well written LWN article "Adaptive file readahead" <http://lwn.net/Articles/155510/> :) Signed-off-by: Wu Fengguang <wfg@xxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/Kconfig | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+) diff -puN mm/Kconfig~readahead-kconfig-options mm/Kconfig --- 25/mm/Kconfig~readahead-kconfig-options Wed May 24 16:48:36 2006 +++ 25-akpm/mm/Kconfig Wed May 24 16:48:36 2006 @@ -159,3 +159,60 @@ config UNALIGNED_ZONE_BOUNDARIES coalesce buddies across zone boundaries. The default should be correct for your architecture. Enable this if you are having trouble and you are requested to in dmesg. + + # + # Adaptive file readahead + # + config ADAPTIVE_READAHEAD + bool "Adaptive file readahead (EXPERIMENTAL)" + default n + depends on EXPERIMENTAL + help + Readahead is a technique employed by the kernel in an attempt + to improve file reading performance. If the kernel has reason + to believe that a particular file is being read sequentially, + it will attempt to read blocks from the file into memory before + the application requests them. When readahead works, it speeds + up the system's throughput, since the reading application does + not have to wait for its requests. When readahead fails, instead, + it generates useless I/O and occupies memory pages which are + needed for some other purpose. + + The kernel already has a stock readahead logic that is well + understood and well tuned. This option enables a more complex and + feature rich one. It tries to be smart and memory efficient. + However, due to the great diversity of real world applications, it + might not fit everyone. + + Please refer to Documentation/sysctl/vm.txt for tunable parameters. + + It is known to work well for many desktops, file servers and + postgresql databases. Say Y to try it out for yourself. + + config DEBUG_READAHEAD + bool "Readahead debug and accounting" + default y + depends on ADAPTIVE_READAHEAD + select DEBUG_FS + help + This option injects extra code to dump detailed debug traces and do + readahead events accounting. + + To actually get the data: + + mkdir /debug + mount -t debug none /debug + + After that you can do the following: + + echo > /debug/readahead/events # reset the counters + cat /debug/readahead/events # check the counters + + echo 1 > /debug/readahead/debug_level # start events accounting + echo 0 > /debug/readahead/debug_level # pause events accounting + + echo 2 > /debug/readahead/debug_level # show printk traces + echo 3 > /debug/readahead/debug_level # show printk traces(verbose) + echo 1 > /debug/readahead/debug_level # stop filling my kern.log + + Say N for production servers. _ Patches currently in -mm which might be from wfg@xxxxxxxxxxxxxxxx are readahead-kconfig-options.patch radixtree-look-aside-cache.patch radixtree-hole-scanning-functions.patch readahead-page-flag-pg_readahead.patch readahead-refactor-do_generic_mapping_read.patch readahead-refactor-__do_page_cache_readahead.patch readahead-insert-cond_resched-calls.patch readahead-common-macros.patch readahead-events-accounting.patch readahead-support-functions.patch readahead-sysctl-parameters.patch readahead-min-max-sizes.patch readahead-state-based-method-aging-accounting.patch readahead-state-based-method-data-structure.patch readahead-state-based-method-routines.patch readahead-state-based-method.patch readahead-context-based-method.patch readahead-initial-method-guiding-sizes.patch readahead-initial-method-thrashing-guard-size.patch readahead-initial-method-expected-read-size.patch readahead-initial-method-user-recommended-size.patch readahead-initial-method.patch readahead-backward-prefetching-method.patch readahead-seeking-reads-method.patch readahead-thrashing-recovery-method.patch readahead-call-scheme.patch readahead-laptop-mode.patch readahead-loop-case.patch readahead-nfsd-case.patch readahead-turn-on-by-default.patch readahead-debug-radix-tree-new-functions.patch readahead-debug-traces-showing-accessed-file-names.patch readahead-debug-traces-showing-read-patterns.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html