diff options
| author | Roman Gushchin <[email protected]> | 2015-11-05 18:47:08 -0800 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2015-11-05 19:34:48 -0800 |
| commit | 600e19afc5f8a6c18ea49cee9511c5797db02391 (patch) | |
| tree | 9ac5a5559a12e64f1f7653a9a4155623d7092690 /Documentation/filesystems/configfs/configfs_example_explicit.c | |
| parent | b171e4093017d4d6e411f5e97823e5e4a21266a2 (diff) | |
mm: use only per-device readahead limit
Maximal readahead size is limited now by two values:
1) by global 2Mb constant (MAX_READAHEAD in max_sane_readahead())
2) by configurable per-device value* (bdi->ra_pages)
There are devices, which require custom readahead limit.
For instance, for RAIDs it's calculated as number of devices
multiplied by chunk size times 2.
Readahead size can never be larger than bdi->ra_pages * 2 value
(POSIX_FADV_SEQUNTIAL doubles readahead size).
If so, why do we need two limits?
I suggest to completely remove this max_sane_readahead() stuff and
use per-device readahead limit everywhere.
Also, using right readahead size for RAID disks can significantly
increase i/o performance:
before:
dd if=/dev/md2 of=/dev/null bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 12.9741 s, 808 MB/s
after:
$ dd if=/dev/md2 of=/dev/null bs=100M count=100
100+0 records in
100+0 records out
10485760000 bytes (10 GB) copied, 8.91317 s, 1.2 GB/s
(It's an 8-disks RAID5 storage).
This patch doesn't change sys_readahead and madvise(MADV_WILLNEED)
behavior introduced by 6d2be915e589b58 ("mm/readahead.c: fix readahead
failure for memoryless NUMA nodes and limit readahead pages").
Signed-off-by: Roman Gushchin <[email protected]>
Cc: Raghavendra K T <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Wu Fengguang <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: onstantin Khlebnikov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'Documentation/filesystems/configfs/configfs_example_explicit.c')
0 files changed, 0 insertions, 0 deletions