[nova] Do we need to copy pci_devices to target cell DB during cross-cell resize?

Matt Riedemann mriedemos at gmail.com
Tue Jan 22 15:20:45 UTC 2019


While working on the code to create instance-related data in the target 
cell database during a cross-cell resize I noticed I wasn't copying over 
pci_devices [1] but when looking at the PciDevice object create/save 
methods, those aren't really what I'm looking for here. And looking at 
the data model, there is a compute_node_id field which is the 
compute_nodes.id primary key which won't match the target cell DB.

I am not very familiar with the PCI device manager code and data model 
(it's my weakest area in nova lo these many years) but looking closer at 
this, am I correct in understanding that the PciDevice object and data 
model is really more about the actual inventory and allocations of PCI 
devices on a given compute node and therefore it doesn't really make 
sense to need to copy that data over to the target cell database.

During a cross-cell resize, the scheduler is going to pick a target host 
in another cell and claim standard resources (VCPU, MEMORY_MB and 
DISK_GB) in placement, but things like NUMA/PCI claims won't happen 
until we do a ResourceTracker.resize_claim on the target host in the 
target cell. In that case, it seems the things I only need to care about 
mirroring is instance.pci_requests and instance.numa_topology, correct? 
Since those are the user-requested (via flavor/image/port) resources 
which will then result in PciDevice and NUMA allocations on the target host.

I'm just looking for confirmation from others that better understand the 
data model in this area.

[1] 
https://review.openstack.org/#/c/627892/5/nova/conductor/tasks/cross_cell_migrate.py@115

-- 

Thanks,

Matt



More information about the openstack-discuss mailing list