aboutsummaryrefslogtreecommitdiffstats
path: root/docs/content/methodology/overview/per_thread_resources.md
blob: c23efb50bdce14259906d129ee226e8557cc9c62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
---
title: "Per Thread Resources"
weight: 2
---

# Per Thread Resources

CSIT test framework is managing mapping of the following resources per thread:

1. Cores, physical cores (pcores) allocated as pairs of sibling logical cores
   (lcores) if server in HyperThreading/SMT mode, or as single lcores
   if server not in HyperThreading/SMT mode. Note that if server's
   processors are running in HyperThreading/SMT mode sibling lcores are
   always used.
2. Receive Queues (RxQ), packet receive queues allocated on each
   physical and logical interface tested.
3. Transmit Queues(TxQ), packet transmit queues allocated on each
   physical and logical interface tested.

Approach to mapping per thread resources depends on the application/DUT
tested (VPP or DPDK apps) and associated thread types, as follows:

1. Data-plane workers, used for data-plane packet processing, when no
   feature workers present.

   - Cores: data-plane workers are typically tested in 1, 2 and 4 pcore
     configurations, running on single lcore per pcore or on sibling
     lcores per pcore. Result is a set of {T}t{C}c thread-core
     configurations, where{T} stands for a total number of threads
     (lcores), and {C} for a total number of pcores. Tested
     configurations are encoded in CSIT test case names,
     e.g. "1c", "2c", "4c", and test tags "2T1C" (or "1T1C"), "4T2C"
     (or "2T2C"), "8T4C" (or "4T4C").
   - Interface Receive Queues (RxQ): as of CSIT-2106 release, number of
     RxQs used on each physical or virtual interface is equal to the
     number of data-plane workers. In other words each worker has a
     dedicated RxQ on each interface tested. This ensures packet
     processing load to be equal for each worker, subject to RSS flow
     load balancing efficacy. Note: Before CSIT-2106 total number of
     RxQs across all interfaces of specific type was equal to the
     number of data-plane workers.
   - Interface Transmit Queues (TxQ): number of TxQs used on each
     physical or virtual interface is equal to the number of data-plane
     workers. In other words each worker has a dedicated TxQ on each
     interface tested.
   - Applies to VPP and DPDK Testpmd and L3Fwd.

2. Data-plane and feature workers (e.g. IPsec async crypto workers), the
   latter dedicated to specific feature processing.

   - Cores: data-plane and feature workers are tested in 2, 3 and 4
     pcore configurations, running on single lcore per pcore or on
     sibling lcores per pcore. This results in a two sets of
     thread-core combinations separated by "-", {T}t{C}c-{T}t{C}c, with
     the leading set denoting total number of threads (lcores) and
     pcores used for data-plane workers, and the trailing set denoting
     total number of lcores and pcores used for feature workers.
     Accordingly, tested configurations are encoded in CSIT test case
     names, e.g. "1c-1c", "1c-2c", "1c-3c", and test tags "2T1C_2T1C"
     (or "1T1C_1T1C"), "2T1C_4T2C" (or "1T1C_2T2C"), "2T1C_6T3C"
     (or "1T1C_3T3C").
   - RxQ and TxQ: no RxQs and no TxQs are used by feature workers.
   - Applies to VPP only.

3. Management/main worker, control plane and management.

   - Cores: single lcore.
   - RxQ: not used (VPP default behaviour).
   - TxQ: single TxQ per interface, allocated but not used (VPP default
     behaviour).
   - Applies to VPP only.

## VPP Thread Configuration

Mapping of cores and RxQs to VPP data-plane worker threads is done in
the VPP startup.conf during test suite setup:

1. `corelist-workers <list_of_cores>`: List of logical cores to run VPP
   data-plane workers and feature workers. The actual lcores'
   allocations depends on HyperThreading/SMT server configuration and
   per test core configuration.

   - For tests without feature workers, by default, all CPU cores
     configured in startup.conf are used for data-plane workers.
   - For tests with feature workers, CSIT code distributes lcores across
     data-plane and feature workers.

2. `num-rx-queues <value>`: Number of Rx queues used per interface.

Mapping of TxQs to VPP data-plane worker threads uses the default VPP
setting of one TxQ per interface per data-plane worker.

## DPDK Thread Configuration

Mapping of cores and RxQs to DPDK Testpmd/L3Fwd data-plane worker
threads is done in the startup CLI:

1. `-l <list_of_cores>` - List of logical cores to run DPDK
   application.
2. `nb-cores=<N>` - Number of forwarding cores.
3. `rxq=<N>` - Number of Rx queues used per interface.