RE: Min alloc size according to media type

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

 



> On Fri, 20 May 2016, Allen Samuels wrote:
> > > On Fri, 20 May 2016, Allen Samuels wrote:
> > > > > > I think having bluestore_min_alloc_size,
> > > > > > bluestore_min_alloc_size_hdd, and bluestore_min_alloc_size_ssd
> > > > > > still makes it easier to change for users. It'll only go in
> > > > > > one bit of code that updates the BlueStore min_alloc_size member.
> > > > >
> > > > > If we really want to go down this road, would it make sense to
> > > > > create storage class templates rather than global configuration
> > > parameters?
> > > > > Presumably you might want different compression, read ahead, or
> > > > > writeback caching depending on the device class as well.
> > > >
> > > > I believe that administratively, you want to do this on a per-pool
> > > > basis rather than on a device class basis.
> > >
> > > For min_alloc_size, I'm not sure we would vary this per-pool.. it
> > > seems like it's a property of the device, not the data set.
> >
> > Agreed, I didn't proof-read what I sent. I was focused on the more
> > data- and access-oriented things like compression, read-ahead, etc.
> > Yes, block sizes are per-device not per-pool....
> 
> Excellent
> 
> > > However, for compression and checksums, *definitely*.  We just
> > > brainstormed a bunch of bluestore config options to do this for
> > > compression, but you're right that pretty much all of this should really be
> a per-pool thing.
> > >
> > > I think that means we want to construct a bit of the ObjectStore
> > > interface that passes the profile down to each Collection, and store
> > > it there.  Then the profile options would be interpreted there by
> > > BlueStore.  These would probably be
> > >
> > >  compression mode = force | aggressive | passive | none  compression
> > > algorithm = snappy | zlib  compression min blob size = 262144
> > > compression max blob size = 4194304
> >
> > Let's make the per-pool thing more expressive and extensible than just
> > for blue-store (maybe a JSON blob?). I believe that are LOTS more
> > places where configuration information should be provided on a per-pool
> basis.
> 
> So we do already have an extensible pool property mechanism:
> 
> 	https://github.com/ceph/ceph/blob/master/src/osd/osd_types.h#L
> 959
> 
> It's not JSON, but it's extensible key/value pairs with values of int, double, or
> string, which I think is enough here.

Yes, it seems sufficient for this.

> 
> > > The osd options are still useful for testing purposes, I think.
> > > Maybe a simple policy that the per-pool options will just override
> > > the config option if they are specified is sufficient?  If we can
> > > keep the pool and config options 1:1 (modulo the bluestore_ prefix,
> > > perhaps) that would keep things understandable.
> >
> > +1
> 
> If we do this, we need to make a nice way to plumb hte pool properties
> down to teh ObjectStore collections, but the nice thing is that if we map 1:1
> to config options we can focus on the bluestore functionality now without
> that blocking us.

Yes, hopefully when we do that we do it in a way that preserves the flexibility of the existing pool property mechanism, but avoids the cost of looking up in the pool_ops_t structure on each R/W traversal. In 5 minutes of looking at the pool_ops_t code, it wasn't apparent where the structure is loaded. In other words, if the current mechanism requires a re-start of the OSD after a parameter change then we might want to rethink it. Perhaps the properties can be augmented with a flag that indicates whether dynamic reloading of those particular parameters is supported (i.e., some properties take affect only on restart, others take effect *immediately*)
 
> 
> sage
--
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