PyNVMe3 Features
Last Modified: August 25, 2023
Copyright © 2021-2023 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