Public bug reported:

Description
===========
In NumaTopologyFilter, we set 'pci_numa_policy=legacy' and 'hw:numa_nodes=1' in 
flavor, it will causes vm build failed when cpu located in numa1 and pci 
located in numa0 in compute node. In pci numa affinity policies, 'required' 
means allocated pci devices must be distributed at same numa node, 'legacy' 
means allocated pci devices should be distributed at same numa nodes if 
available, and 'preferred' is do not provider anything with stricter affinity 
to allocate pci devices. But it dosen't work as definition in practice.
I found a logic error in filter pools for numa cells, 'legacy' will use filter 
pools but dosen't care numa has available pci devices which is same numa with 
cpu.
So I change the condition 'or' to 'and', it has worked as we expected. 


Steps to reproduce
==================
1. Configuration
controller node 
--- nova.conf ---
[filter_scheduler]
enabled_filters=...,NUMATopologyFilter
[pci]
alias = {"name": "QuickAssist","product_id": "10ed","vendor_id": 
"8086","device_type": "type-VF","numa_policy": "legacy"}

compute node 
lspci -vv | grep sriov_nic_bus_info # get the numa cell of sriov nic, suppose 
as numa0
---- nova.conf -----
[DEFAULT]
vpcu_pin_set = 25,26,27,28 # numa1
 
2. create a sriov instance
# create a sriov port
$ neutron port-create --vnic-type direct network_id
# create a flavor like this
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Property                   | Value                                            
                                                                                
                                                           |
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| OS-FLV-DISABLED:disabled   | False                                            
                                                                                
                                                           |
| OS-FLV-EXT-DATA:ephemeral  | 0                                                
                                                                                
                                                           |
| disk                       | 20                                               
                                                                                
                                                           |
| extra_specs                | {"hw:pci_numa_policy": "legacy", 
"hw:vif_multiqueue_enabled": "true", "hw:numa_nodes": "1", "hw:cpu_cores": "4", 
"pci_passthrough:alias": "QuickAssist:1"} |
| id                         | 430e1afd-a72b-41c6-b9b2-ea9b6aa9f037             
                                                                                
                                                           |
| name                       | multiqueue                                       
                                                                                
                                                           |
| os-flavor-access:is_public | True                                             
                                                                                
                                                           |
| ram                        | 2048                                             
                                                                                
                                                           |
| rxtx_factor                | 1.0                                              
                                                                                
                                                           |
| swap                       |                                                  
                                                                                
                                                           |
| vcpus                      | 4                                                
                                                                                
                                                           |
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
# create a sriov instance
$ nova boot sriov_numa_policy_test --image 762c8dbe-8ce7-4311-bb93-1b99c7a49f2a 
--flavor 430e1afd-a72b-41c6-b9b2-ea9b6aa9f037 --nic 
port-id=e74210c9-67be-45cb-9874-587ea19c5317 --availability-zone 
sriov_zone:node1


Expected result
===============
create a instance


Actual result
=============
create failed, nova-scheduler.log:"'NUMATopologyFilter: (start: 1, end: 0)']"

** Affects: nova
     Importance: Undecided
     Assignee: Li Zhouzhou (lizhouzhou)
         Status: New

** Changed in: nova
     Assignee: (unassigned) => Li Zhouzhou (lizhouzhou)

-- 
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/1832452

Title:
  NumaTopolgyFilter dosen't work as we expected when pci_numa_policy set
  as 'legacy'

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========
  In NumaTopologyFilter, we set 'pci_numa_policy=legacy' and 'hw:numa_nodes=1' 
in flavor, it will causes vm build failed when cpu located in numa1 and pci 
located in numa0 in compute node. In pci numa affinity policies, 'required' 
means allocated pci devices must be distributed at same numa node, 'legacy' 
means allocated pci devices should be distributed at same numa nodes if 
available, and 'preferred' is do not provider anything with stricter affinity 
to allocate pci devices. But it dosen't work as definition in practice.
  I found a logic error in filter pools for numa cells, 'legacy' will use 
filter pools but dosen't care numa has available pci devices which is same numa 
with cpu.
  So I change the condition 'or' to 'and', it has worked as we expected. 

  
  Steps to reproduce
  ==================
  1. Configuration
  controller node 
  --- nova.conf ---
  [filter_scheduler]
  enabled_filters=...,NUMATopologyFilter
  [pci]
  alias = {"name": "QuickAssist","product_id": "10ed","vendor_id": 
"8086","device_type": "type-VF","numa_policy": "legacy"}

  compute node 
  lspci -vv | grep sriov_nic_bus_info # get the numa cell of sriov nic, suppose 
as numa0
  ---- nova.conf -----
  [DEFAULT]
  vpcu_pin_set = 25,26,27,28 # numa1
   
  2. create a sriov instance
  # create a sriov port
  $ neutron port-create --vnic-type direct network_id
  # create a flavor like this
  
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | Property                   | Value                                          
                                                                                
                                                             |
  
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | OS-FLV-DISABLED:disabled   | False                                          
                                                                                
                                                             |
  | OS-FLV-EXT-DATA:ephemeral  | 0                                              
                                                                                
                                                             |
  | disk                       | 20                                             
                                                                                
                                                             |
  | extra_specs                | {"hw:pci_numa_policy": "legacy", 
"hw:vif_multiqueue_enabled": "true", "hw:numa_nodes": "1", "hw:cpu_cores": "4", 
"pci_passthrough:alias": "QuickAssist:1"} |
  | id                         | 430e1afd-a72b-41c6-b9b2-ea9b6aa9f037           
                                                                                
                                                             |
  | name                       | multiqueue                                     
                                                                                
                                                             |
  | os-flavor-access:is_public | True                                           
                                                                                
                                                             |
  | ram                        | 2048                                           
                                                                                
                                                             |
  | rxtx_factor                | 1.0                                            
                                                                                
                                                             |
  | swap                       |                                                
                                                                                
                                                             |
  | vcpus                      | 4                                              
                                                                                
                                                             |
  
+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  # create a sriov instance
  $ nova boot sriov_numa_policy_test --image 
762c8dbe-8ce7-4311-bb93-1b99c7a49f2a --flavor 
430e1afd-a72b-41c6-b9b2-ea9b6aa9f037 --nic 
port-id=e74210c9-67be-45cb-9874-587ea19c5317 --availability-zone 
sriov_zone:node1

  
  Expected result
  ===============
  create a instance

  
  Actual result
  =============
  create failed, nova-scheduler.log:"'NUMATopologyFilter: (start: 1, end: 0)']"

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to