Also, as far as I remember, we just introduced overcommit ratios (for CPU
and memory) when creating/editing clusters in 4.2, so we did survive as a
product before that (albeit great) feature was introduced.


On Fri, Jun 14, 2013 at 2:06 PM, Mike Tutkowski <
mike.tutkow...@solidfire.com> wrote:

> "the administrator/operator simply needs to tell us the total number of
> IOPS that can be committed to it and an overcommitment factor."
>
> Are you thinking when we create a plug-in as primary storage that we say -
> up front - how many IOPS the SAN can handle?
>
> That is not a good move, in my opinion. Our SAN is designed to start small
> and grow to PBs. As the need arises for more storage, the admin purchases
> additional storage nodes that join the cluster and the performance and
> capacity go up.
>
> We need to know how many IOPS total the SAN can handle and what it is
> committed to currently (the sum of the number of volumes' min IOPS).
>
> We also cannot assume the SAN is dedicated to CS.
>
>
> On Fri, Jun 14, 2013 at 1:59 PM, John Burwell <jburw...@basho.com> wrote:
>
>> Simon,
>>
>> Yes, it is CloudStack's job to protect, as best it can, from
>> oversubscribing resources.  I would argue that resource management is one,
>> if not the most, important functions of the system.  It is no different
>> than the allocation/planning performed for hosts relative to cores and
>> memory.  We can still oversubscribe resources, but we have rails + knobs
>> and dials to avoid it.  Without these controls in place, we could easily
>> allow users to deploy workloads that overrun resources harming all tenants.
>>
>> I also think that we are over thinking this issue for provisioned IOPS.
>>  When the DataStore is configured, the administrator/operator simply needs
>> to tell us the total number of IOPS that can be committed to it and an
>> overcommitment factor.  As we allocate volumes to that DataStore, we sum up
>> the committed IOPS of the existing Volumes attached to the DataStore, apply
>> the overcommitment factor, and determine whether or not the requested
>> minimum IOPS for the new volume can be fulfilled.  We can provide both
>> general and vendor specific documentation for determining these values --
>> be they to consume the entire device or a portion of it.
>>
>> Querying the device is unnecessary and deceptive.  CloudStack resource
>> management is not interested in the current state of the device which could
>> be anywhere from extremely heavy to extremely light at any given time.  We
>> are interested in the worst case load that is anticipated for resource.  In
>> my view, it is up to administrators/operators to instrument their
>> environment to understand usage patterns and capacity.  We should provide
>> information that will help determine what should be instrumented/monitored,
>> but that function should be performed outside of CloudStack.
>>
>> Thanks,
>> -John
>>
>> On Jun 14, 2013, at 2:20 PM, Simon Weller <swel...@ena.com> wrote:
>>
>> > I'd like to comment on this briefly.
>> >
>> >
>> >
>> > I think an assumption is being made that the SAN is being dedicated to
>> a CS instance.
>> >
>> > My person opinion that this whole IOPS calculation is getting rather
>> complicated, and could probably be much simpler than this. Over
>> subscription is a fact of life on virtually all storage, and is really no
>> different in concept than multiple virt instances on a single piece of
>> hardware. All decent SANs offer many management options for the storage
>> engineers to keep track of IOPS utilization, and plan for spindle
>> augmentation as required.
>> > Is it really the job of CS to become yet another management layer on
>> top of this?
>> >
>> > ----- Original Message -----
>> >
>> > From: "Mike Tutkowski" <mike.tutkow...@solidfire.com>
>> > To: dev@cloudstack.apache.org
>> > Cc: "John Burwell" <jburw...@basho.com>, "Wei Zhou" <
>> ustcweiz...@gmail.com>
>> > Sent: Friday, June 14, 2013 1:00:26 PM
>> > Subject: Re: [MERGE] disk_io_throttling to MASTER
>> >
>> > 1) We want number of IOPS currently supported by the SAN.
>> >
>> > 2) We want the number of IOPS that are committed (sum of min IOPS for
>> each
>> > volume).
>> >
>> > We could do the following to keep track of IOPS:
>> >
>> > The plug-in could have a timer thread that goes off every, say, 1
>> minute.
>> >
>> > It could query the SAN for the number of nodes that make up the SAN and
>> > multiple this by 50,000. This is essentially the number of supported
>> IOPS
>> > of the SAN.
>> >
>> > The next API call could be to get all of the volumes on the SAN. Iterate
>> > through them all and add up their min IOPS values. This is the number of
>> > IOPS the SAN is committed to.
>> >
>> > These two numbers can then be updated in the storage_pool table (a
>> column
>> > for each value).
>> >
>> > The allocators can get these values as needed (and they would be as
>> > accurate as the last time the thread asked the SAN for this info).
>> >
>> > These two fields, the min IOPS of the volume to create, and the
>> overcommit
>> > ratio of the plug-in would tell the allocator if it can select the given
>> > storage pool.
>> >
>> > What do you think?
>> >
>> >
>> > On Fri, Jun 14, 2013 at 11:45 AM, Mike Tutkowski <
>> > mike.tutkow...@solidfire.com> wrote:
>> >
>> >> "As I mentioned previously, I am very reluctant for any feature to come
>> >> into master that can exhaust resources."
>> >>
>> >> Just wanted to mention that, worst case, the SAN would fail creation of
>> >> the volume before allowing a new volume to break the system.
>> >>
>> >>
>> >> On Fri, Jun 14, 2013 at 11:35 AM, Mike Tutkowski <
>> >> mike.tutkow...@solidfire.com> wrote:
>> >>
>> >>> Hi John,
>> >>>
>> >>> Are you thinking we add a column on to the storage pool table,
>> >>> IOPS_Count, where we add and subtract committed IOPS?
>> >>>
>> >>> That is easy enough.
>> >>>
>> >>> How do you want to determine what the SAN is capable of supporting
>> IOPS
>> >>> wise? Remember we're dealing with a dynamic SAN here...as you add
>> storage
>> >>> nodes to the cluster, the number of IOPS increases. Do we have a
>> thread we
>> >>> can use to query external devices like this SAN to update the
>> supported
>> >>> number of IOPS?
>> >>>
>> >>> Also, how do you want to enforce the IOPS limit? Do we pass in an
>> >>> overcommit ration to the plug-in when it's created? We would need to
>> store
>> >>> this in the storage_pool table, as well, I believe.
>> >>>
>> >>> We should also get Wei involved in this as his feature will need
>> similar
>> >>> functionality.
>> >>>
>> >>> Also, we should do this FAST as we have only two weeks left and many
>> of
>> >>> us will be out for several days for the CS Collab Conference.
>> >>>
>> >>> Thanks
>> >>>
>> >>>
>> >>> On Fri, Jun 14, 2013 at 10:46 AM, John Burwell <jburw...@basho.com
>> >wrote:
>> >>>
>> >>>> Mike,
>> >>>>
>> >>>> Querying the SAN only indicates the number of IOPS currently in use.
>> >>>> The allocator needs to check the number of IOPS committed which is
>> tracked
>> >>>> by CloudStack. For 4.2, we should be able to query the number of IOPS
>> >>>> committed to a DataStore, and determine whether or not the number
>> requested
>> >>>> can be fulfilled by that device. It seems to be that a
>> >>>> DataStore#getCommittedIOPS() : Long method would be sufficient.
>> >>>> DataStore's that don't support provisioned IOPS would return null.
>> >>>>
>> >>>> As I mentioned previously, I am very reluctant for any feature to
>> come
>> >>>> into master that can exhaust resources.
>> >>>>
>> >>>> Thanks,
>> >>>> -John
>> >>>>
>> >>>> On Jun 13, 2013, at 9:27 PM, Mike Tutkowski <
>> >>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>
>> >>>>> Yeah, I'm not sure I could come up with anything near an accurate
>> >>>>> assessment of how many IOPS are currently available on the SAN (or
>> >>>> even a
>> >>>>> total number that are available for volumes). Not sure if there's
>> yet
>> >>>> an
>> >>>>> API call for that.
>> >>>>>
>> >>>>> If I did know this number (total number of IOPS supported by the
>> SAN),
>> >>>> we'd
>> >>>>> still have to keep track of the total number of volumes we've
>> created
>> >>>> from
>> >>>>> CS on the SAN in terms of their IOPS. Also, if an admin issues an
>> API
>> >>>> call
>> >>>>> directly to the SAN to tweak the number of IOPS on a given volume or
>> >>>> set of
>> >>>>> volumes (not supported from CS, but supported via the SolidFire
>> API),
>> >>>> our
>> >>>>> numbers in CS would be off.
>> >>>>>
>> >>>>> I'm thinking verifying sufficient number of IOPS is a really good
>> idea
>> >>>> for
>> >>>>> a future release.
>> >>>>>
>> >>>>> For 4.2 I think we should stick to having the allocator detect if
>> >>>> storage
>> >>>>> QoS is desired and if the storage pool in question supports that
>> >>>> feature.
>> >>>>>
>> >>>>> If you really are over provisioned on your SAN in terms of IOPS or
>> >>>>> capacity, the SAN can let the admin know in several different ways
>> >>>> (e-mail,
>> >>>>> SNMP, GUI).
>> >>>>>
>> >>>>>
>> >>>>> On Thu, Jun 13, 2013 at 7:02 PM, John Burwell <jburw...@basho.com>
>> >>>> wrote:
>> >>>>>
>> >>>>>> Mike,
>> >>>>>>
>> >>>>>> Please see my comments in-line below.
>> >>>>>>
>> >>>>>> Thanks,
>> >>>>>> -John
>> >>>>>>
>> >>>>>> On Jun 13, 2013, at 6:09 PM, Mike Tutkowski <
>> >>>> mike.tutkow...@solidfire.com>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>>> Comments below in red.
>> >>>>>>>
>> >>>>>>> Thanks
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Thu, Jun 13, 2013 at 3:58 PM, John Burwell <jburw...@basho.com
>> >
>> >>>>>> wrote:
>> >>>>>>>
>> >>>>>>>> Mike,
>> >>>>>>>>
>> >>>>>>>> Overall, I agree with the steps to below for 4.2. However, we may
>> >>>> want
>> >>>>>> to
>> >>>>>>>> throw an exception if we can not fulfill a requested QoS. If the
>> >>>> user
>> >>>>>> is
>> >>>>>>>> expecting that the hypervisor will provide a particular QoS, and
>> >>>> that is
>> >>>>>>>> not possible, it seems like we should inform them rather than
>> >>>> silently
>> >>>>>>>> ignoring their request.
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>> Sure, that sounds reasonable.
>> >>>>>>>
>> >>>>>>> We'd have to come up with some way for the allocators to know
>> about
>> >>>> the
>> >>>>>>> requested storage QoS and then query the candidate drivers.
>> >>>>>>>
>> >>>>>>> Any thoughts on how we might do that?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>>
>> >>>>>>>> To collect my thoughts from previous parts of the thread, I am
>> >>>>>>>> uncomfortable with the idea that the management server can
>> >>>> overcommit a
>> >>>>>>>> resource. You had mentioned querying the device for available
>> IOPS.
>> >>>>>> While
>> >>>>>>>> that would be nice, it seems like we could fall back to a max
>> IOPS
>> >>>> and
>> >>>>>>>> overcommit factor manually calculated and entered by the
>> >>>>>>>> administrator/operator. I think such threshold and allocation
>> rails
>> >>>>>> should
>> >>>>>>>> be added for both provisioned IOPS and throttled I/O -- it is a
>> >>>> basic
>> >>>>>>>> feature of any cloud orchestration platform.
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>> Are you thinking this ability would make it into 4.2? Just curious
>> >>>> what
>> >>>>>>> release we're talking about here. For the SolidFire SAN, you might
>> >>>> have,
>> >>>>>>> say, four separate storage nodes to start (200,000 IOPS) and then
>> >>>> later
>> >>>>>> add
>> >>>>>>> a new node (now you're at 250,000 IOPS). CS would have to have a
>> way
>> >>>> to
>> >>>>>>> know that the number of supported IOPS has increased.
>> >>>>>>
>> >>>>>> Yes, I think we need some *basic*/conservative rails in 4.2. For
>> >>>> example,
>> >>>>>> we may only support expanding capacity in 4.2, and not handle any
>> >>>>>> re-balance scenarios -- node failure, addition, etc. Extrapolating
>> >>>> a
>> >>>>>> bit, the throttled I/O enhancement seems like it needs a similar
>> set
>> >>>> of
>> >>>>>> rails defined per host.
>> >>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>>
>> >>>>>>>> For 4.3, I don't like the idea that a QoS would be expressed in a
>> >>>>>>>> implementation specific manner. I think we need to arrive at a
>> >>>> general
>> >>>>>>>> model that can be exploited by the allocators and planners. We
>> >>>> should
>> >>>>>>>> restrict implementation specific key-value pairs (call them
>> details,
>> >>>>>>>> extended data, whatever) to information that is unique to the
>> >>>> driver and
>> >>>>>>>> would provide no useful information to the management server's
>> >>>>>>>> orchestration functions. A resource QoS does not seem to fit
>> those
>> >>>>>>>> criteria.
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>> I wonder if this would be a good discussion topic for Sunday's CS
>> >>>> Collab
>> >>>>>>> Conf hack day that Joe just sent out an e-mail about?
>> >>>>>>
>> >>>>>> Yes, it would -- I will put something in the wiki topic. It will
>> >>>> also be
>> >>>>>> part of my talk on Monday -- How to Run from Zombie which include
>> >>>> some of
>> >>>>>> my opinions on the topic.
>> >>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>>
>> >>>>>>>> Thanks,
>> >>>>>>>> -John
>> >>>>>>>>
>> >>>>>>>> On Jun 13, 2013, at 5:44 PM, Mike Tutkowski <
>> >>>>>> mike.tutkow...@solidfire.com>
>> >>>>>>>> wrote:
>> >>>>>>>>
>> >>>>>>>>> So, here's my suggestion for 4.2:
>> >>>>>>>>>
>> >>>>>>>>> Accept the values as they are currently required (four new
>> fields
>> >>>> for
>> >>>>>>>> Wei's
>> >>>>>>>>> feature or two new fields for mine).
>> >>>>>>>>>
>> >>>>>>>>> The Add Disk Offering dialog needs three new radio buttons:
>> >>>>>>>>>
>> >>>>>>>>> 1) No QoS
>> >>>>>>>>>
>> >>>>>>>>> 2) Hypervisor QoS
>> >>>>>>>>>
>> >>>>>>>>> 3) Storage Qos
>> >>>>>>>>>
>> >>>>>>>>> The admin needs to specify storage tags that only map to storage
>> >>>> that
>> >>>>>>>>> supports Storage QoS.
>> >>>>>>>>>
>> >>>>>>>>> The admin needs to be aware for Hypervisor QoS that unless all
>> >>>>>>>> hypervisors
>> >>>>>>>>> in use support the new fields, they may not be enforced.
>> >>>>>>>>>
>> >>>>>>>>> Post 4.3:
>> >>>>>>>>>
>> >>>>>>>>> Come up with a way to more generally enter these parameters
>> >>>> (probably
>> >>>>>>>> just
>> >>>>>>>>> key/value pairs sent to the drivers).
>> >>>>>>>>>
>> >>>>>>>>> Have the drivers expose their feature set so the allocators can
>> >>>>>> consider
>> >>>>>>>>> them more fully and throw an exception if there is not a
>> sufficient
>> >>>>>>>> match.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> On Thu, Jun 13, 2013 at 3:31 PM, Mike Tutkowski <
>> >>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>
>> >>>>>>>>>> My thinking is, for 4.2, while not ideal, we will need to put
>> some
>> >>>>>>>> burden
>> >>>>>>>>>> on the admin to configure a Disk Offering in a way that makes
>> >>>> sense.
>> >>>>>> For
>> >>>>>>>>>> example, if he wants to use storage QoS with supported Min and
>> Max
>> >>>>>>>> values,
>> >>>>>>>>>> he'll have to put in a storage tag that references the
>> SolidFire
>> >>>>>> primary
>> >>>>>>>>>> storage (plug-in). If he puts in a storage tag that doesn't,
>> then
>> >>>> he's
>> >>>>>>>> not
>> >>>>>>>>>> going to get the Min and Max feature. We could add help text to
>> >>>> the
>> >>>>>>>> pop-up
>> >>>>>>>>>> dialog that's displayed when you click in the Min and Max text
>> >>>> fields.
>> >>>>>>>>>>
>> >>>>>>>>>> Same idea for Wei's feature.
>> >>>>>>>>>>
>> >>>>>>>>>> Not idea, true...perhaps we can brainstorm on a more
>> comprehensive
>> >>>>>>>>>> approach for post 4.2.
>> >>>>>>>>>>
>> >>>>>>>>>> Maybe in the future we could have the drivers advertise their
>> >>>>>>>> capabilities
>> >>>>>>>>>> and if the allocator feels a request is not being satisfied
>> (say
>> >>>> Min
>> >>>>>> was
>> >>>>>>>>>> entered, but it not's supported by any storage plug-in) it can
>> >>>> throw
>> >>>>>> an
>> >>>>>>>>>> exception.
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> On Thu, Jun 13, 2013 at 3:19 PM, Mike Tutkowski <
>> >>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>
>> >>>>>>>>>>> Comments below in red.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Thanks
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Thu, Jun 13, 2013 at 2:54 PM, John Burwell <
>> >>>> jburw...@basho.com>
>> >>>>>>>> wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>>> Mike,
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Please see my comment in-line below.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>> -John
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> On Jun 13, 2013, at 1:22 AM, Mike Tutkowski <
>> >>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> Hi John,
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> I've put comments below in red.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Thanks!
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> On Wed, Jun 12, 2013 at 10:51 PM, John Burwell <
>> >>>> jburw...@basho.com
>> >>>>>>>
>> >>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Mike,
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> First and foremost, we must ensure that these two features
>> are
>> >>>>>>>>>>>> mutually
>> >>>>>>>>>>>>>> exclusive in 4.2. We don't want to find a configuration
>> that
>> >>>>>>>>>>>> contains both
>> >>>>>>>>>>>>>> hypervisor and storage IOPS guarantees that leads to
>> >>>>>>>> non-deterministic
>> >>>>>>>>>>>>>> operations.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Agreed
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Restricting QoS expression to be either hypervisor or
>> storage
>> >>>>>>>> oriented
>> >>>>>>>>>>>>>> solves the problem in short term. As I understand storage
>> >>>> tags,
>> >>>>>> we
>> >>>>>>>>>>>> have no
>> >>>>>>>>>>>>>> means of expressing this type of mutual exclusion. I wasn't
>> >>>>>>>>>>>> necessarily
>> >>>>>>>>>>>>>> intending that we implement this allocation model in 4.3,
>> but
>> >>>>>>>> instead,
>> >>>>>>>>>>>>>> determine if this type model would be one we would want to
>> >>>> support
>> >>>>>>>> in
>> >>>>>>>>>>>> the
>> >>>>>>>>>>>>>> future. If so, I would encourage us to ensure that the data
>> >>>> model
>> >>>>>>>> and
>> >>>>>>>>>>>>>> current implementation would not preclude evolution in that
>> >>>>>>>>>>>> direction. My
>> >>>>>>>>>>>>>> view is that this type of allocation model is what user's
>> >>>> expect
>> >>>>>> of
>> >>>>>>>>>>>> "cloud"
>> >>>>>>>>>>>>>> systems -- selecting the best available resource set to
>> >>>> fulfill a
>> >>>>>>>>>>>> set of
>> >>>>>>>>>>>>>> system requirements.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> I believe we have meet your requirement here in that what
>> we've
>> >>>>>>>>>>>> implemented
>> >>>>>>>>>>>>> should not make refinement difficult in the future. If we
>> don't
>> >>>>>>>> modify
>> >>>>>>>>>>>>> allocators for 4.2, but we do for 4.3, we've made relatively
>> >>>> simple
>> >>>>>>>>>>>> changes
>> >>>>>>>>>>>>> to enhance the current functioning of the system.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Looking through both patches, I have to say that the
>> aggregated
>> >>>>>> result
>> >>>>>>>>>>>> seems a bit confusing. There are six new attributes for
>> >>>> throttled
>> >>>>>>>> I/O and
>> >>>>>>>>>>>> two for provisioned IOPS with no obvious grouping. My concern
>> >>>> is
>> >>>>>> not
>> >>>>>>>>>>>> technical, but rather, about maintainability. At minimum,
>> >>>> Javadoc
>> >>>>>>>> should
>> >>>>>>>>>>>> be added explaining the two sets of attributes and their
>> mutual
>> >>>>>>>> exclusion.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> I agree: We need JavaDoc to explain them and their mutual
>> >>>> exclusion.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> The other part that is interesting is that throttled I/O
>> >>>> provides
>> >>>>>> both
>> >>>>>>>>>>>> an IOPS and byte measured QoS as a rate where provisioned
>> IOPS
>> >>>> uses
>> >>>>>> a
>> >>>>>>>>>>>> range. In order to select the best available resource to
>> >>>> fulfill a
>> >>>>>>>> QoS, we
>> >>>>>>>>>>>> would need to have the QoS expression normalized in terms of
>> >>>> units
>> >>>>>>>> (IOPS or
>> >>>>>>>>>>>> bytes) and their expression (rate vs. range). If we want to
>> >>>>>> achieve a
>> >>>>>>>>>>>> model like I described, I think we would need to resolve this
>> >>>> issue
>> >>>>>>>> in 4.2
>> >>>>>>>>>>>> to ensure a viable migration path.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> I think we're not likely to be able to normalize the input for
>> >>>> 4.2.
>> >>>>>>>> Plus
>> >>>>>>>>>>> people probably want to input the data in terms they're
>> familiar
>> >>>> with
>> >>>>>>>> for
>> >>>>>>>>>>> the products in question.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Ideally we would fix the way we do storage tagging and let the
>> >>>> user
>> >>>>>>>> send
>> >>>>>>>>>>> key/value pairs to each vendor that could be selected due to a
>> >>>> given
>> >>>>>>>>>>> storage tag. I'm still not sure that would solve it because
>> what
>> >>>>>>>> happens if
>> >>>>>>>>>>> you change the storage tag of a given Primary Storage after
>> >>>> having
>> >>>>>>>> created
>> >>>>>>>>>>> a Disk Offering?
>> >>>>>>>>>>>
>> >>>>>>>>>>> Basically storage tagging is kind of a mess and we should
>> >>>> re-think
>> >>>>>> it.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Also, we need to have a way for the drivers to expose their
>> >>>> supported
>> >>>>>>>>>>> feature sets so the allocators can make good choices.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> As I think through the implications of these requirements
>> and
>> >>>>>>>> reflect
>> >>>>>>>>>>>> on
>> >>>>>>>>>>>>>> the reviews, I don't understand why they haven't already
>> >>>> impacted
>> >>>>>>>> the
>> >>>>>>>>>>>>>> allocators and planners. As it stands, the current
>> >>>> provisioned
>> >>>>>> IOPS
>> >>>>>>>>>>>> has no
>> >>>>>>>>>>>>>> checks to ensure that the volumes are allocated to devices
>> >>>> that
>> >>>>>> have
>> >>>>>>>>>>>>>> capacity to fulfill the requested QoS. Therefore, as I
>> >>>> understand
>> >>>>>>>> the
>> >>>>>>>>>>>>>> current patch, we can overcommit storage resources --
>> >>>> potentially
>> >>>>>>>>>>>> causing
>> >>>>>>>>>>>>>> none of the QoS obligations from being fulfilled. It seems
>> >>>> to me
>> >>>>>>>>>>>> that a
>> >>>>>>>>>>>>>> DataStore supporting provisioned IOPS should express the
>> >>>> maximum
>> >>>>>>>> IOPS
>> >>>>>>>>>>>> which
>> >>>>>>>>>>>>>> it can support and some type of overcommitment factor. This
>> >>>>>>>>>>>> information
>> >>>>>>>>>>>>>> should be used by the storage allocators to determine the
>> >>>> device
>> >>>>>>>> best
>> >>>>>>>>>>>> able
>> >>>>>>>>>>>>>> to support the resources needs of a volume. It seems that a
>> >>>>>> similar
>> >>>>>>>>>>>> set of
>> >>>>>>>>>>>>>> considerations would need to be added to the Hypervisor
>> layer
>> >>>>>> which
>> >>>>>>>>>>>>>> allocating a VM to a host to prevent oversubscription.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Yeah, for this first release, we just followed the path that
>> >>>> was
>> >>>>>>>>>>>> previously
>> >>>>>>>>>>>>> established for other properties you see on dialogs in CS:
>> Just
>> >>>>>>>> because
>> >>>>>>>>>>>>> they're there doesn't mean the vendor your VM is deployed to
>> >>>>>> supports
>> >>>>>>>>>>>> them.
>> >>>>>>>>>>>>> It is then up to the admin to make sure he inputs, say, a
>> >>>> storage
>> >>>>>> tag
>> >>>>>>>>>>>> that
>> >>>>>>>>>>>>> confines the deployment only to storage that supports the
>> >>>> selected
>> >>>>>>>>>>>>> features. This is not ideal, but it's kind of the way
>> >>>> CloudStack
>> >>>>>>>> works
>> >>>>>>>>>>>>> today.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> I understand the tag functionality, and the need for the
>> >>>>>> administrator
>> >>>>>>>>>>>> to very carefully construct offerings. My concern is that we
>> >>>> over
>> >>>>>>>>>>>> guarantee a resource's available IOPS. For the purposes of
>> >>>>>>>> illustration,
>> >>>>>>>>>>>> let's say we have a SolidFire, and the max IOPS for that
>> device
>> >>>> is
>> >>>>>>>> 100000.
>> >>>>>>>>>>>> We also know that we can safely oversubscribe by 50%.
>> >>>> Therefore,
>> >>>>>> we
>> >>>>>>>>>>>> need to ensure that we don't allocate more than 150,000
>> >>>> guaranteed
>> >>>>>>>> IOPS
>> >>>>>>>>>>>> from that device. Intuitively, it seems like the DataStore
>> >>>>>>>> configuration
>> >>>>>>>>>>>> should have a max assignable IOPS and overcommitment factor.
>> >>>> As we
>> >>>>>>>>>>>> allocate volumes and attach VMs, we need to ensure that
>> >>>> guarantee
>> >>>>>>>> more IOPS
>> >>>>>>>>>>>> exceed the configured maximum for a DataStore. Does that make
>> >>>>>> sense?
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> I think that's a good idea for a future enhancement. I'm not
>> even
>> >>>>>> sure
>> >>>>>>>> I
>> >>>>>>>>>>> can query the SAN to find out how many IOPS safely remain. I'd
>> >>>> have
>> >>>>>> to
>> >>>>>>>> get
>> >>>>>>>>>>> all of the min values for all of the volumes on the SAN and
>> total
>> >>>>>> them
>> >>>>>>>> up,
>> >>>>>>>>>>> I suppose, and subtract it from the total (user facing)
>> supported
>> >>>>>> IOPS
>> >>>>>>>> of
>> >>>>>>>>>>> the system.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Another question occurs to me -- should we allow non-QoS
>> >>>> resources
>> >>>>>>>> to
>> >>>>>>>>>>>> be
>> >>>>>>>>>>>>>> assigned to hosts/storage devices that ensure QoS? For
>> >>>>>> provisioned
>> >>>>>>>>>>>> IOPS, I
>> >>>>>>>>>>>>>> think a side effect of the current implementation is
>> SolidFire
>> >>>>>>>> volumes
>> >>>>>>>>>>>>>> always have a QoS. However, for hypervisor throttled I/O,
>> it
>> >>>>>> seems
>> >>>>>>>>>>>>>> entirely possible for non-QoS VMs to allocated side-by-side
>> >>>> with
>> >>>>>> QoS
>> >>>>>>>>>>>> VMs.
>> >>>>>>>>>>>>>> In this scenario, a greedy, unbounded VM could potentially
>> >>>> starve
>> >>>>>>>> out
>> >>>>>>>>>>>> the
>> >>>>>>>>>>>>>> other VMs on the host -- preventing the QoSes defined the
>> >>>>>> collocated
>> >>>>>>>>>>>> VMs
>> >>>>>>>>>>>>>> from being fulfilled.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> You can make SolidFire volumes (inside and outside of CS)
>> and
>> >>>> not
>> >>>>>>>>>>>> specify
>> >>>>>>>>>>>>> IOPS. You'll still get guaranteed IOPS, but it will be at
>> the
>> >>>>>>>> defaults
>> >>>>>>>>>>>> we
>> >>>>>>>>>>>>> choose. Unless you over-provision IOPS on a SolidFire SAN,
>> you
>> >>>> will
>> >>>>>>>>>>>> have
>> >>>>>>>>>>>>> your Mins met.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> It sounds like you're perhaps looking for a storage tags
>> >>>> exclusions
>> >>>>>>>>>>>> list,
>> >>>>>>>>>>>>> which might be nice to have at some point (i.e. don't
>> deploy my
>> >>>>>>>> volume
>> >>>>>>>>>>>> to
>> >>>>>>>>>>>>> storage with these following tags).
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> I don't like the idea of a storage tags exclusion list as it
>> >>>> would
>> >>>>>>>>>>>> complicate component assembly. It would require a storage
>> >>>> plugin to
>> >>>>>>>>>>>> anticipate all of the possible component assemblies and
>> >>>> determine
>> >>>>>> the
>> >>>>>>>>>>>> invalid relationships. I prefer that drivers express their
>> >>>>>>>> capabilities
>> >>>>>>>>>>>> which can be matched to a set of requested requirements.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> I'm not sure why a storage plug-in would care about inclusion
>> or
>> >>>>>>>>>>> exclusion lists. It just needs to advertise its functionality
>> in
>> >>>> a
>> >>>>>> way
>> >>>>>>>> the
>> >>>>>>>>>>> allocator understands.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> I agree with your assessment of Hypervisor QoS. Since it
>> only
>> >>>>>> limits
>> >>>>>>>>>>>> IOPS,
>> >>>>>>>>>>>>> it does not solve the Noisy Neighbor problem. Only a system
>> >>>> with
>> >>>>>>>>>>>> guaranteed
>> >>>>>>>>>>>>> minimum IOPS does this.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> As I said, for SolidFire, it sounds like this problem does
>> not
>> >>>>>> exist.
>> >>>>>>>>>>>> However, I am concerned with the more general case as we
>> >>>> supported
>> >>>>>>>> more
>> >>>>>>>>>>>> devices with provisioned IOPS.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> Post 4.2 we need to investigate a way to pass vendor-specific
>> >>>> values
>> >>>>>> to
>> >>>>>>>>>>> drivers. Min and Max and pretty industry standard for
>> provisioned
>> >>>>>>>> IOPS, but
>> >>>>>>>>>>> what if you break them out by read and write or do something
>> >>>> else? We
>> >>>>>>>> need
>> >>>>>>>>>>> a more general mechanism.
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> In my opinion, we need to ensure that hypervisor throttled
>> >>>> I/O
>> >>>>>> and
>> >>>>>>>>>>>>>> storage provisioned IOPS are mutually exclusive per volume.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Agreed
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> We also need to understand the implications of these QoS
>> >>>>>> guarantees
>> >>>>>>>> on
>> >>>>>>>>>>>>>> operation of the system to ensure that the underlying
>> hardware
>> >>>>>>>>>>>> resources
>> >>>>>>>>>>>>>> can fulfill them. Given the time frame, we will likely be
>> >>>> forced
>> >>>>>> to
>> >>>>>>>>>>>> make
>> >>>>>>>>>>>>>> compromises to achieve these goals, and refine the
>> >>>> implementation
>> >>>>>> in
>> >>>>>>>>>>>> 4.3.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> I agree, John. I also think you've come up with some great
>> >>>> ideas
>> >>>>>> for
>> >>>>>>>>>>>> 4.3. :)
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>> -John
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> On Jun 12, 2013, at 11:35 PM, Mike Tutkowski <
>> >>>>>>>>>>>> mike.tutkow...@solidfire.com>
>> >>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Hi,
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Yeah, Alex, I think that's the way we were planning (with
>> >>>> storage
>> >>>>>>>>>>>> tags).
>> >>>>>>>>>>>>>> I
>> >>>>>>>>>>>>>>> believe John was just throwing out an idea that - in
>> >>>> addition to
>> >>>>>>>>>>>> storage
>> >>>>>>>>>>>>>>> tags - we could look into these allocators (storage QoS
>> being
>> >>>>>>>>>>>> preferred,
>> >>>>>>>>>>>>>>> then hypervisor QoS if storage QoS is not available, but
>> >>>>>> hypervisor
>> >>>>>>>>>>>> QoS
>> >>>>>>>>>>>>>> is).
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> I think John's concern is that you can enter in values for
>> >>>> Wei's
>> >>>>>>>> and
>> >>>>>>>>>>>> my
>> >>>>>>>>>>>>>>> feature that are not honored by other vendors (at least
>> >>>> yet), so
>> >>>>>> he
>> >>>>>>>>>>>> was
>> >>>>>>>>>>>>>>> hoping - in addition to storage tags - for the allocators
>> to
>> >>>>>> prefer
>> >>>>>>>>>>>> these
>> >>>>>>>>>>>>>>> vendors when these fields are filled in. As it stands
>> today
>> >>>> in
>> >>>>>>>>>>>>>> CloudStack,
>> >>>>>>>>>>>>>>> we already have this kind of an issue with other features
>> >>>> (fields
>> >>>>>>>> in
>> >>>>>>>>>>>>>>> dialogs for features that not all vendors support).
>> Perhaps
>> >>>> post
>> >>>>>>>> 4.2
>> >>>>>>>>>>>> we
>> >>>>>>>>>>>>>>> could look into generic name/value pairs (this is how
>> >>>> OpenStack
>> >>>>>>>>>>>> addresses
>> >>>>>>>>>>>>>>> the issue).
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Honestly, I think we're too late in the game (two weeks
>> until
>> >>>>>> code
>> >>>>>>>>>>>>>> freeze)
>> >>>>>>>>>>>>>>> to go too deeply down that path in 4.2.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> It's probably better if we - at least for 4.2 - keep Wei's
>> >>>> fields
>> >>>>>>>>>>>> and my
>> >>>>>>>>>>>>>>> fields as is, make sure only one or the other feature has
>> >>>> data
>> >>>>>>>>>>>> entered
>> >>>>>>>>>>>>>> for
>> >>>>>>>>>>>>>>> it (or neither), and call it good for 4.2.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Then let's step back and look into a more general-purpose
>> >>>> design
>> >>>>>>>>>>>> that can
>> >>>>>>>>>>>>>>> be applied throughout CloudStack where we have these
>> >>>> situations.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> What do you think?
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> On Wed, Jun 12, 2013 at 5:21 PM, John Burwell <
>> >>>>>> jburw...@basho.com>
>> >>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> Mike,
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I just published my review @
>> >>>>>> https://reviews.apache.org/r/11479/.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I apologize for the delay,
>> >>>>>>>>>>>>>>>> -John
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> On Jun 12, 2013, at 12:43 PM, Mike Tutkowski <
>> >>>>>>>>>>>>>> mike.tutkow...@solidfire.com>
>> >>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> No problem, John.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> I still want to re-review it by myself before coming up
>> >>>> with a
>> >>>>>>>> new
>> >>>>>>>>>>>>>> patch
>> >>>>>>>>>>>>>>>>> file.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Also, maybe I should first wait for Wei's changes to be
>> >>>> checked
>> >>>>>>>> in
>> >>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>> merge those into mine before generating a new patch
>> file?
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> On Wed, Jun 12, 2013 at 10:40 AM, John Burwell <
>> >>>>>>>> jburw...@basho.com
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Mike,
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> I just realized that I forgot to publish my review. I
>> am
>> >>>>>>>> offline
>> >>>>>>>>>>>> ATM,
>> >>>>>>>>>>>>>>>>>> but I will publish it in the next couple of hours.
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Do you plan to update your the patch in Review Board?
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Sorry for the oversight,
>> >>>>>>>>>>>>>>>>>> -John
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> On Jun 12, 2013, at 2:26 AM, Mike Tutkowski
>> >>>>>>>>>>>>>>>>>> <mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Hi Edison, John, and Wei (and whoever else is reading
>> >>>> this :)
>> >>>>>>>> ),
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Just an FYI that I believe I have implemented all the
>> >>>> areas
>> >>>>>> we
>> >>>>>>>>>>>> wanted
>> >>>>>>>>>>>>>>>>>>> addressed.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> I plan to review the code again tomorrow morning or
>> >>>>>> afternoon,
>> >>>>>>>>>>>> then
>> >>>>>>>>>>>>>>>> send
>> >>>>>>>>>>>>>>>>>> in
>> >>>>>>>>>>>>>>>>>>> another patch.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Thanks for all the work on this everyone!
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> On Tue, Jun 11, 2013 at 12:29 PM, Mike Tutkowski <
>> >>>>>>>>>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Sure, that sounds good.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> On Tue, Jun 11, 2013 at 12:11 PM, Wei ZHOU <
>> >>>>>>>>>>>> ustcweiz...@gmail.com>
>> >>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Hi Mike,
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> It looks the two feature do not have many conflicts
>> in
>> >>>> Java
>> >>>>>>>>>>>> code,
>> >>>>>>>>>>>>>>>>>> except
>> >>>>>>>>>>>>>>>>>>>>> the cloudstack UI.
>> >>>>>>>>>>>>>>>>>>>>> If you do not mind, I will merge disk_io_throttling
>> >>>> branch
>> >>>>>>>> into
>> >>>>>>>>>>>>>>>> master
>> >>>>>>>>>>>>>>>>>>>>> this
>> >>>>>>>>>>>>>>>>>>>>> week, so that you can develop based on it.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> -Wei
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> 2013/6/11 Mike Tutkowski <
>> mike.tutkow...@solidfire.com
>> >>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Hey John,
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> The SolidFire patch does not depend on the
>> >>>> object_store
>> >>>>>>>>>>>> branch,
>> >>>>>>>>>>>>>> but
>> >>>>>>>>>>>>>>>> -
>> >>>>>>>>>>>>>>>>>> as
>> >>>>>>>>>>>>>>>>>>>>>> Edison mentioned - it might be easier if we merge
>> the
>> >>>>>>>>>>>> SolidFire
>> >>>>>>>>>>>>>>>> branch
>> >>>>>>>>>>>>>>>>>>>>> into
>> >>>>>>>>>>>>>>>>>>>>>> the object_store branch before object_store goes
>> into
>> >>>>>>>> master.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> I'm not sure how the disk_io_throttling fits into
>> this
>> >>>>>> merge
>> >>>>>>>>>>>>>>>> strategy.
>> >>>>>>>>>>>>>>>>>>>>>> Perhaps Wei can chime in on that.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> On Tue, Jun 11, 2013 at 11:07 AM, John Burwell <
>> >>>>>>>>>>>>>> jburw...@basho.com>
>> >>>>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Mike,
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> We have a delicate merge dance to perform. The
>> >>>>>>>>>>>>>> disk_io_throttling,
>> >>>>>>>>>>>>>>>>>>>>>>> solidfire, and object_store appear to have a
>> number
>> >>>> of
>> >>>>>>>>>>>>>> overlapping
>> >>>>>>>>>>>>>>>>>>>>>>> elements. I understand the dependencies between
>> the
>> >>>>>>>> patches
>> >>>>>>>>>>>> to
>> >>>>>>>>>>>>>> be
>> >>>>>>>>>>>>>>>> as
>> >>>>>>>>>>>>>>>>>>>>>>> follows:
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> object_store <- solidfire -> disk_io_throttling
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Am I correct that the device management aspects of
>> >>>>>>>> SolidFire
>> >>>>>>>>>>>> are
>> >>>>>>>>>>>>>>>>>>>>> additive
>> >>>>>>>>>>>>>>>>>>>>>>> to the object_store branch or there are circular
>> >>>>>> dependency
>> >>>>>>>>>>>>>> between
>> >>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> branches? Once we understand the dependency graph,
>> >>>> we
>> >>>>>> can
>> >>>>>>>>>>>>>>>> determine
>> >>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> best approach to land the changes in master.
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>>>>>>>>>>> -John
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> On Jun 10, 2013, at 11:10 PM, Mike Tutkowski <
>> >>>>>>>>>>>>>>>>>>>>>> mike.tutkow...@solidfire.com>
>> >>>>>>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> Also, if we are good with Edison merging my code
>> >>>> into
>> >>>>>> his
>> >>>>>>>>>>>> branch
>> >>>>>>>>>>>>>>>>>>>>> before
>> >>>>>>>>>>>>>>>>>>>>>>>> going into master, I am good with that.
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> We can remove the StoragePoolType.Dynamic code
>> >>>> after his
>> >>>>>>>>>>>> merge
>> >>>>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>>>>>> we
>> >>>>>>>>>>>>>>>>>>>>>> can
>> >>>>>>>>>>>>>>>>>>>>>>>> deal with Burst IOPS then, as well.
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> On Mon, Jun 10, 2013 at 9:08 PM, Mike Tutkowski <
>> >>>>>>>>>>>>>>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> Let me make sure I follow where we're going
>> here:
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 1) There should be NO references to hypervisor
>> >>>> code in
>> >>>>>>>> the
>> >>>>>>>>>>>>>>>> storage
>> >>>>>>>>>>>>>>>>>>>>>>>>> plug-ins code (this includes the default storage
>> >>>>>> plug-in,
>> >>>>>>>>>>>> which
>> >>>>>>>>>>>>>>>>>>>>>>> currently
>> >>>>>>>>>>>>>>>>>>>>>>>>> sends several commands to the hypervisor in use
>> >>>>>> (although
>> >>>>>>>>>>>> it
>> >>>>>>>>>>>>>> does
>> >>>>>>>>>>>>>>>>>>>>> not
>> >>>>>>>>>>>>>>>>>>>>>>> know
>> >>>>>>>>>>>>>>>>>>>>>>>>> which hypervisor (XenServer, ESX(i), etc.) is
>> >>>> actually
>> >>>>>> in
>> >>>>>>>>>>>> use))
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 2) managed=true or managed=false can be placed
>> in
>> >>>> the
>> >>>>>> url
>> >>>>>>>>>>>> field
>> >>>>>>>>>>>>>>>> (if
>> >>>>>>>>>>>>>>>>>>>>>> not
>> >>>>>>>>>>>>>>>>>>>>>>>>> present, we default to false). This info is
>> stored
>> >>>> in
>> >>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>>>> storage_pool_details table.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 3) When the "attach" command is sent to the
>> >>>> hypervisor
>> >>>>>> in
>> >>>>>>>>>>>>>>>>>>>>> question, we
>> >>>>>>>>>>>>>>>>>>>>>>>>> pass the managed property along (this takes the
>> >>>> place
>> >>>>>> of
>> >>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>>>> StoragePoolType.Dynamic check).
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 4) execute(AttachVolumeCommand) in the
>> hypervisor
>> >>>>>> checks
>> >>>>>>>>>>>> for
>> >>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>> managed
>> >>>>>>>>>>>>>>>>>>>>>>>>> property. If true for an attach, the necessary
>> >>>>>> hypervisor
>> >>>>>>>>>>>> data
>> >>>>>>>>>>>>>>>>>>>>>>> structure is
>> >>>>>>>>>>>>>>>>>>>>>>>>> created and the rest of the attach command
>> >>>> executes to
>> >>>>>>>>>>>> attach
>> >>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> volume.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 5) When execute(AttachVolumeCommand) is invoked
>> to
>> >>>>>>>> detach a
>> >>>>>>>>>>>>>>>> volume,
>> >>>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>>>> same check is made. If managed, the hypervisor
>> data
>> >>>>>>>>>>>> structure
>> >>>>>>>>>>>>>> is
>> >>>>>>>>>>>>>>>>>>>>>>> removed.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> 6) I do not see an clear way to support Burst
>> IOPS
>> >>>> in
>> >>>>>> 4.2
>> >>>>>>>>>>>>>> unless
>> >>>>>>>>>>>>>>>>>>>>> it is
>> >>>>>>>>>>>>>>>>>>>>>>>>> stored in the volumes and disk_offerings table.
>> If
>> >>>> we
>> >>>>>>>> have
>> >>>>>>>>>>>> some
>> >>>>>>>>>>>>>>>>>>>>> idea,
>> >>>>>>>>>>>>>>>>>>>>>>>>> that'd be cool.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> Thanks!
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> On Mon, Jun 10, 2013 at 8:58 PM, Mike Tutkowski
>> <
>> >>>>>>>>>>>>>>>>>>>>>>>>> mike.tutkow...@solidfire.com> wrote:
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>> "+1 -- Burst IOPS can be implemented while
>> >>>> avoiding
>> >>>>>>>>>>>>>>>> implementation
>> >>>>>>>>>>>>>>>>>>>>>>>>>> attributes. I always wondered about the details
>> >>>>>> field.
>> >>>>>>>> I
>> >>>>>>>>>>>>>> think
>> >>>>>>>>>>>>>>>>>>>>> we
>> >>>>>>>>>>>>>>>>>>>>>>> should
>> >>>>>>>>>>>>>>>>>>>>>>>>>> beef up the description in the documentation
>> >>>> regarding
>> >>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>> expected
>> >>>>>>>>>>>>>>>>>>>>>>> format
>> >>>>>>>>>>>>>>>>>>>>>>>>>> of the field. In 4.1, I noticed that the
>> details
>> >>>> are
>> >>>>>>>> not
>> >>>>>>>>>>>>>>>>>>>>> returned on
>> >>>>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>>>>> createStoratePool updateStoragePool, or
>> >>>>>> listStoragePool
>> >>>>>>>>>>>>>>>> response.
>> >>>>>>>>>>>>>>>>>>>>>> Why
>> >>>>>>>>>>>>>>>>>>>>>>>>>> don't we return it? It seems like it would be
>> >>>> useful
>> >>>>>>>> for
>> >>>>>>>>>>>>>>>> clients
>> >>>>>>>>>>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>>>>>>>> be
>> >>>>>>>>>>>>>>>>>>>>>>>>>> able to inspect the contents of the details
>> >>>> field."
>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>> Not sure how this would work storing Burst IOPS
>> >>>> here.
>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>> Burst IOPS need to be variable on a Disk
>> >>>>>>>> Offering-by-Disk
>> >>>>>>>>>>>>>>>> Offering
>> >>>>>>>>>>>>>>>>>>>>>>>>>> basis. For each Disk Offering created, you have
>> >>>> to be
>> >>>>>>>>>>>> able to
>> >>>>>>>>>>>>>>>>>>>>>> associate
>> >>>>>>>>>>>>>>>>>>>>>>>>>> unique Burst IOPS. There is a
>> >>>> disk_offering_details
>> >>>>>>>> table.
>> >>>>>>>>>>>>>> Maybe
>> >>>>>>>>>>>>>>>>>>>>> it
>> >>>>>>>>>>>>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>>>>>>>>>>> go there?
>> >>>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>> I'm also not sure how you would accept the
>> Burst
>> >>>> IOPS
>> >>>>>> in
>> >>>>>>>>>>>> the
>> >>>>>>>>>>>>>> GUI
>> >>>>>>>>>>>>>>>>>>>>> if
>> >>>>>>>>>>>>>>>>>>>>>>> it's
>> >>>>>>>>>>>>>>>>>>>>>>>>>> not stored like the Min and Max fields are in
>> the
>> >>>> DB.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>>>>>>>>>> Advancing the way the world uses the cloud<
>> >>>>>>>>>>>>>>>>>>>>>>>
>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>>>>>>>>>>>>> cloud<
>> >>>>>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>>>>>>>>>>> cloud<
>> >>>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>>>>> Advancing the way the world uses the cloud<
>> >>>>>>>>>>>>>>>>>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>>>>>>>> cloud<
>> http://solidfire.com/solution/overview/?video=play
>> >>>>>
>> >>>>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>>>>>> cloud<
>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> --
>> >>>>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>>>> *™*
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> --
>> >>>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>>> Advancing the way the world uses the cloud<
>> >>>>>>>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>>> *™*
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> --
>> >>>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>>> o: 303.746.7302
>> >>>>>>>>>> Advancing the way the world uses the cloud<
>> >>>>>>>> http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>>> *™*
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> --
>> >>>>>>>>> *Mike Tutkowski*
>> >>>>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>>>> o: 303.746.7302
>> >>>>>>>>> Advancing the way the world uses the
>> >>>>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>> >>>>>>>>> *™*
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> --
>> >>>>>>> *Mike Tutkowski*
>> >>>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>>>> e: mike.tutkow...@solidfire.com
>> >>>>>>> o: 303.746.7302
>> >>>>>>> Advancing the way the world uses the
>> >>>>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>> >>>>>>> *™*
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> *Mike Tutkowski*
>> >>>>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>>>> e: mike.tutkow...@solidfire.com
>> >>>>> o: 303.746.7302
>> >>>>> Advancing the way the world uses the
>> >>>>> cloud<http://solidfire.com/solution/overview/?video=play>
>> >>>>> *™*
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>> --
>> >>> *Mike Tutkowski*
>> >>> *Senior CloudStack Developer, SolidFire Inc.*
>> >>> e: mike.tutkow...@solidfire.com
>> >>> o: 303.746.7302
>> >>> Advancing the way the world uses the cloud<
>> http://solidfire.com/solution/overview/?video=play>
>> >>> *™*
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> *Mike Tutkowski*
>> >> *Senior CloudStack Developer, SolidFire Inc.*
>> >> e: mike.tutkow...@solidfire.com
>> >> o: 303.746.7302
>> >> Advancing the way the world uses the cloud<
>> http://solidfire.com/solution/overview/?video=play>
>> >> *™*
>> >>
>> >
>> >
>> >
>> > --
>> > *Mike Tutkowski*
>> > *Senior CloudStack Developer, SolidFire Inc.*
>> > e: mike.tutkow...@solidfire.com
>> > o: 303.746.7302
>> > Advancing the way the world uses the
>> > cloud<http://solidfire.com/solution/overview/?video=play>
>> > *™*
>> >
>>
>>
>
>
> --
> *Mike Tutkowski*
> *Senior CloudStack Developer, SolidFire Inc.*
> e: mike.tutkow...@solidfire.com
> o: 303.746.7302
> Advancing the way the world uses the 
> cloud<http://solidfire.com/solution/overview/?video=play>
> *™*
>



-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkow...@solidfire.com
o: 303.746.7302
Advancing the way the world uses the
cloud<http://solidfire.com/solution/overview/?video=play>
*™*

Reply via email to