码迷,mamicode.com
首页 > 编程语言 > 详细

[dpdk] dpdk多线程任务调度

时间:2018-04-30 19:54:56      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:sch   指定   div   特点   span   调度   区别   问题   url   

 

DPDK下的线程,叫做EAL线程。

EAL线程默认是与CPU core一对一绑定的,这样的话,有一些实时性,计算量不高的任务独占CORE是一种浪费,大概找了如下几种解决方案。

 

1. dpdk serivce core

可以实现workload与core之间 N到M的映射关系。

就是提供一组core实现serivce任务,service顾名思义是一种短时任务,多短时任务的应用场景,适用。

[dpdk] service core

 

2.  LThread, 

可以实现workload与core之间 N到M的映射关系。

dpdk的example里提供了一种lightweight的thread解决方案,称为lthread。

特点是使用协同线程调度,关于抢占式任务调度与协同式任务调动,参见:

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

lthread的文档:

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

  1. 这个库并不在dpdk的主代码中,可以稳定性上会有一下问题。

  2. 由于是协同式任务调度,各个thread的逻辑实现上都要有一些注意的地方。

 

3. 协程

没细研究,可参考:

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

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

库的官方站点:http://dunkels.com/adam/pt/

 

4. pthread

常规的OS thread。

特点是好多RTE的依赖都不能使用。

 

CPU affinity:我之前以为CPU的绑定不能指定组。其实是可以的。

CPU affinity 是一种调度属性(scheduler property), 它可以将一个进程"绑定" 到一个或一组CPU上.

https://www.cnblogs.com/LubinLew/p/cpu_affinity.html

 

那么,4和以上1,2的最大区别就是不能使用EAL的环境依赖。

┬─[tong@T7:~]─[05:35:36 PM]
╰─>$ man sched_setaffinity

 

[dpdk] dpdk多线程任务调度

标签:sch   指定   div   特点   span   调度   区别   问题   url   

原文地址:https://www.cnblogs.com/hugetong/p/8974107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!