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:~]─[:: PM]
╰─>$ man sched_setaffinity

[dpdk] dpdk多线程任务调度的更多相关文章

  1. DPDK多核多线程机制简析

    DPDK通过在多核设备上,创建多个线程,每个线程绑定到单独的核上,减少线程调度的开销,以提高性能. DPDK的线程分为控制线程和数据线程,控制线程一般绑定到MASTER核上,主要是接受用户配置,并传递 ...

  2. [developmemt][dpdk] dpdk优化(转)

    转发:https://software.intel.com/en-us/articles/dpdk-performance-optimization-guidelines-white-paper 转发 ...

  3. [dpdk] dpdk编译成动态库使用 -- PCI port自动发现与pmd动态加载

    1.  修改配置文件 .conf, 设置如下变量的值. [root@D129 x86_64-native-linuxapp-gcc]# cat dpdk/x86_64-native-linuxapp- ...

  4. [dpdk] dpdk --lcores参数

    dpdk程序的命令行参数 --lcores可以设置lcore到CPU processer的多对多映射关系. 这样既可以提供CPU processor的伸缩扩展,同时也保证了EAL thread的运行环 ...

  5. [dpdk] dpdk启动几个线程

    看别人的代码搞得有点晕,突然有点不确定,再确认一次. 使用 helloworld程序测试一下. /root/dpdk-16.07/examples/helloworld 一:  只启动一个核心. [r ...

  6. [development][dpdk] dpdk与CONFIG_RTE_MAX_MEMSEG有关的错误

    dpdk程序无法启动, 错误如下: EAL: Requesting pages of size 2MB EAL: Requesting pages of size 2MB EAL: Can only ...

  7. 补充---spring多线程任务调度

    在spring任务调度的基础上增加多线程 三种方式: (1)使用OpenSymphony Quartz 调度器 (2)使用JDK Timer支持类 (3)SpringTaskExecutor抽象 sp ...

  8. 任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度

    上篇博文<任务调度(三)--Timer的替代品ScheduledExecutorService简介>已经对ScheduledExecutorService做了简介.事实上使用Schedul ...

  9. DPDK 网络加速在 NFV 中的应用

    目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 ...

随机推荐

  1. 2.4 Apache Axis2 快速学习手册之XMLBeans 构建Web Service

    4. 使用XMLBeans生成服务(通过xml bean 命令将wsdl 文件生成java 代码) 要使用XMLBeans生成服务,请执行以下步骤. 通过在Axis2_HOME / samples / ...

  2. class path and classloader

    https://www.artima.com/insidejvm/ed2/linkmod5.html https://www.artima.com/insidejvm/ed2/securityP.ht ...

  3. (转-经典-数据段)C++回顾之static用法总结、对象的存储,作用域与生存期

    转自:https://blog.csdn.net/ab198604/article/details/19158697相关知识补充:https://www.cnblogs.com/rednodel/p/ ...

  4. 【Unity】UGUI无法修改UI元素的Pivot锚点位置

    如下图,要点击切换左边的Toggle按钮变为Pivot才可以编辑Pivot!   参考: https://answers.unity.com/questions/871238/cant-change- ...

  5. mysql解决大量time_wait

    mysql解决大量time_wait     命令查看TIME_WAIT连接数 netstat -ae|grep "TIME_WAIT" |wc -l 早上登陆服务器的时候输入ne ...

  6. Java知多少(81)框架窗口基础

    窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...

  7. Java知多少(101)图像缓冲技术

    当图像信息量较大,采用以上直接显示的方法,可能前面一部分显示后,显示后面一部分时,由于后面一部分还未从文件读出,使显示呈斑驳现象.为了提高显示效果,许多应用程序都采用图像缓冲技术,即先把图像完整装入内 ...

  8. windows python3.7安装numpy问题的解决方法

    我的是win7的系统,去python官网下载python3.7安装 CMD  #打开命令窗口 pip install numpy #在cmd中输入 提示 需要c++14.0, 解决办法: 1, 进入h ...

  9. 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析

      0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...

  10. rtmp推送aac没有声音的问题记录

      症状是这样的:用librtmp推流aac后,用vlc能收到推流的声音,但是用flash却播放不了推流的声音.   查了几天,用工具抓取推流的数据,发现rtmp数据包中的头部信息有一个Chunk S ...