All of lore.kernel.org
 help / color / mirror / Atom feed
From: Casey Bodley <cbodley@redhat.com>
To: Samuel Just <sjust@redhat.com>
Cc: Somnath Roy <Somnath.Roy@sandisk.com>,
	Sage Weil <sage@newdream.net>,
	"Samuel Just (sam.just@inktank.com)" <sam.just@inktank.com>,
	ceph-devel@vger.kernel.org
Subject: Re: queue_transaction interface + unique_ptr + performance
Date: Thu, 3 Dec 2015 15:14:21 -0500 (EST)	[thread overview]
Message-ID: <291788535.28463587.1449173661550.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <CAN=+7FV1aFxmT8E_-=G4+OuOG=VotWV7PQv45zL3v3+mjDYbrQ@mail.gmail.com>


----- Original Message -----
> Well, yeah we are, it's just the actual Transaction structure which
> wouldn't be dynamic -- the buffers and many other fields would still
> hit the allocator.
> -Sam

Sure. I was looking specifically at the tradeoffs between allocating
and moving the Transaction object itself.

As it currently stands, the caller of ObjectStore can choose whether to
allocate its Transactions on the heap, embed them in other objects, or
put them on the stack for use with apply_transactions(). Switching to an
interface built around unique_ptr forces all callers to use the heap. I'm
advocating for an interface that doesn't.

Casey

> 
> On Thu, Dec 3, 2015 at 11:29 AM, Casey Bodley <cbodley@redhat.com> wrote:
> >
> > ----- Original Message -----
> >> Eh, Sage had a point that Transaction has a bunch of little fields
> >> which would have to be filled in -- its move constructor would be less
> >> trivial than unique_ptr's.
> >> -Sam
> >
> > It's true that the move ctor has to do work. I counted 18 fields, half of
> > which are integers, and the rest have move ctors themselves. But the cpu
> > is good at integers. The win here is that you're not hitting the allocator
> > in the fast path.
> >
> > Casey
> >
> >>
> >> On Thu, Dec 3, 2015 at 11:12 AM, Adam C. Emerson <aemerson@redhat.com>
> >> wrote:
> >> > On 03/12/2015, Casey Bodley wrote:
> >> > [snip]
> >> >> The queue_transactions() interface could take a container of
> >> >> Transactions,
> >> >> rather than pointers to Transactions, and the ObjectStore would move
> >> >> them
> >> >> out of the container into whatever representation it prefers.
> >> > [snip]
> >> >
> >> > Or a pointer and count (or we could steal array_view from GSL). That way
> >> > we
> >> > could pass in any continguous range (std::vector or even a std::array or
> >> > regular C style array allocated on the stack.)
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >>
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  reply	other threads:[~2015-12-03 20:14 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-03  2:13 queue_transaction interface + unique_ptr + performance Somnath Roy
2015-12-03  3:50 ` James (Fei) Liu-SSI
2015-12-03  3:59   ` Somnath Roy
2015-12-03  7:21   ` Somnath Roy
2015-12-03  8:42 ` Piotr.Dalek
2015-12-03 11:50 ` Sage Weil
2015-12-03 15:16   ` Casey Bodley
2015-12-03 16:52     ` Somnath Roy
2015-12-03 17:17       ` Adam C. Emerson
2015-12-03 17:40         ` Somnath Roy
2015-12-03 17:48           ` Samuel Just
2015-12-03 17:02   ` Somnath Roy
2015-12-03 17:25     ` Adam C. Emerson
2015-12-03 17:48       ` Somnath Roy
2015-12-03 17:50         ` Samuel Just
2015-12-03 17:52           ` Samuel Just
2015-12-03 17:53           ` Somnath Roy
2015-12-03 19:09             ` Casey Bodley
2015-12-03 19:12               ` Adam C. Emerson
2015-12-03 19:14                 ` Samuel Just
2015-12-03 19:29                   ` Casey Bodley
2015-12-03 19:33                     ` Samuel Just
2015-12-03 20:14                       ` Casey Bodley [this message]
2015-12-03 21:06                         ` Sage Weil
2015-12-03 21:23                           ` Casey Bodley
2015-12-03 23:23                             ` Samuel Just
2015-12-04  0:25                               ` Somnath Roy
2015-12-04  1:43                                 ` Adam C. Emerson
2015-12-04  6:15                                   ` Somnath Roy
2015-12-04  6:43                                   ` Somnath Roy
2016-01-18 20:48                                   ` Somnath Roy
2015-12-03 19:04   ` Matt Benjamin

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=291788535.28463587.1449173661550.JavaMail.zimbra@redhat.com \
    --to=cbodley@redhat.com \
    --cc=Somnath.Roy@sandisk.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=sage@newdream.net \
    --cc=sam.just@inktank.com \
    --cc=sjust@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.