Alternatively, we could always add a new table, storage_features. It could
contain three columns: Our typical ID column, a foreign key that maps back
to the storage_pool table, and a column for the feature's name (this string
would map to an enumeration in the codebase).

Ex.

storage_pool

ID                     Features
1                       8

storage_pool_features

ID                    Feature                           Feature_Name
1                      8                                    Min
2                      8                                    Max

The storage pool with ID of 1 supports Min and Max.

If your DiskProfile (passed to the allocator) has a Min and Max greater
than 0, then the storage pool we choose has to support Min and Max.

We could always worry about exceeding a certain number of IOPS in the
storage pool and skipping that storage pool at some future release.


On Thu, Jun 13, 2013 at 6:45 PM, Mike Tutkowski <
mike.tutkow...@solidfire.com> wrote:

> 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?
>
> ********************
>
> It looks like we might be able to modify the
> ZoneWideStoragePoolAllocator's filter method to check if the storage in
> question supports, say, Min and Max IOPS values (if either value is greater
> than 0, then we consider it set).
>
> We'd have to decide how we want to store information about the features a
> storage pool supports. Would it be in the storage_pool_details table
> perhaps?
>
>
> On Thu, Jun 13, 2013 at 4: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.
>>
>>
>>>
>>> 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?
>>
>>
>>>
>>> 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>
*™*

Reply via email to