[dpdk] dpdk多线程任务调度
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多线程任务调度的更多相关文章
- DPDK多核多线程机制简析
DPDK通过在多核设备上,创建多个线程,每个线程绑定到单独的核上,减少线程调度的开销,以提高性能. DPDK的线程分为控制线程和数据线程,控制线程一般绑定到MASTER核上,主要是接受用户配置,并传递 ...
- [developmemt][dpdk] dpdk优化(转)
转发:https://software.intel.com/en-us/articles/dpdk-performance-optimization-guidelines-white-paper 转发 ...
- [dpdk] dpdk编译成动态库使用 -- PCI port自动发现与pmd动态加载
1. 修改配置文件 .conf, 设置如下变量的值. [root@D129 x86_64-native-linuxapp-gcc]# cat dpdk/x86_64-native-linuxapp- ...
- [dpdk] dpdk --lcores参数
dpdk程序的命令行参数 --lcores可以设置lcore到CPU processer的多对多映射关系. 这样既可以提供CPU processor的伸缩扩展,同时也保证了EAL thread的运行环 ...
- [dpdk] dpdk启动几个线程
看别人的代码搞得有点晕,突然有点不确定,再确认一次. 使用 helloworld程序测试一下. /root/dpdk-16.07/examples/helloworld 一: 只启动一个核心. [r ...
- [development][dpdk] dpdk与CONFIG_RTE_MAX_MEMSEG有关的错误
dpdk程序无法启动, 错误如下: EAL: Requesting pages of size 2MB EAL: Requesting pages of size 2MB EAL: Can only ...
- 补充---spring多线程任务调度
在spring任务调度的基础上增加多线程 三种方式: (1)使用OpenSymphony Quartz 调度器 (2)使用JDK Timer支持类 (3)SpringTaskExecutor抽象 sp ...
- 任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度
上篇博文<任务调度(三)--Timer的替代品ScheduledExecutorService简介>已经对ScheduledExecutorService做了简介.事实上使用Schedul ...
- DPDK 网络加速在 NFV 中的应用
目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 ...
随机推荐
- select 语法
select 语句主要语法: SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ ...
- Selenium Web 自动化 - 项目实战(一)
Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...
- oracle删除数据库中的所有表
连接:http://linben.blog.51cto.com/6205951/1293619 1.先禁用数据库中所有的约束 select 'alter table ' || table_name | ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-4 底层驱动之SDRAM读写(上)
源视频包下载地址: 链接:http://pan.baidu.com/s/1i5lzzj3 密码:bwoe 银杏科技优酷视频发布区: http://i.youku.com/gingko8
- CentOS配置Tomcat开机启动
通常我们进行服务器维护的时候需要注意点为,服务器上的容器一般都是开机启动,减少停机后应用还需要一个一个启动的麻烦. 1) 新建tomcat文件 touch /etc/rc.d/init.d/tomca ...
- java获取视频的第一帧
//------------maven配置文件--------------- <dependency> <groupId>org.bytedeco</groupId> ...
- Foxpro数据库连接错误解决方法--【VFP DBF文件不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器】
直接访问vfp dbf文件时报错: 错误描述: 'd:\vfpData\test.dbf'不是一个有效的路径. 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器. 解决办法:Data Sour ...
- python笔记2-数据类型:列表[List]常用操作
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,索引从0开始,依此类推. 序列都可以进行的操作:包括 索引,切片,加,乘,检查成员. 列表是最常用的Pyth ...
- Mysql EF 触发器生成主键id 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项 ;System.Data.Entity.Infrastructure.DbUpdateConcurrencyException
http://stackoverflow.com/questions/24725261/how-to-use-a-custom-identity-column-in-sql-with-entity-f ...
- [Math] Unconstrained & Constrained Optimization
粘贴两个典型的例子,只是基础内容,帮助理解. (1) Solution: (2) Solution: