Conversation
Adding a capability in perftest to validate the integrity of the data transferred. For now, this functionality works only for write_bw test scenarios. Currently, the data generated is random. In the following commits data validation is expanded to serial and pattern data types. Activate random data validation scenario by using the following flag: --data_validation random Data validation implementation has a few limitations. The following flags and conditions must be applied when running data validation: post_list (-l) == tx_depth (-t) recv_post_list (--recv_post_list) == rx_depth (-r) --write_with_imm Size enforcement of the QPs is required to overcome some perftest limitations for reusing of data buffers of WQEs. Turning on the immediate flag is also required as the immediate field is used as a hint for the data. Reviewed-by: Firas Jahjah <firasj@amazon.com> Reviewed-by: Daniel Kranzdorf <dkkranzd@amazon.com> Signed-off-by: Nitzan Lavy <nlavy@amazon.com>
Extending write_bw data validation scenario to offer serial data validation. The data buffer of which the packets consists of contains serial data in granularity of DWORD. The user can set the initial value from which the data will increment from by using the flag --data_start_value. By default the data will have a starting value of 0. As an example, if the user used the flag --start_data_value 64, it will result in the following data: 00000040 00000041 00000042 ... Reviewed-by: Firas Jahjah <firasj@amazon.com> Reviewed-by: Daniel Kranzdorf <dkkranzd@amazon.com> Signed-off-by: Nitzan Lavy <nlavy@amazon.com>
Extending write_bw data validation scenario to offer pattern data validation. The data buffer of which the packets consists of contains serial data in granularity of DWORD. The pattern is taken from an input file, using the flag --payload_file_path. The format of the pattern input file is DWORD in hex, followed by a comma. An example: 0xaaaaaaaa,0xbbbbbbbb,... The patterns will be used in cyclic way to fill the whole data buffer. Reviewed-by: Firas Jahjah <firasj@amazon.com> Reviewed-by: Daniel Kranzdorf <dkkranzd@amazon.com> Signed-off-by: Nitzan Lavy <nlavy@amazon.com>
|
Hi @NitzanLavy, thanks for the effort and contribution. |
|
@sshaulnv It's unfortunate that a capability meant to be general was pushed without any community review and in a way that pins its availability only to RC mode and only to devices that support ATOMICs. |
|
@mrgolin The idea behind this approach was to stick to the 'performance-first' goal of perftest. We wanted a data validation that doesnt backpressure the requester, so the benchmark reflects true hardware performance even when validation is toggled on. Since we need both performance and generality, i suggest to support two modes: Asynchronous (Default: Synchronous ( |
This patch series adds data validation capability to perftest for write_bw test scenarios, enabling verification of data integrity during RDMA write operations.
Data validation complements perftest's performance testing by providing functional correctness verification. This is valuable for validating new hardware, drivers, or firmware deployments, debugging intermittent data corruption issues under load, and ensuring RDMA configurations work correctly before production use. The feature is disabled by default and only activated via explicit flags, ensuring no impact on standard performance testing workflows.
Three validation modes are supported:
Usage:
--data_validation <random|serial|pattern>
--data_start_value (for serial mode, default: 0)
--payload_file_path (for pattern mode)
Requirements:
The immediate field is used to pass buffer offset hints for validation. Server-side validation compares expected vs actual data and reports mismatches.
Patches: