dpdk

DPDK(二):准备知识11 --- 网卡DMA控制器

☆樱花仙子☆ 提交于 2020-11-16 04:56:12
一、简介 DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。DMA的出现就是为了解决批量数据的输入/输出问题。DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。 1、能向CPU发出系统保持(HOLD)信号,提出总线接管请求; 2、当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式; 3、能对存储器寻址及能修改地址指针,实现对内存的读写; 4、能决定本次DMA传送的字节数,判断DMA传送是否借宿。 5、发出DMA结束信号,使CPU恢复正常工作状态。 DMA的数据传送分为预处理、数据传送和后处理3个阶段。 (1)预处理 由CPU完成一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值,设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据(输入情况)或接受的数据(输出情况)时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(统称为DMA请求),用以传输数据。 (2)数据传送 DMA的数据传输可以以单字节(或字)为基本单位,对于以数据块为单位的传送

五分钟看懂抓包神技:DPDK

偶尔善良 提交于 2020-11-14 12:18:38
作者 | 轩辕之风O 来源 | 编程技术宇宙(ID:xuanyuancoding) 我是一个网络监控软件,我被开发出来的使命就是监控网络中进进出出的所有通信流量。 一直以来,我的工作都非常的出色,但是随着我监控的网络越来越庞大,网络中的通信流量也变得越来越多,我开始有些忙不过来了,逐渐发生丢包的现象,而且最近这一现象越发的严重了。 万兆流量需求 一天晚上,程序员哥哥把我从硬盘上叫了起来。 “这都几点了,你怎么还不下班啊?”,我问小哥哥。 “哎,产品经理说了,让我下个月必须支持万兆网络流量的分析,我这压力可大了,没办法只好加班了。”,说完整理了一下自己那日益稀疏的头发。 “万兆?10Gbps?开玩笑呢吧?这是要累死我的节奏啊” “可不是吗,可愁死我了。你快给我说说,你工作这么久了,有没有干的不爽的或者觉得可以改进的地方都可以给我说说”,小哥哥真诚的看着我。 我思考了片刻说到:“要说干的不爽的,还真有!就是我现在花了太多时间在拷贝数据包了,把数据包从内核空间拷贝到用户态空间,以前数据量小还行,现在网络流量这么大,可真是要了我的老命了。” 小哥哥叹了口气,“哎,这个改不了,数据包是通过操作系统的API获取的,操作系统又是从网卡那里读取的,咱们是工作在用户空间的程序,必须要拷贝一次,这没办法。你再想想别的?” 我也叹了口气,“那行吧,还有一个槽点,数据包收到后能不能直接交给我

五分钟看懂抓包神技:DPDK

那年仲夏 提交于 2020-11-12 16:44:43
我是一个网络监控软件,我被开发出来的使命就是监控网络中进进出出的所有通信流量。 一直以来,我的工作都非常的出色,但是随着我监控的网络越来越庞大,网络中的通信流量也变得越来越多,我开始有些忙不过来了,逐渐发生 丢包 的现象,而且最近这一现象越发的严重了。 万兆流量需求 一天晚上,程序员哥哥把我从硬盘上叫了起来。 “这都几点了,你怎么还不下班啊?”,我问小哥哥。 “哎,产品经理说了,让我下个月必须支持万兆网络流量的分析,我这压力可大了,没办法只好加班了。”,说完整理了一下自己那日益稀疏的头发。 “万兆?10Gbps?开玩笑呢吧?这是要累死我的节奏啊” “可不是吗,可愁死我了。你快给我说说,你工作这么久了,有没有干的不爽的或者觉得可以改进的地方都可以给我说说”,小哥哥真诚的看着我。 我思考了片刻说到:“要说干的不爽的,还真有!就是我现在花了太多时间在拷贝数据包了,把数据包从内核空间拷贝到用户态空间,以前数据量小还行,现在网络流量这么大,可真是要了我的老命了。” 小哥哥叹了口气,“哎,这个改不了,数据包是通过操作系统的API获取的,操作系统又是从网卡那里读取的,咱们是工作在用户空间的程序,必须要拷贝一次,这没办法。你再想想别的?” 我也叹了口气,“那行吧,还有一个槽点,数据包收到后能不能直接交给我,别交给系统的 协议栈 和 netfilter框架 他们去处理了,反正我拿来后也要重新分析

(转)Linux网络数据转发平面的变迁-从内核协议栈到DPDK/XDP

[亡魂溺海] 提交于 2020-11-02 18:35:55
昨晚读了一篇Paper: https://penberg.org/parakernel-hotos19.pdf 大意是说,随着IO设备的进化,它们的存取/传输速率已经超过了CPU到内存的存储/传输速率,再也不再是慢速 外设 了,所以,对这些快速设备的管理和操作要发生改变才能适应,从这个意义上讲,几乎一成不变的Linux kernel在很多方面确实阻滞了性能的优化。 这可能是现如今人们纷纷转向DPDK/netmap或者XDP的本质原因了。怎么说呢?周末回上海前,发一篇感想。 在人们的印象中,一台标准的计算机包含三大件: CPU,即中央处理器。 内存,悬挂在类似叫做北桥的芯片上。 外设,慢速IO设备,悬挂在类似叫做南桥的芯片上。 这也是我们在《计算机组成原理》这门课中学到的。其实这就是现实中的计算机,就这样子,如果按照抽象的冯诺伊曼计算机来看,计算机是不包含外设的,它只有CPU和内存,强调存储和执行,是为 存储执行计算机。 有了现实中的计算机组成后,下一步就是设计操作系统来管理这些东西,事实上,几乎任何操作系统都可以按照这堆东西划分为不同的模块: 进程管理,管理CPU分时和调度。 内存管理,管理内存分配。 文件系统,管理文件组织。 网络协议栈,管理网络IO。 磁盘驱动,… … 其实一开始从名字上将除CPU,内存之外的物件叫做 外设 (某种意义上磁盘也是),并且将其连接到相对慢速的桥片上

FPGA,你为什么这么牛?

孤街浪徒 提交于 2020-11-02 14:54:54
最近几年,FPGA这个概念越来越多地出现。 例如,比特币挖矿,就有使用基于FPGA的矿机。还有,之前微软表示,将在数据中心里,使用FPGA“代替”CPU,等等。 其实,对于专业人士来说,FPGA并不陌生,它一直都被广泛使用。但是,大部分人还不是太了解它,对它有很多疑问—— FPGA到底是什么?为什么要使用它? 相比 CPU、GPU、ASIC(专用芯片),FPGA有什么特点?…… 今天,带着这一系列的问题,我们一起来—— 揭秘FPGA 。 一、为什么使用 FPGA? 众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。 人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务。 FPGA 正是一种硬件可重构的体系结构。它的英文全称是 Field Programmable Gate Array,中文名是现场可编程门阵列。 FPGA常年来被用作专用芯片(ASIC)的小批量替代品,然而近年来在微软、百度等公司的数据中心大规模部署,以 同时提供强大的计算能力和足够的灵活性 。 不同体系结构性能和灵活性的比较 FPGA 为什么快? 「都是同行衬托得好」。 CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。 FPGA 之所以比 CPU 甚至 GPU 能效高,本质上是无指令

为什么越来越多的数据中心使用 FPGA ?

别来无恙 提交于 2020-10-29 07:32:20
前几天我们推送了一篇文章: 采用FPGA加速的腾讯云是如何快速做基因测序的 ,可以看到包括腾讯、微软、百度等很多巨头数据中心都采用或者准备采用FPGA,那么为什么FPGA会逐渐被这些巨头所采用?我们找到一篇文章,以微软数据中心采用FPGA来做分析讲解。 原标题:如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法? 来源:知乎、AI科技评论 作者:李博杰 https://www.zhihu.com/question/24174597/answer/138717507 问题「用 FPGA 代替 CPU」中,这个「代替」的说法不准确。我们并不是不用 CPU 了,而是用 FPGA 加速适合它的计算任务,其他任务仍然在 CPU 上完成,让 FPGA 和 CPU 协同工作。 本回答将涵盖三个问题: 为什么使用 FPGA,相比 CPU、GPU、ASIC(专用芯片)有什么特点? 微软的 FPGA 部署在哪里?FPGA 之间、FPGA 与 CPU 之间是如何通信的? 未来 FPGA 在云计算平台中应充当怎样的角色?仅仅是像 GPU 一样的计算加速卡吗? 一、为什么使用 FPGA? 众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。 人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务

科技赋能城市丨计讯物联智慧灯杆网关系列产品推荐

假装没事ソ 提交于 2020-10-27 19:33:57
​智慧灯杆系列产品,打通数据孤岛的“任督二脉”,加速推进智慧城市、智慧园区等应用场景的建设,满足用户对大数据信息化的管理需求。计讯物联自主研发与设计的智慧灯杆网关系列产品—— ☞ TG464智慧灯杆网关--旗舰版 ☞ TG473智慧灯杆网关二代 ☞ TG452智慧灯杆网关一代 ☞ TG463 5G千兆网关 ☞ TG451 5G工业网关 这是计讯物联长期对市场态势的聚焦以及多年技术的沉淀,结合各大行业的场景应用,创造性的开发出集软硬件为一体的技术设备的智能化系统功能。自上线以来,该系列产品获得了众多用户的关注与青睐。 TG464智慧灯杆网关--旗舰版 TG464路灯专用网关是一款 升级版配置网关,专用于智慧路灯的工业级无线通信网关,是智慧灯杆的核心设备。该产品接口丰富,具备定时、定点、定量的远程传输;采用硬件数据路径加速架构(DPAA),支持数据包解析、分类和分发(FMan),调度、包排序和拥塞管理的队列管理(QMan),缓冲区分配和反分配的硬件缓冲区管理(BMan),以达到减少开销,提升性能的作用。软件层支持完整的DPDK环境,同时支持OVS-DPDK,用于网络应用中数据包的高性能处理,为高可靠性提供保障。 TG473智慧灯杆网关二代 TG473智慧灯杆网关 二代内嵌工业级高速全网通5G、4G无线通信模块,方便用户切换,降低成本;前端采集信息传输实时高速,提高工作效率

用5G“点亮”智慧灯杆!FCU2302赋予智慧城市更多可能

人盡茶涼 提交于 2020-10-12 04:57:09
5G 已成为科技巨头甚至各国的兵家必争之地,在其众多应用中, 智慧灯杆 不得不提。5G智慧灯杆作为包含 充电桩 、视频监控、环保监测、灯杆屏等多种模块的新一代城市信息基础设施,不仅肩负着 智慧城市 建设的突破口,还集成了5G基站的功能,担起了5G建设的重任。 一、 5G智慧灯杆系统原理 1、感知输出设备: 即负责前端数据感知和相关输出的设备,包括 照明灯 、 各类传感器 、 一键报警器 、 摄像头 、 音频广播 、 LED屏 等设备。 2、通信控制设备: 即负责感知输出设备的数据采集、通信和控制的设备,按环境和业务需求可选路灯专用 网关 、工业路由器、 RT U、数采仪等。 3、数据指令流程: 通信控制设备下端 通过 RS232、 RS485 等接口与感知输出设备连接,实现数据的采集和设备的控制 。通信控制设备上行 通过 4G或有线与平台系统通信 ,实现数据和指令的实时传输。 二、智慧灯杆组成 智能杆系统总体架构包括:基础设施层、接入 感知层 、传输层、平台层、{link 56 }。 由 杆子系统、供电和防雷子系统、通信子系统和管理平台 组成。 1、照明控制系统 a、单灯/等群控制 多种控制方式,可按单盏灯或群组远程开灯、关灯、调光。 b、节能控制 按场景需求定义策略,实现智能化节能效果,延长灯具寿命。 C 、设备监测告警 对每一盏灯的工作状态、电流、电压、故障等信息进行

交易系统开发(七)——交易延迟分析

♀尐吖头ヾ 提交于 2020-10-02 14:40:22
交易系统开发(七)——交易延迟分析 一、交易延迟简介 1、交易延迟简介 交易延迟高最常用的指标是往返延时(Round Trip Time),即交易订单从客户策略服务器发至经纪公司交易柜台,交易柜台内部处理后发往交易所,交易所确认报单后发送回报给交易柜台,再从柜台发送至客户策略机的一来一回整体链路的耗时。 2、交易策略服务器至交易柜台延迟 客户策略服务器至经纪公司交易柜台的延时指订单从客户策略服务器网卡发出,至经纪公司柜台服务器网卡收到之间的延时。 本阶段延时主要耗时在硬件上,受服务器、网卡及交换机的性能优劣影响较大。 策略服务器一般由客户自行采购或由客户指定配置由券商采购,柜台服务器一般由经纪公司提供,高频交易服务器一般托管在机房,布线一般由经纪公司网络工程师完成,本段延迟主要由经纪公司和客户共同决定。 3、交易柜台内部延迟 交易柜台内部延迟指交易柜台网卡收到策略客户端发出的委托订单,经过前置、风控、订单、报盘等模块管理后,再调用交易所API从网卡发出所需要的耗时。 本段延时由经纪公司柜台系统,系统服务器、网卡及交易所API三部分决定。 第一部分即经纪公司柜台系统,高频交易柜台系统由专业柜台厂商提供。交易柜台系统一般有交易前置模块(提供监听及客户链接管理功能)、风控模块(对客户订单的风控管理)、订单管理模块(管理客户订单)、报盘模块(管理与交易所交易前置的链接)。

Redis 6.0 多线程重磅发布!!!

邮差的信 提交于 2020-10-02 08:57:26
Redis 6.0 多线程重磅发布!!! Redis 6.0在5.2号这个美好的日子里悄无声息的发布了,这次发布在IT圈犹如一颗惊雷一般,因为这是redis最大的一次改版,首次加入了多线程。 作者Antirez在RC1版本发布时在他的博客写下: the most “enterprise” Redis version to date // 最”企业级”的 the largest release of Redis ever as far as I can tell // 最大的 the one where the biggest amount of people participated // 参与人数最多的 这次改变,性能有个飞速的提升~ 先po出新版和旧版性能图 从上面可以看到 GET/SET 命令在 4 线程 IO 时性能相比单线程是几乎是翻倍了。另外,这些数据只是为了简单验证多线程 IO 是否真正带来性能优化,并没有针对严谨的延时控制和不同并发的场景进行压测。数据仅供验证参考而不能作为线上指标,且只是目前的 unstble分支的性能,不排除后续发布的正式版本的性能会更好。 Redis 6.0 之前的版本真的是单线程吗? Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器