[openstack-dev] [nova] PCI handling (including SR-IOV), Traits, Resource Providers and Placement API - how to proceed?

Eric Fried openstack at fried.cc
Mon Jun 26 15:38:03 UTC 2017

Hi Maciej, thanks for bringing this up.

On 06/26/2017 04:59 AM, Maciej Kucia wrote:
> Hi,
> I have recently spent some time digging in Nova PCI devices handling code.
> I would like to propose some improvements:
> https://review.openstack.org/#/c/474218/ (Extended PCI alias)
> https://review.openstack.org/#/q/status:open+project:openstack/nova+topic:PCI 
> but
> There is an ongoing work on Resource Providers, Traits and Placement:
> https://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/resource-providers.html
> https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/resource-provider-traits.html
> https://github.com/openstack/os-traits
> https://docs.openstack.org/developer/nova/placement.html
> I am willing to contribute some work to the PCI handling in Queens. 
> Given the scope of changes a new spec will be needed.
> The current PCI code has some issues that would be nice to fix. Most
> notably:
>  - Broken single responsibility principle 
>    A lot of classes are doing more than the name would suggest
>  - Files and classes naming is not consistent
>  - Mixed SR-IOV and PCI code
>  - PCI Pools provide no real performance advantage and add unnecessary
> complexity

I would like to add for consideration the issue that the current
whitelist/allocaton model doesn't work at all for hypervisors like
HyperV and PowerVM that don't directly own/access the devices as Linux
/dev files; and (at least for PowerVM) where VFs can be created on the
fly.  I'm hoping the placement and resource provider work will result in
a world where a compute node can define different kinds of PCI devices
as resource classes against which resources with specific traits can be
claimed.  And hopefully the whitelist goes away (or I can "opt out" of
it) in the process.

> My questions:
>  - I understand that Nova will remain handling low-level operations
> between OpenStack and hypervisor driver.
>    Is this correct?
>  - Will the `placement service` take the responsibility of managing PCI
> devices?
>  - Shall the SR-IOV handling be done by Nova or `placement service` (in
> such case Nova would manage SR-IOV as a regular PCI)?
>  - Where to store PCI configuration?
>    For example currently nova.conf PCI Whitelist is responsible for some
> SR-IOV configuration.
>    Shall it be stored somewhere alongside `SR-IOV` resource provider?
> Thanks,
> Maciej
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

More information about the OpenStack-dev mailing list