Adaptive read-ahead V8
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest19 patches 12 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/19 | mm: delayed page activationinclude/ mm/ mm/ +1 more | +42 | 0 replies | |
| 2/19 | vm: kswapd incminmm/ | +35 | 0 replies | |
| 3/19 | mm: balance page aging between zones and slabsinclude/ include/ mm/ +1 more | +173 | 0 replies | |
| 4/19 | mm: debug page reclaimmm/ | +75 | 0 replies | |
| 5/19 | radixtree: sync with mainlinelib/ | +5 | 0 replies | |
| 6/19 | radixtree: look-aside cacheinclude/ lib/ | +254 | 0 replies | |
| 7/19 | readahead: some preparationinclude/ mm/ | +191 | 0 replies | |
| 8/19 | readahead: call schemeinclude/ include/ mm/ +2 more | +250 | 0 replies | |
| 9/19 | readahead: parametersDocumentation/ include/ include/ +3 more | +138 | 0 replies | |
| 10/19 | readahead: state based methodinclude/ include/ mm/ +3 more | +374 | 3 replies | |
| 11/19 | readahead: context based methodmm/ | +345 | 0 replies | |
| 12/19 | readahead: other methodsmm/ | +111 | 0 replies | |
| 13/19 | readahead: detect and rescue live pagesinclude/ include/ mm/ +2 more | +333 | 0 replies | |
| 14/19 | readahead: events accountingmm/ | +192 | 0 replies | |
| 15/19 | readahead: page aging accountingmm/ | +154 | 0 replies | |
| 16/19 | readahead: laptop mode supportinclude/ mm/ mm/ | +37 | 2 replies | |
| 17/19 | readahead: disable look-ahead for loopback filedrivers/ include/ mm/ | +15 | 0 replies | |
| 18/19 | readahead: nfsd supportfs/ include/ mm/ | +15 | 0 replies | |
| 19/19 | io: avoid too much latency from read-aheadfs/ mm/ | +18 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 00/19] Adaptive read-ahead V8
Changelog
=========
V8 2005-11-25
- balance zone aging only in page relaim paths and do it right
- do the aging of slabs in the same way as zones
- add debug code to dump the detailed page reclaim steps
- undo exposing of struct radix_tree_node and uninline related functions
- work better with nfsd
- generalize accelerated context based read-ahead
- account smooth read-ahead aging based on page referenced/activate bits
- avoid divide error in compute_thrashing_threshold()
- more low lantency efforts
- update some comments
- rebase debug actions on debugfs entries instead of magic readahead_ratio values
V7 2005-11-09
- new tunable parameters: readahead_hit_rate/readahead_live_chunk
- support sparse sequential accesses
- delay look-ahead if drive is spinned down in laptop mode
- disable look-ahead for loopback file
- make mandatory thrashing protection more simple and robust
- attempt to improve responsiveness on large read-ahead size
V6 2005-11-01
- cancel look-ahead in laptop mode
- increase read-ahead limit to 0xFFFF pages
V5 2005-10-28
- rewrite context based method to make it clean and robust
- improved accuracy of stateful thrashing threshold estimation
- make page aging equal to the number of code pages scanned
- sort out the thrashing protection logic
- enhanced debug/accounting facilities
V4 2005-10-15
- detect and save live chunks on page reclaim
- support database workload
- support reading backward
- radix tree lookup look-aside cache
V3 2005-10-06
- major code reorganization and documention
- stateful estimation of thrashing-threshold
- context method with accelerated grow up phase
- adaptive look-ahead
- early detection and rescue of pages in danger
- statitics data collection
- synchronized page aging between zones
V2 2005-09-15
- delayed page activation
- look-ahead: towards pipelined read-ahead
V1 2005-09-13
Initial release which features:
o stateless (for now)
o adapts to available memory / read speed
o free of thrashing (in theory)
And handles:
o large number of slow streams (FTP server)
o open/read/close access patterns (NFS server)
o multiple interleaved, sequential streams in one file (multithread / multimedia / database)
Overview
========
The current read-ahead logic uses an inflexible algorithm with 128KB VM_MAX_READAHEAD. Less memory leads to thrashing, more memory helps no throughput. The new logic is simply safer and faster. It makes sure every single read-ahead request is safe for the current load. Memory tight systems are expected to benefit a lot: no thrashing any more. It can also help boost I/O throughput for large memory systems, for VM_MAX_READAHEAD now defaults to 1MB. The value is no longer tightly coupled with the thrashing problem, and therefore constrainted by it.
Thanks,
Wu Fengguang
--
Dept. Automation University of Science and Technology of China