我们只能使用DPDK队列,而不使用c ++应用程序中的其他dpdk功能吗?]

问题描述 投票:0回答:1

我有一个现有的c ++应用程序(Linux),它使用我们自己的Queue实现。此处,线程“ Thread1”从NIC接口读取并写入队列,另一个线程“ Thread2”从队列出队。它已通过使用锁定机制来实现。为了使入队/出队更快,我只想在应用程序中实现DPDK队列。我做了一个POC,发现性能有所提高。

我面临的挑战是,一旦我使用“ rte_eal_init”初始化代码,所有的CPU内核都将在DPDK线程的控制下使用(如果我使用命令行参数传递了1个内核,则只有该内核成为了)。我想避免DPDK占用内核。我只是想将DPDK Queue用作其他任何库。

另一个挑战是,如果我不使用DPDK API来旋转线程,那么所有线程都会在主CPU(cpu0)上生成“ rte_eal_init”之后生成。我期望线程可以由调度程序在任何内核中自由调度。

有人可以提供任何想法,或者可以通过其他任何方式来完成。

我有一个现有的c ++应用程序(Linux),它使用我们自己的Queue实现。在这里,线程“ Thread1”从NIC接口读取并写入队列,另一个线程“ Thread2”出队...

multithreading dpdk
1个回答
0
投票

Dpdk rte_eal_init不会消耗主CPU的100%。它只是一个配置函数,用于初始化dpdk组件。在轮询模式(连续循环)中运行时,它是rx_burst,这会导致100%的利用率。

© www.soinside.com 2019 - 2024. All rights reserved.