[v2,1/7] app/flow-perf: start using more generic wrapper for cycles
Checks
Commit Message
rdtsc() is x86 related, while this might fail for other archs,
so it's better to use more generic API for cycles measurement.
Signed-off-by: Wisam Jaddo <wisamm@nvidia.com>
---
app/test-flow-perf/main.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
Comments
------
v2:
* Add first insertion flow latency calculation.
* Fix for decap data set.
v3:
* Fixes in commit message.
* Fixes the cover page.
Wisam Jaddo (7):
app/flow-perf: start using more generic wrapper for cycles
app/flow-perf: add new option to use unique data on the fly
app/flow-perf: fix naming of CPU used structured data
app/flow-perf: fix report total stats for masked ports
app/flow-perf: fix the incremental IPv6 src set
app/flow-perf: add first flow latency support
app/flow-perf: fix setting decap data for decap actions
app/test-flow-perf/actions_gen.c | 77 +++++++++++++++++---------------
app/test-flow-perf/actions_gen.h | 3 +-
app/test-flow-perf/config.h | 8 +---
app/test-flow-perf/flow_gen.c | 4 +-
app/test-flow-perf/flow_gen.h | 1 +
app/test-flow-perf/items_gen.c | 13 +++---
app/test-flow-perf/main.c | 67 +++++++++++++++++----------
doc/guides/tools/flow-perf.rst | 5 +++
8 files changed, 102 insertions(+), 76 deletions(-)
> -----Original Message-----
> From: Wisam Monther <wisamm@nvidia.com>
> Sent: Wednesday, March 10, 2021 8:56
> To: arybchenko@solarflare.com; NBU-Contact-Thomas Monjalon
> <thomas@monjalon.net>; Alexander Kozyrev <akozyrev@nvidia.com>;
> Raslan Darawsheh <rasland@nvidia.com>; dev@dpdk.org
> Subject: [PATCH v3 0/7] Enhancements and fixes for flow-perf
>
> ------
> v2:
> * Add first insertion flow latency calculation.
> * Fix for decap data set.
>
> v3:
> * Fixes in commit message.
> * Fixes the cover page.
>
> Wisam Jaddo (7):
> app/flow-perf: start using more generic wrapper for cycles
> app/flow-perf: add new option to use unique data on the fly
> app/flow-perf: fix naming of CPU used structured data
> app/flow-perf: fix report total stats for masked ports
> app/flow-perf: fix the incremental IPv6 src set
> app/flow-perf: add first flow latency support
> app/flow-perf: fix setting decap data for decap actions
>
> app/test-flow-perf/actions_gen.c | 77 +++++++++++++++++---------------
> app/test-flow-perf/actions_gen.h | 3 +-
> app/test-flow-perf/config.h | 8 +---
> app/test-flow-perf/flow_gen.c | 4 +-
> app/test-flow-perf/flow_gen.h | 1 +
> app/test-flow-perf/items_gen.c | 13 +++---
> app/test-flow-perf/main.c | 67 +++++++++++++++++----------
> doc/guides/tools/flow-perf.rst | 5 +++
> 8 files changed, 102 insertions(+), 76 deletions(-)
>
> --
> 2.17.1
Please add some summary to the cover letter and
fix the warning in patch 6/7. Other than that:
Acked-by: Alexander Kozyrev <akozyrev@nvidia.com>
@@ -969,7 +969,7 @@ meters_handler(int port_id, uint8_t core_id, uint8_t ops)
end_counter = (core_id + 1) * rules_count_per_core;
cpu_time_used = 0;
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
for (counter = start_counter; counter < end_counter; counter++) {
if (ops == METER_CREATE)
create_meter_rule(port_id, counter);
@@ -984,10 +984,10 @@ meters_handler(int port_id, uint8_t core_id, uint8_t ops)
if (!((counter + 1) % rules_batch)) {
rules_batch_idx = ((counter + 1) / rules_batch) - 1;
cpu_time_per_batch[rules_batch_idx] =
- ((double)(rte_rdtsc() - start_batch))
- / rte_get_tsc_hz();
+ ((double)(rte_get_timer_cycles() - start_batch))
+ / rte_get_timer_hz();
cpu_time_used += cpu_time_per_batch[rules_batch_idx];
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
}
}
@@ -1089,7 +1089,7 @@ destroy_flows(int port_id, uint8_t core_id, struct rte_flow **flows_list)
if (flow_group > 0 && core_id == 0)
rules_count_per_core++;
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
for (i = 0; i < (uint32_t) rules_count_per_core; i++) {
if (flows_list[i] == 0)
break;
@@ -1107,12 +1107,12 @@ destroy_flows(int port_id, uint8_t core_id, struct rte_flow **flows_list)
* for this batch.
*/
if (!((i + 1) % rules_batch)) {
- end_batch = rte_rdtsc();
+ end_batch = rte_get_timer_cycles();
delta = (double) (end_batch - start_batch);
rules_batch_idx = ((i + 1) / rules_batch) - 1;
- cpu_time_per_batch[rules_batch_idx] = delta / rte_get_tsc_hz();
+ cpu_time_per_batch[rules_batch_idx] = delta / rte_get_timer_hz();
cpu_time_used += cpu_time_per_batch[rules_batch_idx];
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
}
}
@@ -1185,7 +1185,7 @@ insert_flows(int port_id, uint8_t core_id)
flows_list[flow_index++] = flow;
}
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
for (counter = start_counter; counter < end_counter; counter++) {
flow = generate_flow(port_id, flow_group,
flow_attrs, flow_items, flow_actions,
@@ -1211,12 +1211,12 @@ insert_flows(int port_id, uint8_t core_id)
* for this batch.
*/
if (!((counter + 1) % rules_batch)) {
- end_batch = rte_rdtsc();
+ end_batch = rte_get_timer_cycles();
delta = (double) (end_batch - start_batch);
rules_batch_idx = ((counter + 1) / rules_batch) - 1;
- cpu_time_per_batch[rules_batch_idx] = delta / rte_get_tsc_hz();
+ cpu_time_per_batch[rules_batch_idx] = delta / rte_get_timer_hz();
cpu_time_used += cpu_time_per_batch[rules_batch_idx];
- start_batch = rte_rdtsc();
+ start_batch = rte_get_timer_cycles();
}
}