12. dpdk-test-compress-perf Tool
The dpdk-test-compress-perf
tool is a Data Plane Development Kit (DPDK) utility that allows measuring performance parameters of PMDs available in the compress tree. User can use multiple cores to run tests on but only one type of compression PMD can be measured during single application execution. The tool reads the data from a file (–input-file), dumps all the file into a buffer and fills out the data of input mbufs, which are passed to compress device with compression operations. Then, the output buffers are fed into the decompression stage, and the resulting data is compared against the original data (verification phase). After that, a number of iterations are performed, compressing first and decompressing later, to check the throughput rate (showing cycles/iteration, cycles/Byte and Gbps, for compression and decompression). Another option: pmd-cyclecount
, gives the user the opportunity to measure the number of cycles per operation for the 3 phases: setup, enqueue_burst and dequeue_burst, for both compression and decompression. An optional delay can be inserted between enqueue and dequeue so no cycles are wasted in retries while waiting for a hardware device to finish. Although artificial, this allows to measure the minimum offload cost which could be achieved in a perfectly tuned system. Comparing the results of the two tests gives information about the trade-off between throughput and cycle-count.
Note
if the max-num-sgl-segs x seg_sz > input size then segments number in the chain will be lower than value passed into max-num-sgl-segs.
12.1. Limitations
- Stateful operation is not supported in this version.
12.2. EAL Options
The following are the EAL command-line options that can be used in conjunction with the dpdk-test-compress-perf
application. See the DPDK Getting Started Guides for more information on these options.
-
-c <COREMASK>
or-l <CORELIST>
Set the hexadecimal bitmask of the cores to run on. The corelist is a list cores to use.
Note
One lcore is needed for process admin, tests are run on all other cores. To run tests on two lcores, three lcores must be passed to the tool.
-
-a <PCI>
Add a PCI device in allow list.
-
--vdev <driver><id>
Add a virtual device.
12.3. Application Options
--ptest [throughput/verify/pmd-cyclecount]
: set test type (default: throughput)
--driver-name NAME
: compress driver to use
--input-file NAME
: file to compress and decompress
--extended-input-sz N
: extend file data up to this size (default: no extension)
--seg-sz N
: size of segment to store the data (default: 2048)
--burst-sz N
: compress operation burst size
--pool-sz N
: mempool size for compress operations/mbufs (default: 8192)
--max-num-sgl-segs N
: maximum number of segments for each mbuf (default: 16)
--num-iter N
: number of times the file will be compressed/decompressed (default: 10000)
--operation [comp/decomp/comp_and_decomp]
: perform test on compression, decompression or both operations
--algo [null/deflate/lzs/lz4]
: perform test on algorithm null (DMA), deflate, lzs or lz4 (default: deflate)
--huffman-enc [fixed/dynamic/default]
: Huffman encoding (default: dynamic)
--lz4-flags N
: flags for LZ4, see LZ4 Frame Descriptor (default: no flags)
--compress-level N
: compression level, which could be a single value, list or range (default: range between 1 and 9)
--window-sz N
: base two log value of compression window size (default: max supported by PMD)
--external-mbufs
: allocate and use memzones as external buffers instead of keeping the data directly in mbuf areas
--cc-delay-us N
: delay between enqueue and dequeue operations in microseconds, valid only for the cyclecount test (default: 500 us)
-h
: prints this help
12.4. Running the Tool
The tool has a number of command line options. Here is the sample command line:
./<build_dir>/app/dpdk-test-compress-perf -l 4 -- --driver-name compress_qat --input-file test.txt --seg-sz 8192
--compress-level 1:1:9 --num-iter 10 --extended-input-sz 1048576 --max-num-sgl-segs 16 --huffman-enc fixed
12.5.Test
测试前环境准备
参考qat-getting-started-guide-with-dpdk-v2.0.md
spdk-23.09/dpdk# dpdk-test-compress-perf -a 76:00.1 -l 0-3 -n 4 -- --driver-name compress_qat --input-file /home/linhx/install-ubuntu.sh --compress-level 1 --num-iter 1 --huffman-enc dynamic
EAL: Detected CPU lcores: 80
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: VFIO support initialized
EAL: Using IOMMU type 1 (Type 1)
EAL: Probe PCI driver: qat (8086:4943) device: 0000:76:00.1 (socket 0)
CRYPTODEV: Creating cryptodev 0000:76:00.1_qat_sym
CRYPTODEV: Initialisation parameters - name: 0000:76:00.1_qat_sym,socket id: 0, max queue pairs: 0
CRYPTODEV: Creating cryptodev 0000:76:00.1_qat_asym
CRYPTODEV: Initialisation parameters - name: 0000:76:00.1_qat_asym,socket id: 0, max queue pairs: 0
TELEMETRY: No legacy callbacks, legacy socket not created
qat_comp_qp_setup(): qp_id 0 invalid for this device
USER1: Failed to setup queue pair 0 on compressdev 0