《深入浅出DPDK》—第2章2.8节时代背景

简介: 当今时代,随着大数据和云计算的爆炸式增长,宽带的普及以及个人终端网络数据的日益提高,对电信服务节点和数据中心的数据交换能力和网络带宽提出了更高的要求。并且,数据中心本身对虚拟化功能的需求也增加了更多的网络带宽需求。

本节书摘来自华章出版社《深入浅出DPDK》一书中的第2章,第2.8节时代背景,作者朱河清,梁存铭,胡雪焜,曹水 等,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.8 DDIO
2.8.1 时代背景
当今时代,随着大数据和云计算的爆炸式增长,宽带的普及以及个人终端网络数据的日益提高,对电信服务节点和数据中心的数据交换能力和网络带宽提出了更高的要求。并且,数据中心本身对虚拟化功能的需求也增加了更多的网络带宽需求。电信服务节点和数据中心为了应付这种需求,需要对内部的各种服务器资源进行升级。在这种环境下,英特尔公司提出了Intel? DDIO(Data Direct I/O)的技术。该技术的主要目的就是让服务器能更快处理网络接口的数据,提高系统整体的吞吐率,降低延迟,同时减少能源的消耗。但是,DDIO是如何做到这种优化和改进的呢?为了回答这个问题,有必要回顾一下DDIO技术出现之前,服务器是如何处理从网络上来的数据的。
当一个网络报文送到服务器的网卡时,网卡通过外部总线(比如PCI总线)把数据和报文描述符送到内存。接着,CPU从内存读取数据到Cache进而到寄存器。进行处理之后,再写回到Cache,并最终送到内存中。最后,网卡读取内存数据,经过外部总线送到网卡内部,最终通过网络接口发送出去。
可以看出,对于一个数据报文,CPU和网卡需要多次访问内存。而内存相对CPU来讲是一个非常慢速的部件。CPU需要等待数百个周期才能拿到数据,在这过程中,CPU什么也做不了。
DDIO技术是如何改进的呢?这种技术使外部网卡和CPU通过LLC Cache直接交换数据,绕过了内存这个相对慢速的部件。这样,就增加了CPU处理网络报文的速度(减少了CPU和网卡等待内存的时间),减小了网络报文在服务器端的处理延迟。这样做也带来了一个问题,因为网络报文直接存储在LLC Cache中,这大大增加了对其容量的需求,因而在英特尔的E5处理器系列产品中,把LLC Cache的容量提高到了20MB。
图2-11是DDIO技术对网络报文的处理流程示意图。


5a3060d6637ba1575fe0ea1f06d558c120c55ba6

DDIO功能模块会学习来自I/O设备的读写请求,也就是I/O对内存的读或者写的请求。例如,当网卡需要从服务器端传送一个数据报文到网络上时,它会发起一个I/O读请求(读数据操作),请求把内存中的某个数据块通过外部总线送到网卡上;当网卡从网络中收到一个数据报文时,它会发起一个I/O写请求(写数据操作),请求把某个数据块通过外部总线送到内存中某个地址上。
接下来的章节会详细介绍在没有DDIO技术和有DDIO技术条件下,服务器是如何处理这些I/O读写请求的。

2.8.2 网卡的读数据操作
通常来说,为了发送一个数据报文到网络上去,首先是运行在CPU上的软件分配了一段内存,然后把这段内存读取到CPU内部,更新数据,并且填充相应的报文描述符(网卡会通过读取描述符了解报文的相应信息),然后写回到内存中,通知网卡,最终网卡把数据读回到内部,并且发送到网络上去。但是,没有DDIO技术和有DDIO技术条件的处理方式是不同的,图2-12是两种环境下的处理流程图。


b73f0d887fe7779a04b988fd5011e63c1df2b2d4

图2-12a是没有DDIO技术的处理流程。
1)处理器更新报文和控制结构体。由于分配的缓冲区在内存中,因此会触发一次Cache不命中,处理器把内存读取到Cache中,然后更新控制结构体和报文信息。之后通知NIC来读取报文。
2)NIC收到有报文需要传递到网络上的通知后,它首先需要读取控制结构体进而知道从哪里获取报文。由于之前处理器刚把该缓冲区从内存读到Cache中并且做了更新,很有可能Cache还没有来得及把更新的内容写回到内存中。因此,当NIC发起一个对内存的读请求时,很有可能这个请求会发送到Cache系统中,Cache系统会把数据写回到内存中,然后内存控制器再把数据写到PCI总线上去。因此,一个读内存的操作会产生多次内存的读写。
图2-12b是有DDIO技术的处理流程。
1)处理器更新报文和控制结构体。这个步骤和没有DDIO的技术类似,但是由于DDIO的引入,处理器会开始就把内存中的缓冲区和控制结构体预取到Cache,因此减少了内存读的时间。
2)NIC收到有报文需要传递到网络上的通知后,通过PCI总线把控制结构体和报文送到NIC内部。利用DDIO技术,I/O访问可以直接将Cache的内容送到PCI总线上。这样,就减少了Cache写回时等待的时间。
由此可以看出,由于DDIO技术的引入,网卡的读操作减少了访问内存的次数,因而提高了访问效率,减少了报文转发的延迟。在理想状况下,NIC和处理器无需访问内存,直接通过访问Cache就可以完成更新数据,把数据送到NIC内部,进而送到网络上的所有操作。

2.8.3 网卡的写数据操作
网卡的写数据操作和上节讲到的网卡的读数据操作是完全相反的操作,通俗意义上来讲就是有网络报文需要送到系统内部进行处理,运行的软件可以对收到的报文进行协议分析,如果有问题可以丢弃,也可以转发出去。其过程一般是NIC从网络上收到报文后,通过PCI总线把报文和相应的控制结构体送到预先分配的内存,然后通知相应的驱动程序或者软件来处理。和之前讲到的网卡的读数据操作类似,有DDIO技术和没有DDIO技术的处理也是不一样的,以下是具体处理过程。
首先还是没有DDIO技术的处理流程,如图2-13a所示。
1)报文和控制结构体通过PCI总线送到指定的内存中。如果该内存恰好缓存在Cache中(有可能之前处理器有对该内存进行过读写操作),则需要等待Cache把内容先写回到内存中,然后才能把报文和控制结构体写到内存中。
2)运行在处理器上的驱动程序或者软件得到通知收到新报文,去内存中读取控制结构体和相应的报文,Cache不命中。之所以Cache一定不会命中,是因为即使该内存地址在Cache中,在步骤1中也被强制写回到内存中。因此,只能从内存中读取控制结构体和报文。


ed34035b37d1c98afe0ed236beafb2573df19342

有DDIO技术的处理流程,如图2-13b所示。
1)这时,报文和控制结构体通过PCI总线直接送到Cache中。这时有两种情形:
a)    如果该内存恰好缓存在Cache中(有可能之前处理器有对该内存进行过读写操作),则直接在Cache中更新内容,覆盖原有内容。
b)    如果该内存没有缓存在Cache中,则在最后一级Cache中分配一块区域,并相应更新Cache表,表明该内容是对应于内存中的某个地址的。

2)运行在处理器上的驱动或者软件被通知到有报文到达,其产生一个内存读操作,由于该内容已经在Cache中,因此直接从Cache中读。
由此可以看出,DDIO技术在处理器和外设之间交换数据时,减少了处理器和外设访问内存的次数,也减少了Cache写回的等待,提高了系统的吞吐率和数据的交换延迟

相关文章
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
1797 1
|
7月前
|
监控 数据可视化 数据挖掘
1688运营实战指南:1688系统化学习与进阶技巧
本文系统解析1688平台运营核心策略,涵盖店铺建设、流量获取、转化提升、数据分析与客户管理五大模块,助力企业打造专业形象,实现精准引流、高效转化与持续复购,推动B2B电商业务稳步增长。
|
3月前
|
人工智能 安全 数据可视化
GitNexus:GitHub一周暴涨6000星!这个"零服务器代码神器"让AI终于能看懂你的代码了
GitNexus是GitHub一周暴涨6000星的「零服务器代码智能引擎」,纯浏览器/本地运行,用Tree-sitter构建交互式知识图谱,让AI真正看懂代码依赖、调用与架构,支持TS/Python/Java等10+语言及Cursor/Claude等MCP工具,隐私安全,重构无忧。(239字)
3101 4
|
数据采集 存储 Web App开发
如何避免爬虫因Cookie过期导致登录失效
如何避免爬虫因Cookie过期导致登录失效
|
域名解析 监控 网络协议
21.7K star!再见吧花生壳,没有公网ip,也能搞定所有网络访问!内网穿透神器NPS
“nps”是一款强大的内网穿透工具,支持多种协议与功能。它无需公网IP或复杂配置,可实现远程桌面、文件共享和私有云搭建等。项目采用Go语言开发,具有高性能与轻量级特点,适用于远程办公、物联网管理等场景。其核心亮点包括零配置穿透、多级代理网络、实时流量监控及企业级安全特性。对比同类工具,“nps”在安装复杂度、协议支持和管理界面方面表现优异。项目地址:https://github.com/ehang-io/nps。
2881 12
|
前端开发 测试技术 PHP
任务悬赏接单发布系统PHP源码
任务发布接单系统,目前最新最完善的一套源码,前后端全开源无加密,支持会员系统、 支持店铺认证 支持普通任务和线下任务 支持微信支付和支付宝支付 短信对接短信宝
692 13
|
人工智能 自然语言处理 搜索推荐
《深度剖析:开源与闭源模型,AI舞台上的不同角色》
在人工智能领域,开源与闭源模型各有优劣。闭源模型由大公司精心打造,初始性能优越,但优化受限;开源模型则依靠社区力量,灵活性高、迭代迅速,长期潜力大。在学术研究中,开源模型透明性高,利于创新;商业应用上,闭源模型稳定性强,适合高要求场景。资源受限环境中,开源模型更易裁剪优化。企业和开发者应根据需求选择合适模型,两者共同推动AI发展。
2954 9
|
Kubernetes Cloud Native Apache
FFA 2023 专场解读:流批一体&平台建设&云原生
完整议程已公开,期待 12 月 8-9 日与你 Flink Forward Asia 2023 相会!
1050 3
FFA 2023 专场解读:流批一体&平台建设&云原生
|
Linux 数据安全/隐私保护 网络虚拟化
centos7部署Pritunl
centos7部署Pritunl
1425 1