mirror of
https://github.com/openvswitch/ovs
synced 2025-10-17 14:28:02 +00:00
netdev-dpdk: Use multiple core for dpdk IO.
DPDK need to set _lcore_id for using multiple core. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Thomas Graf <tgraf@redhat.com>
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
#include "list.h"
|
||||
#include "meta-flow.h"
|
||||
#include "netdev.h"
|
||||
#include "netdev-dpdk.h"
|
||||
#include "netdev-vport.h"
|
||||
#include "netlink.h"
|
||||
#include "odp-execute.h"
|
||||
@@ -1864,6 +1865,7 @@ pmd_thread_main(void *f_)
|
||||
poll_cnt = 0;
|
||||
poll_list = NULL;
|
||||
|
||||
pmd_thread_setaffinity_cpu(f->id);
|
||||
reload:
|
||||
poll_cnt = pmd_load_queues(f, &poll_list, poll_cnt);
|
||||
atomic_read(&f->change_seq, &port_seq);
|
||||
|
@@ -1196,3 +1196,21 @@ netdev_dpdk_register(void)
|
||||
{
|
||||
netdev_register_provider(&netdev_dpdk_class);
|
||||
}
|
||||
|
||||
int
|
||||
pmd_thread_setaffinity_cpu(int cpu)
|
||||
{
|
||||
cpu_set_t cpuset;
|
||||
int err;
|
||||
|
||||
CPU_ZERO(&cpuset);
|
||||
CPU_SET(cpu, &cpuset);
|
||||
err = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
|
||||
if (err) {
|
||||
VLOG_ERR("Thread affinity error %d",err);
|
||||
return err;
|
||||
}
|
||||
RTE_PER_LCORE(_lcore_id) = cpu;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -21,12 +21,14 @@
|
||||
int dpdk_init(int argc, char **argv);
|
||||
void netdev_dpdk_register(void);
|
||||
void free_dpdk_buf(struct ofpbuf *);
|
||||
int pmd_thread_setaffinity_cpu(int cpu);
|
||||
|
||||
#else
|
||||
|
||||
#define dpdk_init(arg1, arg2) (0)
|
||||
#define netdev_dpdk_register()
|
||||
#define free_dpdk_buf(arg)
|
||||
#define pmd_thread_setaffinity_cpu(c) (0)
|
||||
|
||||
#endif /* DPDK_NETDEV */
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user