← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1831758] [NEW] passthrough_whitelist is parsed per compute node per scheduling request even though the whitelist doesn't change between requests

 

Public bug reported:

During each scheduling request we build a HostState object per compute
node that is a candidate for scheduling:

https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/scheduler/host_manager.py#L796

That eventually calls to _update_from_compute_node:

Which creates a fresh PciDeviceStats object:

https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/scheduler/host_manager.py#L227

And that object will parse the [pci]/passthrough_whitelist config every
time it creates the PciDeviceStats object:

https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/pci/stats.py#L66

That config option is not mutable so it's static per scheduling request
on the same host until the nova-scheduler service is restarted.

In a deployment that could return hundreds of allocation candidate
compute nodes (max_placement_results defaults to 1000) we could spend a
measurable amount of time parsing that same config option in aggregate
when the resulting value won't change.

** Affects: nova
     Importance: Low
         Status: Confirmed


** Tags: pci performance scheduler

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

Title:
  passthrough_whitelist is parsed per compute node per scheduling
  request even though the whitelist doesn't change between requests

Status in OpenStack Compute (nova):
  Confirmed

Bug description:
  During each scheduling request we build a HostState object per compute
  node that is a candidate for scheduling:

  https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/scheduler/host_manager.py#L796

  That eventually calls to _update_from_compute_node:

  Which creates a fresh PciDeviceStats object:

  https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/scheduler/host_manager.py#L227

  And that object will parse the [pci]/passthrough_whitelist config
  every time it creates the PciDeviceStats object:

  https://github.com/openstack/nova/blob/9a7eee1592d84c732415da639c85ce4b262eefab/nova/pci/stats.py#L66

  That config option is not mutable so it's static per scheduling
  request on the same host until the nova-scheduler service is
  restarted.

  In a deployment that could return hundreds of allocation candidate
  compute nodes (max_placement_results defaults to 1000) we could spend
  a measurable amount of time parsing that same config option in
  aggregate when the resulting value won't change.

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


Follow ups