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.
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<https://issues.apache.org/jira/browse/CLOUDSTACK-1192> >>>> FS (I will update later) : >>>> 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/** >>>> 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-2071<https://issues.apache.org/jira/browse/CLOUDSTACK-2071> >>>>> (**CLOUDSTACK-1301 >>>> >>>> - VM Disk I/O Throttling) >>>> >>>> >>> >> >