Cyborg Inspur NVMe SSD Driver Proposal

This spec proposes to provide the initial design for Cyborg’s Inspur NVMe SSD driver.

Problem description

Inspur NVMe SSD devices provide the ability to accelerate VM IO rate. In the OpenStack ecosystem, we don’t have any tool to manage this kind of accelerators. This spec will add an Inspur NVMe SSD driver in Cyborg to automatically manage Inspur NVMe SSD devices.

The management in the driver scope includes:

Cyborg Inspur NVMe SSD driver can automatically discover the NVMe SSD and report to database by calling cyborg-conductor. Cyborg Inspur NVMe SSD driver needs to do the device binding/unbinding to VM.

Use Cases

  • As an operator, I would like to use Cyborg to manage Inspur NVMe SSD devices.

  • As a developer, I would like to use Cyborg agent to start or to do resource checking periodically, the Cyborg Inspur NVMe SSD driver should provide discover() function to enumerate the list of the Inspur NVMe SSD devices, and report the details of all available NVMe SSD accelerators on the host, such as PID(Product ID), VID(Vendor ID), Device ID.

  • As a user, I would like to boot up a VM with Inspur NVMe SSD card attached in order to accelerate IO rate. Cyborg should be able to manage this kind of acceleration resources and assign it to the VM(binding).

Proposed changes

1. Collect raw info of Inspur NVMe SSD devices from compute node by “lspci” command and grep Non-Volatile memory controller related keyword and then grep Inspur vendor ID.

2. Parsing details from each record including vendor_id, product_id and pci_address.

3. Generate Cyborg specific driver objects and resource provider modeling for the Inspur NVMe SSD devices. Below is the objects to describe a Inspur NVMe SSD device which complies with the Cyborg database mode and Placement data model.

Hardware     Driver objects       Placement data model
   |               |                      |
1 SSD         1 device                    |
   |               |                      |
   |         1 deployable       ---> resource_provider
   |               |            ---> parent resource_provider: compute node
   |               |                      |
1 SSD        1 attach_handle    ---> inventories(total:1)

4. We report CUSTOM_SSD as resource_class, CUSTOM_SSD_INSPUR and CUSTOM_SSD_PRODUCT_ID_1003 as traits to Placement.

Alternatives

None

Data model impact

Add SSD type to the column device_type in table devices.

REST API impact

None.

Security impact

None

Notifications impact

None

Other end user impact

User can manage Inspur NVMe SSD cards by Cyborg Inspur NVMe SSD driver. Such as list the Inspur NVMe SSD devices, report the details of all available Inspur NVMe SSD accelerators on the host, binding an Inspur NVMe SSD to VM.

Performance Impact

None

Other deployer impact

None.

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

Wenping Song

Work Items

  • Implement Inspur NVMe SSD driver in Cyborg

  • Add related test cases.

  • Add test report to wiki page.

  • Update doc page and release note.

Dependencies

None

Testing

  • Unit tests will be added to test this driver.

  • Add test result in Cyborg Wiki which is required by the Cyborg community.

Documentation Impact

Document Inspur NVMe SSD driver in Cyborg project.

References

None

History

Revisions

Release

Description

Wallaby

Introduced