linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* btrfs: why default 4M readahead size?
@ 2010-03-18  1:42 Shaohua Li
  2010-03-18 12:53 ` Chris Mason
  0 siblings, 1 reply; 7+ messages in thread
From: Shaohua Li @ 2010-03-18  1:42 UTC (permalink / raw)
  To: linux-btrfs; +Cc: chris.mason, jens.axboe, fengguang.wu, shaohua.li

Btrfs uses below equation to calculate ra_pages:
	fs_info->bdi.ra_pages = max(fs_info->bdi.ra_pages,
              		4 * 1024 * 1024 / PAGE_CACHE_SIZE);
is the max() a typo of min()? This makes the readahead size is 4M by default,
which is too big.
I have a system with 16 CPU, 6G memory and 12 sata disks. I create a btrfs for
each disk, so this isn't a raid setup. The test is fio, which has 12 tasks to
access 12 files for each disk. The fio test is mmap sequential read. I measure
the performance with different readahead size:
ra size		io throughput
4M		268288 k/s
2M		367616 k/s
1M		431104 k/s
512K		474112 k/s
256K		512000 k/s
128K		538624 k/s
The 4M default readahead size has poor performance.
I also does sync sequential read test, the test difference in't that big. But
the 4M case still has about 10% drop compared to the 512k case.

One might argue how about the case memory isn't tight. I tried only run a
one-disk setup with only one task. The 4M ra almost has no difference with the
128K ra. I guess the 128k default ra size for backing dev is carefuly choosed
to work with popular disks.
So my question is why we have a default 4M readahead size even with noraid case?

Thanks,
Shaohua

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

end of thread, other threads:[~2010-03-19 12:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-18  1:42 btrfs: why default 4M readahead size? Shaohua Li
2010-03-18 12:53 ` Chris Mason
2010-03-19  0:59   ` Shaohua Li
2010-03-19  2:56     ` Shaohua Li
2010-03-19  8:22       ` Jens Axboe
2010-03-19  9:29         ` Shaohua Li
2010-03-19 12:57           ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).