← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1766208] [NEW] Lift the restriction on choices for `cpu_model_extra_flags` config attribute

 

Public bug reported:

In the patch[*] that introduced the Nova configuration attribute
`[libvirt]/cpu_model_extra_flags`, we have restricted the choices to be
only 'PCID' -- to alleviate the immediate guest performance degradation
as a result of applying the "Meltdown" CVE fixes.

Now remove that restriction to allow adding and removing multiple CPU
flags, making way for other use cases.

Use cases:

  - Ability to use 1GB huge pages with Haswell model as one use case for
    extra flags:

        cpu_model=Haswell-noTSX-IBRS
        cpu_model_extra_flags="pdpe1gb"

  - Nested Virtualization -- an operator can specify the Intel 'vmx' or
    AMD 'svm' flags in the level-1 Nova guest.

[*] http://git.openstack.org/cgit/openstack/nova/commit/?h=master&;
    id=6b601b7 -- libvirt: Allow to specify granular CPU feature flags


A potential example of specifying multiple CPU feature flags
------------------------------------------------------------

If you specify:

    [libvirt]
    cpu_mode=custom
    cpu_model=IvyBridge
    cpu_model_extra_flags="+pcid,-mtrr,pdpe1gb"

Then, Nova should generate the below XML:

    <cpu match='exact'>
      <model fallback='forbid'>IvyBridge</model>
      <vendor>Intel</vendor>
      <feature policy='require' name='pcid'/>
      <feature policy='require' name='pdpe1gb'/>
    </cpu>

The +/- for individual flags in nova.conf will be optional.  If nothing
is specified, assume '+'.

You might ask: "Why would you want to remove a CPU flag though?"  One
scenario for that is: An Operator wants to generate a baseline CPU
config.  And a certain CPU flag is causing performance issue or other
nuisance, and if the Operator isolated the problem to _that_ specific
CPU flag, then she may want to remove the flag.

** Affects: nova
     Importance: Undecided
     Assignee: Kashyap Chamarthy (kashyapc)
         Status: New


** Tags: libvirt

** Changed in: nova
     Assignee: (unassigned) => Kashyap Chamarthy (kashyapc)

** Tags added: libvirt

** Description changed:

  In the patch[*] that introduced the Nova configuration attribute
  `[libvirt]/cpu_model_extra_flags`, we have restricted the choices to be
  only 'PCID' -- to alleviate the immediate guest performance degradation
  as a result of applying the "Meltdown" CVE fixes.
  
  Now remove that restriction to allow adding and removing multiple CPU
  flags, making way for other use cases.
  
  Use cases:
  
-   - Ability to use 1GB huge pages with Haswell model as one use case for
-     extra flags:
+   - Ability to use 1GB huge pages with Haswell model as one use case for
+     extra flags:
  
-         cpu_model=Haswell-noTSX-IBRS 
-         cpu_model_extra_flags="pdpe1gb"
+         cpu_model=Haswell-noTSX-IBRS
+         cpu_model_extra_flags="pdpe1gb"
  
-   - Nested Virtualization -- an operator can specify the Intel 'vmx' or
-     AMD 'svm' flags in the level-1 Nova guest.
+   - Nested Virtualization -- an operator can specify the Intel 'vmx' or
+     AMD 'svm' flags in the level-1 Nova guest.
  
- [*] http://git.openstack.org/cgit/openstack/nova/commit/?h=master&id=6b601b7
-     -- libvirt: Allow to specify granular CPU feature flags
- 
+ [*]
+ http://git.openstack.org/cgit/openstack/nova/commit/?h=master&id=6b601b7
+ -- libvirt: Allow to specify granular CPU feature flags
  
  A potential example of specifying multiple CPU feature flags
  ------------------------------------------------------------
  
  If you specify:
  
-     [libvirt]
-     cpu_mode=custom
-     cpu_model=IvyBridge
-     cpu_model_extra_flags="+pcid,-mtrr,pdpe1gb"
+     [libvirt]
+     cpu_mode=custom
+     cpu_model=IvyBridge
+     cpu_model_extra_flags="+pcid,-mtrr,pdpe1gb"
  
  Then, Nova should generate the below XML:
  
-     <cpu match='exact'> 
-       <model fallback='forbid'>IvyBridge</model>
-       <vendor>Intel</vendor>
-       <feature policy='require' name='pcid'/>
-       <feature policy='require' name='pdpe1gb'/>
-     </cpu>
+     <cpu match='exact'>
+       <model fallback='forbid'>IvyBridge</model>
+       <vendor>Intel</vendor>
+       <feature policy='require' name='pcid'/>
+       <feature policy='require' name='pdpe1gb'/>
+     </cpu>
  
  The +/- for individual flags in nova.conf will be optional.  If nothing
  is specified, assume '+'.
  
  You might ask: "Why would you want to remove a CPU flag though?"  One
  scenario for that is: An Operator wants to generate a baseline CPU
  config.  And a certain CPU flag is causing performance issue or other
  nuisance, and if the Operator isolated the problem to _that_ specific
  CPU flag, then she may want to remove the flag.

** Description changed:

  In the patch[*] that introduced the Nova configuration attribute
  `[libvirt]/cpu_model_extra_flags`, we have restricted the choices to be
  only 'PCID' -- to alleviate the immediate guest performance degradation
  as a result of applying the "Meltdown" CVE fixes.
  
  Now remove that restriction to allow adding and removing multiple CPU
  flags, making way for other use cases.
  
  Use cases:
  
    - Ability to use 1GB huge pages with Haswell model as one use case for
      extra flags:
  
          cpu_model=Haswell-noTSX-IBRS
          cpu_model_extra_flags="pdpe1gb"
  
    - Nested Virtualization -- an operator can specify the Intel 'vmx' or
      AMD 'svm' flags in the level-1 Nova guest.
  
- [*]
- http://git.openstack.org/cgit/openstack/nova/commit/?h=master&id=6b601b7
- -- libvirt: Allow to specify granular CPU feature flags
+ [*] http://git.openstack.org/cgit/openstack/nova/commit/?h=master&;
+     id=6b601b7 -- libvirt: Allow to specify granular CPU feature flags
+ 
  
  A potential example of specifying multiple CPU feature flags
  ------------------------------------------------------------
  
  If you specify:
  
      [libvirt]
      cpu_mode=custom
      cpu_model=IvyBridge
      cpu_model_extra_flags="+pcid,-mtrr,pdpe1gb"
  
  Then, Nova should generate the below XML:
  
      <cpu match='exact'>
        <model fallback='forbid'>IvyBridge</model>
        <vendor>Intel</vendor>
        <feature policy='require' name='pcid'/>
        <feature policy='require' name='pdpe1gb'/>
      </cpu>
  
  The +/- for individual flags in nova.conf will be optional.  If nothing
  is specified, assume '+'.
  
  You might ask: "Why would you want to remove a CPU flag though?"  One
  scenario for that is: An Operator wants to generate a baseline CPU
  config.  And a certain CPU flag is causing performance issue or other
  nuisance, and if the Operator isolated the problem to _that_ specific
  CPU flag, then she may want to remove the flag.

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1766208

Title:
  Lift the restriction on choices for `cpu_model_extra_flags` config
  attribute

Status in OpenStack Compute (nova):
  New

Bug description:
  In the patch[*] that introduced the Nova configuration attribute
  `[libvirt]/cpu_model_extra_flags`, we have restricted the choices to be
  only 'PCID' -- to alleviate the immediate guest performance degradation
  as a result of applying the "Meltdown" CVE fixes.

  Now remove that restriction to allow adding and removing multiple CPU
  flags, making way for other use cases.

  Use cases:

    - Ability to use 1GB huge pages with Haswell model as one use case for
      extra flags:

          cpu_model=Haswell-noTSX-IBRS
          cpu_model_extra_flags="pdpe1gb"

    - Nested Virtualization -- an operator can specify the Intel 'vmx' or
      AMD 'svm' flags in the level-1 Nova guest.

  [*] http://git.openstack.org/cgit/openstack/nova/commit/?h=master&;
      id=6b601b7 -- libvirt: Allow to specify granular CPU feature flags

  
  A potential example of specifying multiple CPU feature flags
  ------------------------------------------------------------

  If you specify:

      [libvirt]
      cpu_mode=custom
      cpu_model=IvyBridge
      cpu_model_extra_flags="+pcid,-mtrr,pdpe1gb"

  Then, Nova should generate the below XML:

      <cpu match='exact'>
        <model fallback='forbid'>IvyBridge</model>
        <vendor>Intel</vendor>
        <feature policy='require' name='pcid'/>
        <feature policy='require' name='pdpe1gb'/>
      </cpu>

  The +/- for individual flags in nova.conf will be optional.  If nothing
  is specified, assume '+'.

  You might ask: "Why would you want to remove a CPU flag though?"  One
  scenario for that is: An Operator wants to generate a baseline CPU
  config.  And a certain CPU flag is causing performance issue or other
  nuisance, and if the Operator isolated the problem to _that_ specific
  CPU flag, then she may want to remove the flag.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1766208/+subscriptions


Follow ups