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 -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

