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> > *™*