[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 内存访问 应用 ...
随机推荐
- <以交易为生>读书笔记
为了确保操作成功,就要练习进行防御性资金管理. 长期来看,没有哪位大师能让你发财,你必须自己努力 要坚持写操作日记—记下每次买卖的理由,从中总结出那些反复成功和反复失败的操作模式 大多数交易者无法忍受 ...
- AI金融知识自学偏量化方向-目录0
前提: 统计学习(统计分析)和机器学习之间的区别 金融公司采用机器学习技术及招募相关人才 了解不同类型的机器学习 有监督学习 vs 无监督学习 迭代和评估 偏差方差权衡 结合有监督学习和无监督学习(半 ...
- Java如何检查端口是否被使用?
在Java编程中,如何扫描打开的端口(是否被使用)? 以下示例显示如何通过创建 Socket 对象来检查主机上打开或正在使用的端口(相当于一个简单的端口扫描器). package com.yiibai ...
- 将Java web应用部署到Tomcat 及部署到Tomcat根目录 的三种方式
Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应 ...
- Spark学习笔记——读写HDFS
使用Spark读写HDFS中的parquet文件 文件夹中的parquet文件 build.sbt文件 name := "spark-hbase" version := " ...
- 文件解压缩 tar zip
zip -e var-log-protected.zip /var/log/* Enter password: Verify password: updating: var/log/acpid (de ...
- python加快数据处理的方法
1.一切数据库操作最好使用内网连接, 2.使用批量操作接口操作数据库,而不是多线程频繁操作单条数据 3.如果python进程的cpu使用率达到100%了,需要开启多进程.java单个进程cpu使用率在 ...
- [Algorithm] Warm-up puzzles
闲下来后,需要讲最近涉及到的算法全部整理一下,有个indice,方便记忆宫殿的查找 MIT的算法课,地球上最好:https://ocw.mit.edu/courses/electrical-engin ...
- Oracle迁移至PostgreSQL工具之Ora2Pg
1. 描述 Ora2Pg是一个免费的工具,用于将Oracle数据库迁移到PostgreSQL兼容的模式.它连接您的Oracle数据库,自动扫描并提取它的结构或数据,然后生成可以装载到PostgreSQ ...
- 8. Oracle通过rman进行克隆
一. 安装规划 IP ROLE 192.168.1.235 克隆对象 192.168.1.221 克隆库 二. 备库创建相应的dump文件夹 # 在主库查询对应的dump目录 select name, ...