[Drbd-dev] [dm-devel] [PATCH v4 01/11] block: make generic_make_request handle arbitrarily sized bios
Alasdair G Kergon
agk at redhat.com
Wed May 27 02:40:22 CEST 2015
On Wed, May 27, 2015 at 09:06:40AM +1000, Neil Brown wrote:
> Because we don't know what the "right" size is. And the "right" size can
> change when array reconfiguration happens.
In certain configurations today, device-mapper does report back a sensible
maximum bio size smaller than would otherwise be used and thereby avoids
retrospective splitting. (In tests, the overhead of the duplicate calculation
was found to be negligible so we never restructured the code to optimise it away.)
> Splitting has to happen somewhere, if only in bio_addpage where it decides to
> create a new bio rather than add another page to the current one. So moving
> the split to a different level of the stack shouldn't necessarily change the
> performance profile.
It does sometimes make a significant difference to device-mapper stacks.
DM only uses it for performance reasons - it can already split bios when
it needs to. I tried to remove merge_bvec_fn from DM several years ago but
couldn't because of the adverse performance impact of lots of splitting activity.
The overall cost of splitting ought to be less in many (but not necessarily
all) cases now as a result of all these patches, so exactly where the best
balance lies now needs to be reassessed empirically. It is hard to reach
conclusions theoretically because of the complex interplay between the various
factors at different levels.
More information about the drbd-dev