[dpdk-dev] [PATCH 7/8] app/eventdev: add service core configuration
Pavan Nikhilesh
pbhagavatula at caviumnetworks.com
Wed Oct 18 14:39:07 CEST 2017
Add service core configuration for Rx adapter. The configuration picks
the least used service core to run the service on.
Signed-off-by: Pavan Nikhilesh <pbhagavatula at caviumnetworks.com>
---
app/test-eventdev/evt_common.h | 41 ++++++++++++++++--------------------
app/test-eventdev/test_perf_atq.c | 12 +++++++----
app/test-eventdev/test_perf_common.c | 13 ++++++++++++
app/test-eventdev/test_perf_queue.c | 12 +++++++----
4 files changed, 47 insertions(+), 31 deletions(-)
diff --git a/app/test-eventdev/evt_common.h b/app/test-eventdev/evt_common.h
index 0fadab4..042823a 100644
--- a/app/test-eventdev/evt_common.h
+++ b/app/test-eventdev/evt_common.h
@@ -94,41 +94,36 @@ evt_has_all_types_queue(uint8_t dev_id)
}
static inline int
-evt_service_setup(uint8_t dev_id)
+evt_service_setup(uint32_t service_id)
{
- uint32_t service_id;
int32_t core_cnt;
unsigned int lcore = 0;
uint32_t core_array[RTE_MAX_LCORE];
uint8_t cnt;
uint8_t min_cnt = UINT8_MAX;
- if (evt_has_distributed_sched(dev_id))
- return 0;
-
if (!rte_service_lcore_count())
return -ENOENT;
- if (!rte_event_dev_service_id_get(dev_id, &service_id)) {
- core_cnt = rte_service_lcore_list(core_array,
- RTE_MAX_LCORE);
- if (core_cnt < 0)
- return -ENOENT;
- /* Get the core which has least number of services running. */
- while (core_cnt--) {
- /* Reset default mapping */
- rte_service_map_lcore_set(service_id,
- core_array[core_cnt], 0);
- cnt = rte_service_lcore_count_services(
- core_array[core_cnt]);
- if (cnt < min_cnt) {
- lcore = core_array[core_cnt];
- min_cnt = cnt;
- }
+ core_cnt = rte_service_lcore_list(core_array,
+ RTE_MAX_LCORE);
+ if (core_cnt < 0)
+ return -ENOENT;
+ /* Get the core which has least number of services running. */
+ while (core_cnt--) {
+ /* Reset default mapping */
+ rte_service_map_lcore_set(service_id,
+ core_array[core_cnt], 0);
+ cnt = rte_service_lcore_count_services(
+ core_array[core_cnt]);
+ if (cnt < min_cnt) {
+ lcore = core_array[core_cnt];
+ min_cnt = cnt;
}
- if (rte_service_map_lcore_set(service_id, lcore, 1))
- return -ENOENT;
}
+ if (rte_service_map_lcore_set(service_id, lcore, 1))
+ return -ENOENT;
+
return 0;
}
diff --git a/app/test-eventdev/test_perf_atq.c b/app/test-eventdev/test_perf_atq.c
index 8bc701b..67cf58a 100644
--- a/app/test-eventdev/test_perf_atq.c
+++ b/app/test-eventdev/test_perf_atq.c
@@ -231,10 +231,14 @@ perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt)
if (ret)
return ret;
- ret = evt_service_setup(opt->dev_id);
- if (ret) {
- evt_err("No service lcore found to run event dev.");
- return ret;
+ if (!evt_has_distributed_sched(opt->dev_id)) {
+ uint32_t service_id;
+ rte_event_dev_service_id_get(opt->dev_id, &service_id);
+ ret = evt_service_setup(service_id);
+ if (ret) {
+ evt_err("No service lcore found to run event dev.");
+ return ret;
+ }
}
ret = rte_event_dev_start(opt->dev_id);
diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 0ade1dc..873eab9 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -269,6 +269,19 @@ perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
return ret;
}
+ if (!(cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT)) {
+ uint32_t service_id;
+
+ rte_event_eth_rx_adapter_service_id_get(prod,
+ &service_id);
+ ret = evt_service_setup(service_id);
+ if (ret) {
+ evt_err("Failed to setup service core"
+ " for Rx adapter\n");
+ return ret;
+ }
+ }
+
ret = rte_eth_dev_start(prod);
if (ret) {
evt_err("Ethernet dev [%d] failed to start."
diff --git a/app/test-eventdev/test_perf_queue.c b/app/test-eventdev/test_perf_queue.c
index 16e2c9d..23a8a6b 100644
--- a/app/test-eventdev/test_perf_queue.c
+++ b/app/test-eventdev/test_perf_queue.c
@@ -243,10 +243,14 @@ perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt)
if (ret)
return ret;
- ret = evt_service_setup(opt->dev_id);
- if (ret) {
- evt_err("No service lcore found to run event dev.");
- return ret;
+ if (!evt_has_distributed_sched(opt->dev_id)) {
+ uint32_t service_id;
+ rte_event_dev_service_id_get(opt->dev_id, &service_id);
+ ret = evt_service_setup(service_id);
+ if (ret) {
+ evt_err("No service lcore found to run event dev.");
+ return ret;
+ }
}
ret = rte_event_dev_start(opt->dev_id);
--
2.7.4
More information about the dev
mailing list