[dpdk] dpdk multi-threaded task scheduling

 

Threads under DPDK are called EAL threads.

The EAL thread is bound one-to-one with the CPU core by default. In this case, there is some real-time performance, and it is a waste to monopolize the CORE for tasks with low computational load. The following solutions are probably found.

 

1. dpdk serivce core

The N-to-M mapping relationship between workload and core can be implemented.

It is to provide a set of cores to implement serivce tasks. As the name suggests, service is a short-term task, and it is applicable to the application scenarios of multiple short-term tasks.

[dpdk] service core

 

2.  LThread, 

The N-to-M mapping relationship between workload and core can be implemented.

The example of dpdk provides a lightweight thread solution called lthread.

It is characterized by the use of cooperative thread scheduling. For preemptive task scheduling and cooperative task mobilization, see:

https://blog.csdn.net/jjavaboy/article/details/43340629

Documentation for lthread:

https://dpdk.org/doc/guides/sample_app_ug/performance_thread.html#the-l-thread-subsystem

  1. This library is not in the main code of dpdk, there may be some problems in stability.

  2. Since it is a collaborative task scheduling, there must be some attention to the logic implementation of each thread.

 

3. Coroutines

Without detailed research, you can refer to:

http://www.yeolar.com/note/2013/02/17/coroutines/

https://coolshell.cn/articles/10975.html

Official site of the library: http://dunkels.com/adam/pt/

 

4. pthread

Regular OS thread.

The characteristic is that many RTE dependencies cannot be used.

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325099511&siteId=291194637