Wei,

On Jun 3, 2013, at 2:13 AM, Wei ZHOU <ustcweiz...@gmail.com> wrote:

> Hi John, Mike
> 
> I hope Mike's aswer helps you. I am trying to adding more.
> 
> (1) I think billing should depend on IO statistics rather than IOPS
> limitation. Please review disk_io_stat if you have time.   disk_io_stat can
> get the IO statistics including bytes/iops read/write for an individual
> virtual machine.

Going by the AWS model, customers are billed more for volumes with provisioned 
IOPS, as well as, for those operations (http://aws.amazon.com/ebs/).  I would 
imagine our users would like the option to employ similar cost models.  Could 
an operator implement such a billing model in the current patch?

> 
> (2) Do you mean IOPS runtime change? KVM supports setting IOPS/BPS
> limitation for a running virtual machine through command line. However,
> CloudStack does not support changing the parameters of a created offering
> (computer offering or disk offering).

I meant at the Java interface level.  I apologize for being unclear.  Can we 
more generalize allocation algorithms with a set of interfaces that describe 
the service guarantees provided by a resource?

> 
> (3) It is a good question. Maybe it is better to commit Mike's patch after
> disk_io_throttling as Mike needs to consider the limitation in hypervisor
> type, I think.

I will expand on my thoughts in a later response to Mike regarding the touch 
points between these two features.  I think that disk_io_throttling will need 
to be merged before SolidFire, but I think we need closer coordination between 
the branches (possibly have have solidfire track disk_io_throttling) to 
coordinate on this issue.

> 
> - Wei
> 
> 
> 2013/6/3 John Burwell <jburw...@basho.com>
> 
>> Mike,
>> 
>> The things I want to understand are the following:
>> 
>>   1) Is there value in capturing IOPS policies be captured in a common
>> data model (e.g. for billing/usage purposes, expressing offerings).
>>    2) Should there be a common interface model for reasoning about IOP
>> provisioning at runtime?
>>    3) How are conflicting provisioned IOPS configurations between a
>> hypervisor and storage device reconciled?  In particular, a scenario where
>> is lead to believe (and billed) for more IOPS configured for a VM than a
>> storage device has been configured to deliver.  Another scenario could a
>> consistent configuration between a VM and a storage device at creation
>> time, but a later modification to storage device introduces logical
>> inconsistency.
>> 
>> Thanks,
>> -John
>> 
>> On Jun 2, 2013, at 8:38 PM, Mike Tutkowski <mike.tutkow...@solidfire.com>
>> wrote:
>> 
>> Hi John,
>> 
>> I believe Wei's feature deals with controlling the max number of IOPS from
>> the hypervisor side.
>> 
>> My feature is focused on controlling IOPS from the storage system side.
>> 
>> I hope that helps. :)
>> 
>> 
>> On Sun, Jun 2, 2013 at 6:35 PM, John Burwell <jburw...@basho.com> wrote:
>> 
>>> Wei,
>>> 
>>> My opinion is that no features should be merged until all functional
>>> issues have been resolved and it is ready to turn over to test.  Until
>> the
>>> total Ops vs discrete read/write ops issue is addressed and re-reviewed
>> by
>>> Wido, I don't think this criteria has been satisfied.
>>> 
>>> Also, how does this work intersect/compliment the SolidFire patch (
>>> https://reviews.apache.org/r/11479/)?  As I understand it that work is
>>> also involves provisioned IOPS.  I would like to ensure we don't have a
>>> scenario where provisioned IOPS in KVM and SolidFire are unnecessarily
>>> incompatible.
>>> 
>>> Thanks,
>>> -John
>>> 
>>> On Jun 1, 2013, at 6:47 AM, Wei ZHOU <ustcweiz...@gmail.com> wrote:
>>> 
>>> Wido,
>>> 
>>> 
>>> Sure. I will change it next week.
>>> 
>>> 
>>> -Wei
>>> 
>>> 
>>> 
>>> 2013/6/1 Wido den Hollander <w...@widodh.nl>
>>> 
>>> 
>>> Hi Wei,
>>> 
>>> 
>>> 
>>> On 06/01/2013 08:24 AM, Wei ZHOU wrote:
>>> 
>>> 
>>> Wido,
>>> 
>>> 
>>> Exactly. I have pushed the features into master.
>>> 
>>> 
>>> If anyone object thems for technical reason till Monday, I will revert
>>> 
>>> them.
>>> 
>>> 
>>> For the sake of clarity I just want to mention again that we should
>> change
>>> 
>>> the total IOps to R/W IOps asap so that we never release a version with
>>> 
>>> only total IOps.
>>> 
>>> 
>>> You laid the groundwork for the I/O throttling and that's great! We
>> should
>>> 
>>> however prevent that we create legacy from day #1.
>>> 
>>> 
>>> Wido
>>> 
>>> 
>>> -Wei
>>> 
>>> 
>>> 
>>> 2013/5/31 Wido den Hollander <w...@widodh.nl>
>>> 
>>> 
>>> On 05/31/2013 03:59 PM, John Burwell wrote:
>>> 
>>> 
>>> Wido,
>>> 
>>> 
>>> +1 -- this enhancement must to discretely support read and write IOPS.
>>> 
>>> I
>>> 
>>> don't see how it could be fixed later because I don't see how we
>>> 
>>> correctly
>>> 
>>> split total IOPS into read and write.  Therefore, we would be stuck
>>> 
>>> with a
>>> 
>>> total unless/until we decided to break backwards compatibility.
>>> 
>>> 
>>> 
>>> What Wei meant was merging it into master now so that it will go in the
>>> 
>>> 4.2 branch and add Read / Write IOps before the 4.2 release so that 4.2
>>> 
>>> will be released with Read and Write instead of Total IOps.
>>> 
>>> 
>>> This is to make the May 31st feature freeze date. But if the window moves
>>> 
>>> (see other threads) then it won't be necessary to do that.
>>> 
>>> 
>>> Wido
>>> 
>>> 
>>> 
>>> I also completely agree that there is no association between network
>>> 
>>> and
>>> 
>>> 
>>> disk I/O.
>>> 
>>> 
>>> Thanks,
>>> 
>>> -John
>>> 
>>> 
>>> On May 31, 2013, at 9:51 AM, Wido den Hollander <w...@widodh.nl> wrote:
>>> 
>>> 
>>> Hi Wei,
>>> 
>>> 
>>> 
>>> On 05/31/2013 03:13 PM, Wei ZHOU wrote:
>>> 
>>> 
>>> Hi Wido,
>>> 
>>> 
>>> Thanks. Good question.
>>> 
>>> 
>>> I  thought about at the beginning. Finally I decided to ignore the
>>> 
>>> difference of read and write mainly because the network throttling did
>>> 
>>> not
>>> 
>>> care the difference of sent and received bytes as well.
>>> 
>>> That reasoning seems odd. Networking and disk I/O completely different.
>>> 
>>> 
>>> Disk I/O is much more expensive in most situations then network
>>> 
>>> bandwith.
>>> 
>>> 
>>> Implementing it will be some copy-paste work. It could be
>>> 
>>> implemented in
>>> 
>>> 
>>> few days. For the deadline of feature freeze, I will implement it
>>> 
>>> after
>>> 
>>> that , if needed.
>>> 
>>> 
>>> 
>>> It think it's a feature we can't miss. But if it goes into the 4.2
>>> 
>>> window we have to make sure we don't release with only total IOps and
>>> 
>>> fix
>>> 
>>> it in 4.3, that will confuse users.
>>> 
>>> 
>>> Wido
>>> 
>>> 
>>> -Wei
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 2013/5/31 Wido den Hollander <w...@widodh.nl>
>>> 
>>> 
>>> Hi Wei,
>>> 
>>> 
>>> 
>>> 
>>> On 05/30/2013 06:03 PM, Wei ZHOU wrote:
>>> 
>>> 
>>> Hi,
>>> 
>>> 
>>> I would like to merge disk_io_throttling branch into master.
>>> 
>>> If nobody object, I will merge into master in 48 hours.
>>> 
>>> The purpose is :
>>> 
>>> 
>>> Virtual machines are running on the same storage device (local
>>> 
>>> storage or
>>> 
>>> share strage). Because of the rate limitation of device (such as
>>> 
>>> iops), if
>>> 
>>> one VM has large disk operation, it may affect the disk performance
>>> 
>>> of
>>> 
>>> other VMs running on the same storage device.
>>> 
>>> It is neccesary to set the maximum rate and limit the disk I/O of
>>> 
>>> VMs.
>>> 
>>> 
>>> 
>>> Looking at the code I see you make no difference between Read and
>>> 
>>> Write
>>> 
>>> IOps.
>>> 
>>> 
>>> Qemu and libvirt support setting both a different rate for Read and
>>> 
>>> Write
>>> 
>>> IOps which could benefit a lot of users.
>>> 
>>> 
>>> It's also strange, in the polling side you collect both the Read and
>>> 
>>> Write
>>> 
>>> IOps, but on the throttling side you only go for a global value.
>>> 
>>> 
>>> Write IOps are usually much more expensive then Read IOps, so it
>>> 
>>> seems
>>> 
>>> like a valid use-case where that an admin would set a lower value for
>>> 
>>> write
>>> 
>>> IOps vs Read IOps.
>>> 
>>> 
>>> Since this only supports KVM at this point I think it would be of
>>> 
>>> great
>>> 
>>> value to at least have the mechanism in place to support both,
>>> 
>>> implementing
>>> 
>>> this later would be a lot of work.
>>> 
>>> 
>>> If a hypervisor doesn't support setting different values for read and
>>> 
>>> write you can always sum both up and set that as the total limit.
>>> 
>>> 
>>> Can you explain why you implemented it this way?
>>> 
>>> 
>>> Wido
>>> 
>>> 
>>>  The feature includes:
>>> 
>>> 
>>> 
>>> (1) set the maximum rate of VMs (in disk_offering, and global
>>> 
>>> configuration)
>>> 
>>> (2) change the maximum rate of VMs
>>> 
>>> (3) limit the disk rate (total bps and iops)
>>> 
>>> JIRA ticket: https://issues.apache.org/****
>>> 
>>> jira/browse/CLOUDSTACK-1192<ht**tps://issues.apache.org/****
>>> 
>>> jira/browse/CLOUDSTACK-1192<
>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1192>
>>> 
>>> <ht**tps://issues.apache.org/**jira/**browse/CLOUDSTACK-1192<
>>> http://issues.apache.org/jira/**browse/CLOUDSTACK-1192>
>>> 
>>> <**
>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1192<
>> https://issues.apache.org/jira/browse/CLOUDSTACK-1192>
>>> 
>>> 
>>> 
>>> FS (I will update later) :
>>> 
>>> 
>>> https://cwiki.apache.org/******confluence/display/CLOUDSTACK/******<
>> https://cwiki.apache.org/****confluence/display/CLOUDSTACK/****>
>>> 
>>> <
>>> https://cwiki.apache.org/****confluence/display/**CLOUDSTACK/**<
>> https://cwiki.apache.org/**confluence/display/CLOUDSTACK/**>
>>> 
>>> VM+Disk+IO+Throttling<https://****cwiki.apache.org/confluence/****<
>>> http://cwiki.apache.org/confluence/**>
>>> 
>>> display/CLOUDSTACK/VM+Disk+IO+****Throttling<https://cwiki.**
>>> 
>>> apache.org/confluence/display/**CLOUDSTACK/VM+Disk+IO+**Throttling<
>>> 
>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Disk+IO+Throttling
>>>> 
>>> 
>>> 
>>> 
>>> Merge check list :-
>>> 
>>> 
>>> * Did you check the branch's RAT execution success?
>>> 
>>> Yes
>>> 
>>> 
>>> * Are there new dependencies introduced?
>>> 
>>> No
>>> 
>>> 
>>> * What automated testing (unit and integration) is included in the
>>> 
>>> new
>>> 
>>> feature?
>>> 
>>> Unit tests are added.
>>> 
>>> 
>>> * What testing has been done to check for potential regressions?
>>> 
>>> (1) set the bytes rate and IOPS rate on CloudStack UI.
>>> 
>>> (2) VM operations, including
>>> 
>>> deploy, stop, start, reboot, destroy, expunge. migrate, restore
>>> 
>>> (3) Volume operations, including
>>> 
>>> Attach, Detach
>>> 
>>> 
>>> To review the code, you can try
>>> 
>>>  git diff c30057635d04a2396f84c588127d7e******be42e503a7
>>> 
>>> f2e5591b710d04cc86815044f5823e******73a4a58944
>>> 
>>> 
>>> Best regards,
>>> 
>>> Wei
>>> 
>>> 
>>> [1]
>>> 
>>> 
>>> https://cwiki.apache.org/******confluence/display/CLOUDSTACK/******<
>> https://cwiki.apache.org/****confluence/display/CLOUDSTACK/****>
>>> 
>>> <
>>> https://cwiki.apache.org/****confluence/display/**CLOUDSTACK/**<
>> https://cwiki.apache.org/**confluence/display/CLOUDSTACK/**>
>>> 
>>> VM+Disk+IO+Throttling<https://****cwiki.apache.org/confluence/****<
>>> http://cwiki.apache.org/confluence/**>
>>> 
>>> display/CLOUDSTACK/VM+Disk+IO+****Throttling<https://cwiki.**
>>> 
>>> apache.org/confluence/display/**CLOUDSTACK/VM+Disk+IO+**Throttling<
>>> 
>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Disk+IO+Throttling
>>>> 
>>> 
>>> 
>>> 
>>> [2] refs/heads/disk_io_throttling
>>> 
>>> [3]
>>> https://issues.apache.org/******jira/browse/CLOUDSTACK-1301<
>> https://issues.apache.org/****jira/browse/CLOUDSTACK-1301>
>>> 
>>> <ht**tps://issues.apache.org/****jira/browse/CLOUDSTACK-1301<
>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1301>
>>> 
>>> <ht**tps://issues.apache.org/**jira/**browse/CLOUDSTACK-1301<
>>> http://issues.apache.org/jira/**browse/CLOUDSTACK-1301>
>>> 
>>> <**
>>> https://issues.apache.org/**jira/browse/CLOUDSTACK-1301<
>> https://issues.apache.org/jira/browse/CLOUDSTACK-1301>
>>> 
>>> 
>>> 
>>> <ht**tps://issues.apache.org/****jira/**browse/CLOUDSTACK-2071<
>>> http://issues.apache.org/**jira/**browse/CLOUDSTACK-2071>
>>> 
>>> **<
>>> http://issues.apache.org/**jira/**browse/CLOUDSTACK-2071<
>> http://issues.apache.org/jira/**browse/CLOUDSTACK-2071>
>>> 
>>> <**
>>> https://issues.apache.org/****jira/browse/CLOUDSTACK-2071<
>> https://issues.apache.org/**jira/browse/CLOUDSTACK-2071>
>>> 
>>> <h**ttps://issues.apache.org/jira/**browse/CLOUDSTACK-2071<
>>> https://issues.apache.org/jira/browse/CLOUDSTACK-2071>
>>> 
>>> 
>>> 
>>> (**CLOUDSTACK-1301
>>> 
>>> -     VM Disk I/O Throttling)
>>> 
>>> 
>>> 
>> 
>> 
>> --
>> *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