Simon, I completely agree with you regarding SAN complexities and their associated performance guarantees. To that end, I am encouraging that we start out with a very simple approach -- let the operator tell us how many IOPS we can commit to the device rather than trying to somehow devise it from a management API. For 4.2, my primary concern is ensuring that we never oversubscribe the device which is a much easier problem than optimizing allocation to get the maximum IOPS from it. Oversubscription is a system stability issue against which we must always guard. In terms of optimization, I propose that we attack that problem in a later release once we have strong protections against oversubscription.
In terms of homogenizing storage (or hypervisors or network devices), it is a side effect of the integration and resource management provided by CloudStack. There is an inherent trade-off made between flexibility and optimization when adopting platforms such as CloudStack. My personal goal is to minimize that trade-off as much as possible which, in my experience, is best achieved by keeping things as simple as possible. Thanks, -John On Jun 14, 2013, at 4:39 PM, Simon Weller <swel...@ena.com> wrote: > > John, > > > I'm not arguing that CloudStack's job isn't to provide resource management. > The challenge here is we're talking about managing a resource that is > extremely complex in a very 'one size fits all' manner. For example, lets say > you have a SAN that supports storage tiering, and can dynamically move data > shards to different tiers of disks where the IOP vs capacity varies. So your > data shard starts on an array of fast, lower capacity disks, and based on > various criteria gets relocated to slower, higher capacity disks. In this > scenario , your IOP max capacity has just changed for some subset (or all) of > the data tied to this primary storage object based on some usage profile. > Likewise, you may have some high use shards that never get demoted to larger > disks, so you run out of your primary tier storage capacity. > My point is, It's hard to account for these scenarios in an absolute world. > I'm just concerned that we're getting ourselves tied up trying to paint all > storage as being the same, when in fact every product and project whether > commercial or open source has a different set of features and objectives. > > > - Si > ----- Original Message ----- > > From: "John Burwell" <jburw...@basho.com> > To: dev@cloudstack.apache.org > Sent: Friday, June 14, 2013 2:59:47 PM > Subject: Re: [MERGE] disk_io_throttling to MASTER > > 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> >> *™* >> > >