<div dir="ltr"><div>Hi,</div><div><br></div><div>I have recently spent some time digging in Nova PCI devices handling code.</div><div>I would like to propose some improvements:</div><div><a href="https://review.openstack.org/#/c/474218/">https://review.openstack.org/#/c/474218/</a> (Extended PCI alias)</div><div><a href="https://review.openstack.org/#/q/status:open+project:openstack/nova+topic:PCI">https://review.openstack.org/#/q/status:open+project:openstack/nova+topic:PCI</a> </div><div><br></div><div>but</div><div><br></div><div>There is an ongoing work on Resource Providers, Traits and Placement:</div><div><a href="https://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/resource-providers.html">https://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/resource-providers.html</a></div><div><a href="https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/resource-provider-traits.html">https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/resource-provider-traits.html</a></div><div><a href="https://github.com/openstack/os-traits">https://github.com/openstack/os-traits</a></div><div><a href="https://docs.openstack.org/developer/nova/placement.html">https://docs.openstack.org/developer/nova/placement.html</a></div><div><br></div><div>I am willing to contribute some work to the PCI handling in Queens. </div><div>Given the scope of changes a new spec will be needed.</div><div><br></div><div>The current PCI code has some issues that would be nice to fix. Most notably:</div><div> - Broken single responsibility principle </div><div>   A lot of classes are doing more than the name would suggest</div><div> - Files and classes naming is not consistent</div><div> - Mixed SR-IOV and PCI code</div><div> - PCI Pools provide no real performance advantage and add unnecessary complexity</div><div><br></div><div>My questions:</div><div> - I understand that Nova will remain handling low-level operations between OpenStack and hypervisor driver.</div><div>   Is this correct?</div><div> - Will the `placement service` take the responsibility of managing PCI devices?</div><div> - Shall the SR-IOV handling be done by Nova or `placement service` (in such case Nova would manage SR-IOV as a regular PCI)?</div><div> - Where to store PCI configuration?</div><div>   For example currently nova.conf PCI Whitelist is responsible for some SR-IOV configuration.</div><div>   Shall it be stored somewhere alongside `SR-IOV` resource provider?</div><div><br></div><div>Thanks,</div><div>Maciej</div><div><br></div></div>