Bug 1179591
| Summary: | Calculation of cpu QoS limitation not correct | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Virtualization Manager | Reporter: | Artyom <alukiano> | 
| Component: | mom | Assignee: | Doron Fediuck <dfediuck> | 
| Status: | CLOSED DUPLICATE | QA Contact: | |
| Severity: | high | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 3.5.0 | CC: | dfediuck, ecohen, gklein, iheim, lsurette, michal.skrivanek, yeylon | 
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | sla | ||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-01-12 08:29:43 UTC | Type: | Bug | 
| Regression: | --- | Mount Type: | --- | 
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | SLA | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
*** This bug has been marked as a duplicate of bug 1179592 ***  | 
Description of problem: I created two cpu profiles, one with QoS that have limitation value 50 and second that have limitation value 25, and I attach this profiles to vm one by one, but I see that values for quota and period under dumpxml stay the same. I set bug under mom, because I know that we use mom policy to apply quota and period for vm. Version-Release number of selected component (if applicable): rhevm-3.5.0-0.27.el6ev.noarch vdsm-4.16.8.1-4.el7ev.x86_64 mom-0.4.1-4.el7ev.noarch How reproducible: Always Steps to Reproduce: 1. Create two Cpu QoS under the same datacenter one with limitation value 25 and second with 50 <qoss> <qos type="cpu" href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916/qoss/2571eeea-25a7-4b09-9c37-d82591733f26" id="2571eeea-25a7-4b09-9c37-d82591733f26"> <name>test_1</name> <data_center href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916" id="f8f5eaee-8fd0-4b45-87db-62d61b03a916"/> <cpu_limit>50</cpu_limit> </qos> <qos type="cpu" href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916/qoss/883d876e-2038-4cd4-8c35-e9b52f2f4380" id="883d876e-2038-4cd4-8c35-e9b52f2f4380"> <name>test_2</name> <data_center href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916" id="f8f5eaee-8fd0-4b45-87db-62d61b03a916"/> <cpu_limit>25</cpu_limit> </qos> </qoss> 2. Create two cpu profile with different QoS in the same cluster <cpu_profiles> <cpu_profile href= "/ovirt-engine/api/cpuprofiles/5be5c0b7-5b91-4ac4-9d53-ef6f987bff05" id="5be5c0b7-5b91-4ac4-9d53-ef6f987bff05"> <name>test_1</name> <qos href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916/qoss/2571eeea-25a7-4b09-9c37-d82591733f26" id="2571eeea-25a7-4b09-9c37-d82591733f26"/> <cluster href= "/ovirt-engine/api/clusters/67866b36-fd68-4106-8758-34cf31b0c3d4" id="67866b36-fd68-4106-8758-34cf31b0c3d4"/> </cpu_profile> <cpu_profile href= "/ovirt-engine/api/cpuprofiles/b015da68-b7a5-4a4b-8389-5cbc8ce58f73" id="b015da68-b7a5-4a4b-8389-5cbc8ce58f73"> <name>test_2</name> <qos href= "/ovirt-engine/api/datacenters/f8f5eaee-8fd0-4b45-87db-62d61b03a916/qoss/883d876e-2038-4cd4-8c35-e9b52f2f4380" id="883d876e-2038-4cd4-8c35-e9b52f2f4380"/> <cluster href= "/ovirt-engine/api/clusters/67866b36-fd68-4106-8758-34cf31b0c3d4" id="67866b36-fd68-4106-8758-34cf31b0c3d4"/> </cpu_profile> </cpu_profiles> 3. Create some vm, and run it first with first QoS and after with second. First run: <cpu_profile href= "/ovirt-engine/api/cpuprofiles/5be5c0b7-5b91-4ac4-9d53-ef6f987bff05" id="5be5c0b7-5b91-4ac4-9d53-ef6f987bff05"/> dumpxml <vcpu placement='static' current='4'>32</vcpu> <cputune> <shares>1020</shares> <period>12500</period> <quota>25000</quota> </cputune> Second run: <cpu_profile href= "/ovirt-engine/api/cpuprofiles/b015da68-b7a5-4a4b-8389-5cbc8ce58f73" id="b015da68-b7a5-4a4b-8389-5cbc8ce58f73"/> dumpxml <vcpu placement='static' current='4'>32</vcpu> <cputune> <shares>1020</shares> <period>12500</period> <quota>25000</quota> </cputune> Actual results: <quota> and <period> under cpu_tunning have the same values under dumpxml, for different limitation value Expected results: <quota> and <period> have different values under different limitations Additional info: ok, I will start with this that not really understand why we use this kind of formula: period = anchor / #NumOfCpuInHost quota = (anchor*(#userSelection/100)) / #numOfVcpusInVm why we need this anchor, and why we change period time(default 1000000) I played a little with values of period and quota and virsh create, and limitation work pretty well for formula: period = default_value quota = period * (pcpu/vcpu) * (limitation/100) I check it on vm with 4 cpu's and on host with 8 cpu's with limitation 10, 25 and 50 From some reason the same proportion, but with small period work not precious or not work at all(seems to me like bug in cgroups)