Distributed Replicated Block Device (DRBD) development
 help / color / mirror / Atom feed
From: Alasdair G Kergon <agk@redhat.com>
To: Kent Overstreet <koverstreet@google.com>,
	Mike Snitzer <snitzer@redhat.com>,
	linux-kernel@vger.kernel.org, linux-bcache@vger.kernel.org,
	dm-devel@redhat.com, linux-fsdevel@vger.kernel.org,
	axboe@kernel.dk, yehuda@hq.newdream.net, mpatocka@redhat.com,
	vgoyal@redhat.com, bharrosh@panasas.com, tj@kernel.org,
	sage@newdream.net, agk@redhat.com, drbd-dev@lists.linbit.com,
	Dave Chinner <dchinner@redhat.com>,
	tytso@google.com
Subject: Re: [Drbd-dev] [PATCH v3 14/16] Gut bio_add_page()
Date: Fri, 25 May 2012 23:39:37 +0100	[thread overview]
Message-ID: <20120525223937.GF5761@agk-dp.fab.redhat.com> (raw)
In-Reply-To: <20120525210944.GB14196@google.com>

Where's the urge to remove merge_bvec coming from?

I think it's premature to touch this, and that the other changes, if
fixed and integrated, should be allowed to bed themselves down first.


Ideally every bio would be the best size on submission and no bio would
ever need to be split.

But there is a cost involved in calculating the best size - we use
merge_bvec for this, which gives a (probable) maximum size.  It's
usually very cheap to calculate - but not always.  [In dm, we permit
some situations where the answer we give will turn out to be wrong, but
ensure dm will always fix up those particular cases itself later and
still process the over-sized bio correctly.]

Similarly there is a performance penalty incurred when the size is wrong
- the bio has to be split, requiring memory, potential delays etc.

There is a trade-off between those two, and our experience with the current
code has that tilted strongly in favour of using merge_bvec all the time.
The wasted overhead in cases where it is of no benefit seem to be
outweighed by the benefit where it does avoid lots of splitting and help
filesystems optimise their behaviour.


If the splitting mechanism is changed as proposed, then that balance
might shift.  My gut feeling though is that any shift would strengthen
the case for merge_bvec.

Alasdair


  reply	other threads:[~2012-05-30  8:40 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-25 20:25 [Drbd-dev] [PATCH v3 00/16] Block cleanups Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 01/16] block: Generalized bio pool freeing Kent Overstreet
2012-05-28  1:15   ` Tejun Heo
2012-05-28 10:04   ` Boaz Harrosh
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 02/16] dm: Use bioset's front_pad for dm_rq_clone_bio_info Kent Overstreet
2012-05-28  0:57   ` [Drbd-dev] [dm-devel] " Jun'ichi Nomura
2012-05-28 11:41     ` Jun'ichi Nomura
2012-05-28  1:21   ` [Drbd-dev] " Tejun Heo
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 03/16] block: Add bio_reset() Kent Overstreet
2012-05-28  1:23   ` Tejun Heo
2012-05-28 10:02     ` Boaz Harrosh
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 04/16] pktcdvd: Switch to bio_kmalloc() Kent Overstreet
2012-05-28  1:30   ` Tejun Heo
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 05/16] block: Kill bi_destructor Kent Overstreet
2012-05-28  1:36   ` Tejun Heo
2012-05-29  2:10     ` Kent Overstreet
2012-05-29  2:20       ` Tejun Heo
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 06/16] block: Add an explicit bio flag for bios that own their bvec Kent Overstreet
2012-05-28  1:52   ` Tejun Heo
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 07/16] block: Rename bio_split() -> bio_pair_split() Kent Overstreet
2012-05-28 10:15   ` Boaz Harrosh
2012-05-29  2:15     ` Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 08/16] block: Rework bio splitting Kent Overstreet
2012-05-28 16:12   ` Mikulas Patocka
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 09/16] block: Add bio_clone_kmalloc() Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 10/16] block: Add bio_clone_bioset() Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 11/16] block: Only clone bio vecs that are in use Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 12/16] Closures Kent Overstreet
2012-05-25 20:57   ` Joe Perches
2012-05-25 21:35     ` Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 13/16] Make generic_make_request handle arbitrarily large bios Kent Overstreet
2012-05-25 22:58   ` Alasdair G Kergon
2012-05-25 23:12     ` Alasdair G Kergon
2012-05-26  0:18       ` Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 14/16] Gut bio_add_page() Kent Overstreet
2012-05-25 20:46   ` Mike Snitzer
2012-05-25 21:09     ` Kent Overstreet
2012-05-25 22:39       ` Alasdair G Kergon [this message]
2012-05-28 16:07         ` Mikulas Patocka
2012-05-28 20:28           ` Tejun Heo
2012-05-28 21:27             ` Mikulas Patocka
2012-05-28 21:38               ` Tejun Heo
2012-05-28 23:02                 ` Tejun Heo
2012-05-29  2:08                   ` Dave Chinner
2012-05-29  2:15                     ` Tejun Heo
2012-05-29  3:36                       ` Kent Overstreet
2012-05-29  2:07                 ` Dave Chinner
2012-05-29  1:54       ` Dave Chinner
2012-05-29  3:34         ` Kent Overstreet
2012-06-05  0:33           ` Dave Chinner
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 15/16] md: Kill merge_bvec_fn()s Kent Overstreet
2012-05-25 20:25 ` [Drbd-dev] [PATCH v3 16/16] dm: Kill merge_bvec_fn() Kent Overstreet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120525223937.GF5761@agk-dp.fab.redhat.com \
    --to=agk@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=bharrosh@panasas.com \
    --cc=dchinner@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=drbd-dev@lists.linbit.com \
    --cc=koverstreet@google.com \
    --cc=linux-bcache@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=sage@newdream.net \
    --cc=snitzer@redhat.com \
    --cc=tj@kernel.org \
    --cc=tytso@google.com \
    --cc=vgoyal@redhat.com \
    --cc=yehuda@hq.newdream.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox