Re: inline vector container

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Agree, we're all trying to avoid that.

Matt

----- Original Message -----
> From: "Willem Jan Withagen" <wjw@xxxxxxxxxxx>
> To: "Matt Benjamin" <mbenjamin@xxxxxxxxxx>
> Cc: "Allen Samuels" <Allen.Samuels@xxxxxxxxxxx>, "Casey Bodley" <cbodley@xxxxxxxxxx>, "Sage Weil" <sweil@xxxxxxxxxx>,
> ceph-devel@xxxxxxxxxxxxxxx
> Sent: Thursday, February 4, 2016 12:01:31 PM
> Subject: Re: inline vector container
> 
> On 4-2-2016 15:42, Matt Benjamin wrote:
> > Hi Willem,
> > 
> > Milosz pasted a file inline.  Facebook's upstream repo is
> > https://github.com/facebook/folly (Mr. Google), but what I was
> > agreeing is, for the present, if we can't realize boost small_vector,
> > we might adapt just that type from Folly for the short term (that was
> > Milosz meaning, in this thread).
> > 
> > (So don't panic ;)
> 
> It'll take a bit more to panic, but it would be a shame if we have to
> port something for the intermediate 2-times. And then to only throw it
> out a bit later.
> 
> Where I still have to look at "trivia" like AIO, and RBD...
> 
> Although my main interest is to get RBD in the freebsd guest DOM's
> running, especially bhyve. So I hope that that is going to be a bit less
> convoluted than writting a RBD device in the kernel. Especially since
> only recently I saw patches to add VirtFS to the bhyve virt-io infra.
> 
> --WjW
> 
> > 
> > Matt
> > 
> > ----- Original Message -----
> >> From: "Willem Jan Withagen" <wjw@xxxxxxxxxxx> To: "Matt Benjamin"
> >> <mbenjamin@xxxxxxxxxx>, "Allen Samuels"
> >> <Allen.Samuels@xxxxxxxxxxx> Cc: "Casey Bodley"
> >> <cbodley@xxxxxxxxxx>, "Sage Weil" <sweil@xxxxxxxxxx>,
> >> ceph-devel@xxxxxxxxxxxxxxx Sent: Thursday, February 4, 2016 7:06:14
> >> AM Subject: Re: inline vector container
> >> 
> >> On 3-2-2016 23:10, Matt Benjamin wrote:
> >>> I'll prioritize this.  Using more of folly may be a worthy
> >>> project as well, but that can wait for later... :)
> >> 
> >> Hi Matt,
> >> 
> >> Can you give me a URL for the folly stuff. Since I cannot find any
> >> reference to it in the FreeBSD ports.
> >> 
> >> I think I'd otherwise prefer Boost, since the ports already
> >> contains a fair amount of Boost stuff.
> >> 
> >> Currently I have installed: boost-all-1.55.0      The "meta-port"
> >> for boost libraries boost-docs-1.55.0     Documentation for
> >> libraries from boost.org boost-jam-1.55.0      Build tool from the
> >> boost.org boost-libs-1.55.0_9   Free portable C++ libraries
> >> (without Boost.Python)
> >> 
> >> But I see that the new ports have migrated to:
> >> /usr/ports/devel/boost_build/Makefile:PORTVERSION=      2.0.m12
> >> 
> >> So that would move it beyond 1.6, I presume.
> >> 
> >> --WjW
> >> 
> >> 
> >>> tx!
> >>> 
> >>> Matt
> >>> 
> >>> ----- Original Message -----
> >>>> From: "Allen Samuels" <Allen.Samuels@xxxxxxxxxxx> To: "Casey
> >>>> Bodley" <cbodley@xxxxxxxxxx>, "Matt Benjamin"
> >>>> <mbenjamin@xxxxxxxxxx> Cc: "Sage Weil" <sweil@xxxxxxxxxx>,
> >>>> ceph-devel@xxxxxxxxxxxxxxx Sent: Wednesday, February 3, 2016
> >>>> 5:06:57 PM Subject: RE: inline vector container
> >>>> 
> >>>> I would say that just pulling the latest boost into the tree
> >>>> and using it for builds is the best path forward. But I'm in no
> >>>> way competent to make that kind of change in the build system
> >>>> -- especially during the automake cmake changeover period.
> >>>> 
> >>>> 
> >>>> Allen Samuels Software Architect, Fellow, Systems and Software
> >>>> Solutions
> >>>> 
> >>>> 2880 Junction Avenue, San Jose, CA 95134 T: +1 408 801 7030| M:
> >>>> +1 408 780 6416 allen.samuels@xxxxxxxxxxx
> >>>> 
> >>>> 
> >>>> -----Original Message----- From: Casey Bodley
> >>>> [mailto:cbodley@xxxxxxxxxx] Sent: Wednesday, February 03, 2016
> >>>> 1:26 PM To: Matt Benjamin <mbenjamin@xxxxxxxxxx> Cc: Sage Weil
> >>>> <sweil@xxxxxxxxxx>; Allen Samuels <Allen.Samuels@xxxxxxxxxxx>;
> >>>> ceph-devel@xxxxxxxxxxxxxxx Subject: Re: inline vector
> >>>> container
> >>>> 
> >>>> Hi Allen,
> >>>> 
> >>>> I did spend some time a couple months ago experimenting with a
> >>>> custom allocator with inline storage for standard containers.
> >>>> You can find my branch on github at
> >>>> https://github.com/cbodley/ceph/commits/wip-preallocator.
> >>>> 
> >>>> I was aiming for a general solution that worked with
> >>>> non-contiguous containers, but couldn't find a good way to
> >>>> handle deallocations. So the approach was really only a good
> >>>> fit for std::vector.
> >>>> 
> >>>> I also had trouble getting it to do the right thing with the
> >>>> copy and move operators. I found that it was trying to use the
> >>>> new allocator to release memory that came from the old
> >>>> allocator. Presumably there's a way to make this work using
> >>>> std::allocator_traits; have you had better luck here? I'd love
> >>>> to see your prototype.
> >>>> 
> >>>> I tend to agree that we should go with the boost solution if we
> >>>> can. But if a) we can't use boost::small_vector in the
> >>>> near-term due to versioning, and b) we can get a custom version
> >>>> tested and working, it might be worth pursuing.
> >>>> 
> >>>> Casey
> >>>> 
> >>>> ----- Original Message -----
> >>>>> Hi,
> >>>>> 
> >>>>> I think we should go with small_vector for this role, yes.  I
> >>>>> found two issues.  First, there are critical defects in
> >>>>> small_vector prior to boost 1.6.0.  Second, though it is
> >>>>> header-only, the coupling with related version-specific boost
> >>>>> types (container, allocator, respective detail types, and
> >>>>> platform-specific selectors...) seems to make pulling it in
> >>>>> separately pretty unrealistic as an option.  I looked at the
> >>>>> cost of pulling in and selectively compiling (libs) an
> >>>>> entire boost 1.6, and that went a lot easier (added less than
> >>>>> a minute to my build time).
> >>>>> 
> >>>>> Matt
> >>>>> 
> >>>>> ----- Original Message -----
> >>>>>> From: "Sage Weil" <sweil@xxxxxxxxxx> To: "Allen Samuels"
> >>>>>> <Allen.Samuels@xxxxxxxxxxx> Cc: ceph-devel@xxxxxxxxxxxxxxx,
> >>>>>> mbenjami@xxxxxxxxxx, cbodley@xxxxxxxxxx Sent: Wednesday,
> >>>>>> February 3, 2016 3:04:57 PM Subject: Re: inline vector
> >>>>>> container
> >>>>>> 
> >>>>>> On Wed, 3 Feb 2016, Allen Samuels wrote:
> >>>>>>> One thing that the code base needs is a simple vector
> >>>>>>> container that is optimized for a small number of
> >>>>>>> elements, i.e., for small element counts we avoid the
> >>>>>>> malloc/free overhead. But fully supports being resized
> >>>>>>> into larger containers that are unbounded. Of course it
> >>>>>>> will need to follow all of the proper object copy/move
> >>>>>>> semantics so that things like unique_ptr, etc work
> >>>>>>> correctly.
> >>>>>>> 
> >>>>>>> I heard rumors that there was one available in the boost
> >>>>>>> world, but I can’t seem to find it. Do you know about one
> >>>>>>> being available?
> >>>>>> 
> >>>>>> http://www.boost.org/doc/libs/1_60_0/doc/html/boost/container/small_
> >>>>>>
> >>>>>> 
> vector.html
> >>>>>> 
> >>>>>>> I’ve been prototyping one myself, just to get re-familiar
> >>>>>>> with all of the C++11 move sementics, and trivial
> >>>>>>> constructors, etc.
> >>>>>>> 
> >>>>>>> The code is pretty complete, but the testing gets rather
> >>>>>>> involved. There’s no reason to contain this if it’s
> >>>>>>> available elsewhere. But if it isn’t I plan on continuing
> >>>>>>> this…
> >>>>>> 
> >>>>>> I think Casey had prototyped something similar using a
> >>>>>> custom allocator, too, but I didn't actually look at the
> >>>>>> result.  And Matt talked about just pulling the boost one
> >>>>>> in-tree until we get updated boost in the supported
> >>>>>> distros, but I forget if he ran into problems there or
> >>>>>> not...
> >>>>>> 
> >>>>>> sage
> >>>>> 
> >>>>> -- -- Matt Benjamin Red Hat, Inc. 315 West Huron Street,
> >>>>> Suite 140A Ann Arbor, Michigan 48103
> >>>>> 
> >>>>> http://www.redhat.com/en/technologies/storage
> >>>>> 
> >>>>> tel.  734-707-0660 fax.  734-769-8938 cel.  734-216-5309 --
> >>>>> To unsubscribe from this list: send the line "unsubscribe
> >>>>> ceph-devel" in the body of a message to
> >>>>> majordomo@xxxxxxxxxxxxxxx More majordomo info at
> >>>>> http://vger.kernel.org/majordomo-info.html
> >>>>> 
> >>>> PLEASE NOTE: The information contained in this electronic mail
> >>>> message is intended only for the use of the designated
> >>>> recipient(s) named above. If the reader of this message is not
> >>>> the intended recipient, you are hereby notified that you have
> >>>> received this message in error and that any review,
> >>>> dissemination, distribution, or copying of this message is
> >>>> strictly prohibited. If you have received this communication in
> >>>> error, please notify the sender by telephone or e-mail (as
> >>>> shown above) immediately and destroy any and all copies of this
> >>>> message in your possession (whether hard copies or
> >>>> electronically stored copies).
> >>>> 
> >>> 
> >> 
> >> -- To unsubscribe from this list: send the line "unsubscribe
> >> ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >> 
> > 
> 
> 

-- 
-- 
Matt Benjamin
Red Hat, Inc.
315 West Huron Street, Suite 140A
Ann Arbor, Michigan 48103

http://www.redhat.com/en/technologies/storage

tel.  734-707-0660
fax.  734-769-8938
cel.  734-216-5309
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux