PyNVMe3 Features

PyNVMe3 Features

Last Modified: January 7, 2024

Copyright © 2020-2024 GENG YUN Technology Pte. Ltd.
All Rights Reserved.

PyNVMe3 offers a robust set of features on PCIe, Controller, Namespace, Qpair, Buffer, and more. Test developers can utilize these functionalities to craft test cases for various applications such as Client, Data Center, Enterprise, Industrial, and Automotive.

Platform

  • Native Python API
  • Compatible with multiple versions of Ubuntu LTS
  • Designed for x86-64 hardware
  • Support ARM platforms (optional)
  • Integration with VSCode
  • VSCode extension for enhanced script debugging
  • CI integration streamlining test automation

Buffer

  • DMA memory buffer allocation
  • Host memory buffer (HMB) allocation
  • Buffer allocation within Controller Memory Buffer (CMB)
  • Diverse data pattern support
  • Rapid data comparison
  • Individual byte access

PCIe

  • Access to PCIe configuration space
  • Access to PCIe memory space (BAR)
  • Interrupt configuration and verification (MSIx)
  • Advanced PCIe power management capabilities (L1.2, ASPM, D3hot)

Qpair

  • Creation and deletion of IO CQ/SQ
  • CQ/SQ placement in CMB
  • Queue priority functionality
  • Interrupt enabling/disabling
  • Defining interrupt vectors for queues
  • No limit on Queue depth or number

NVMe Commands

  • Transmission and reaping of any NVMe commands
  • AER, Vendor Unique, and Security command support
  • Callback function availability for NVMe commands
  • User-defined timeout values for commands
  • Logging for admin and IO queues

NVMe Controller

  • Customizable NVMe initialization
  • Weighted Round Robin command arbitration
  • Power management via NVMe (APST)
  • HMB support

Data Flow

  • Transparent data verification via CRC
  • High-performance IO generator with ~1.5M IOPS/core and minimal latency
  • Comprehensive latency histogram statistics
  • Parallel processing capabilities
  • Metamode offers no MDTS or MPS limits

Fault Injection

  • Manipulation capabilities for SQE, PRP, SGL, CID
  • Manual Doorbell control
  • HMB bit-flipping

Event Injection

  • Power cycle capabilities (off/on)
  • PERST# support
  • Third-party equipment integration for power event injections
  • Resets: PCIe FLR, PCIe hot, NVMe controller, NVMe subsystem

Enterprise

  • Multiple controller support
  • Multiple namespace support
  • Reservation support
  • Dual-port SSD compatibility
  • Directive and Stream
  • Flexible Data Placement (FDP)
  • Zoned Namespace (ZNS)
  • Scatter Gather List (SGL)
  • Various LBA formats: 512, 4KB, etc
  • Diverse metadata configurations
  • End-to-end data protection and verification

Automotive

  • SR-IOV support
  • Parallel test sessions for different DUTs/VFs
  • Endurance Group functionality
  • Weighted Round Robin Arbitration

Test Suites

  • NVMe conformity testing
  • TCG tests: OPAL, Pyrite
  • HMB, Power State, Performance, and generic stress tests