自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 《深入浅出DPDK》——存储软件优化

基于DPDK的存储软件优化DPDK技术的诞生虽然主要是为了加速网络报文(小包)的处理, 但是相关技术亦可以应用到存储系统中,用以提高存储系统中网络的效 率,继而提升整个系统的性能。DPDK作为一个高速处理网络报文的框架,提供了以下重要的思想和技术。 用户态的网络驱动:使用轮询方式的用户态网络驱动,替换了基于中断模式的内核态网络驱动。 基于大页的内存管理:DPDK的大页机制是预先分配一块内存,进行独立的内存管理。 基于pthread的CPU调度机制:目前DPDK使用了pthr

2021-11-30 09:44:34 2516

原创 《深入浅出DPDK》——OVS中的DPDK性能加速

Open vSwitch(OVS)中的DPDK性能加速在NFV基础设施(NFVI)中有一个重要的组成部分,叫虚拟交换机。什么是虚拟交换机虚拟交换机是运行在通用平台上的一个软件层,可以连接虚拟机的网络端口、提供一套纯软件的路由交换协议栈的一个机制,帮助平台上运行的虚拟机实例(虚拟机之间、虚拟机与外部网络之间)。虚拟机的虚拟网卡对应虚拟交换机的一个虚拟端口,通用平台上的物理网卡作为虚拟交换机的上行链路端口。虽然是虚拟交换机,但是他的工作原理和物理交换机类似。虚拟交换机的主要好处体现在扩展灵活

2021-11-29 14:18:41 2232

原创 《深入浅出DPDK》——DPDK网络功能虚拟化

DPDK网络功能虚拟化NFV(Network Function Virtualization)即网络功能虚拟化。初衷是通过使用英特尔X86等通用服务器硬件平台以及虚拟化技术。来承载基于软件实现的网络功能。NFV包含的模块: NFVI(网络功能虚拟化基础设施),它提供了支持网络虚拟功能执行所需的虚拟化资源,包括符合COTS(Commercial-Off-The-Shelf) 开放式标准定义的硬件,必要的硬件加速器,可以虚拟和抽象底层硬件的软件层。 VNF(虚拟网络功能),是一个软件实现

2021-11-26 09:40:16 1663

原创 《深入浅出DPDK》——加速包处理的vhost优化方案

加速包处理的vhost优化方案vhost的演进和原理virtio-net的后端驱动经过从virtio-net后端,到内核态vhost-net,再到用户态vhost-user的演进过程。Qemu和virtio-netvirtio-net后端驱动最基本要素是虚拟队列机制、消息通知机制和中断机制。虚拟队列机制连接着客户机和宿主机的数据交互。消息通知机制主要用于客户机到宿主机的消息通知。中断机制主要用于从宿主机到客户机的中断请求和处理。下图是virtio-net后端模块进行报文处理的系统架构图。

2021-11-24 14:25:41 1632

原创 《Linux开源网络全栈解析》——NFV和NFC基础设施

NFV和NFC基础设施DPDK为高性能数据面的处理提供了可能。DPDK已作为NFV和NFC(网络功能虚拟化和容器化)的重要组件,参与到NFV和NFC的基础设施建设中。网络功能虚拟化网络功能虚拟化的一个重要特征是软硬件解耦。网络功能从专用硬件向通用硬件平台乃至虚拟通用硬件平台转移时,作为承载各种网络功能的基础设施层(NFVi),其重要性也越发突出。NFVi数据平面加速对于一个VNF(虚拟化网络功能)应用,快速地从NFVi获取网络帧是后续业务逻辑的基础,涉及虚拟主机接口(Host I/O I

2021-11-23 09:50:58 700

原创 《深入浅出DPDK》——半虚拟化Virtio

半虚拟化Virtiovirtio是一种半虚拟化的设备抽象接口规范。与宿主机纯软件模拟I/O设备相比,Virtio可以获得更好的I/O性能。缺点是必须要求客户机安装特定的Virtio驱动使其知道运行在虚拟化环境中。Virtio使用场景现代数据中心大量采用虚拟化技术,设备的虚拟化是其中重要的一环。Virtio作为一种标准化的设备接口,主流的操作系统和应用都逐渐加入了对Virtio设备的直接支持,这给数据中心的运维带来了很多方便。Virtio同I/O透传技术相比,目前在网络吞吐率、时延以及

2021-11-22 15:21:25 2409

原创 《深入浅出DPDK》——学习笔记——X86平台上的I/O虚拟化

X86平台上的I/O虚拟化什么是虚拟化?抽象来说,虚拟化是资源的逻辑表示,它不受物理设备的约束。具体来说,虚拟化技术的实现形式是在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一种形式资源,提供给上层使用。通过空间上的分割,时间上的分时以及模拟,虚拟化可以将一份资源抽象成多份。反过来说,虚拟化也可以将多份资源抽象成一份。总的来说,虚拟化抽象了硬件层,允许多种不同的负载能共享一组资源。虚拟化的好处是什么?各大企业和商业机构从虚拟化中可以得到非常大的效率提升,因为虚拟化可以显著提高服务器的

2021-11-17 19:08:00 1952

原创 《深入浅出DPDK》——读书笔记——硬件加速与功能卸载

硬件加速与功能卸载与软件实现相比,同样的功能如果硬件来做,可以减少CPU的开销。通常硬件能力强,具有高并发处理特点,有助于大幅提高系统吞吐率与减少时延。硬件加速实现在哪里?可以实现在通用CPU上,也可以实现在芯片组,还可以实现在各种接口卡上。和网络数据最直接的接口是网卡,在网卡上进行网络数据卸载是主要思路。硬件的缺点在于资源局限,功能固化,一旦设计发布完成,再对功能进行改变就变得非常困难。且硬件的设计与发布时间长,更新周期无法与软件相比。硬件卸载简介硬件提供越来越多的功能,从以太网,IP

2021-11-16 20:35:07 1686

原创 《Linux开源网络全栈解析》——学习笔记——DPDK

高性能数据平面——DPDKDPDK的广泛应用很好地证明了IA多核处理器可以解决高性能数据包处理的需求。其核心思想可以归纳成以下几个方面:轮询模式:DPDK轮询网卡是否有网络报文的接收或发送,这样避免了传统网卡驱动的中断上下文的开销,当报文吞吐量大的时候,性能及延时的改善十分明显。用户动态驱动:用用户动态驱动的开发框架在用户态操作设备及数据包,避免了不必要的用户态和内核态之间的数据拷贝和系统调用。降低访问存储开销:高性能数据包处理意味着处理器需要频繁访问数据包。显然降低访问存储开销可以有效地提

2021-11-16 10:24:07 1303

原创 《Linux开源网络全栈详解》——高性能数据平面——平台增强

高性能数据平面——平台增强在IA(多核通用处理器平台)上的许多技术也可以被用来提高网络的处理能力,大致可以分为以下几个方面:多核及亲和力多核处理器是指在一个处理器中集成两个或多个完整的CPU核及计算引擎,它的出现使性能水平扩展成为可能。原本在单核上顺序执行的任务,可以按照逻辑划分为若干个子任务,分别在不同的核上并行执行。利用CPU亲和性能能够使一个特定任务在指定的核上尽量长时间运行而不被迁移到其他处理器。在多核处理器上,每个核会根据自己本身会缓存着任务使用的信息,而任务可能会

2021-11-15 16:28:09 720

原创 《深入浅出DPDK》——学习笔记——流分类技术的应用

DPDK结合网卡Flow Director功能一个设备需要一定的转发功能来处理数据平面的报文,同时需要处理一定量的控制报文。对于转发功能而言,要求较高的吞吐量,需要多个core来支持。对于控制报文的处理,其报文量并不大,但需要保证其可靠性,并且其处理逻辑也不同于转发逻辑。那么,我们就可以使用 RSS来负载均衡其转发报文到多个核上,使用Flow Director将控制报文分配到指定的队列上,使用单独的核来处理。优点:帮助用户在设计时做到分而治之;节省了软件过滤数据报文的开销;避免了应用在不同核处理之间

2021-11-15 10:51:14 1836

原创 《Linux开源网络全栈详解》学习笔记——高性能数据平面——内核旁路

高性能数据平面数据平面的性能很大程度上取决于网络I/O的性能,而网络数据包从网卡到用户空间的应用程序需要经历多个阶段。当数据包到达网卡后,通过DMA复制到主机内存空间并触发中断,网络协议栈处理数据分组后再交由用户空间的应用程序进行处理,整个过程的多个阶段都存在着不可忽视的开销,主要有以下几点。 网卡中断 网卡中断:轮询与中断是操作系统与硬件设备进行I/O通信的两种方式。一般情况下,网络数据包的到来都是不可预测的,若采用轮询模式,则会造成很高的CPU负载,因此主流操作系统都会采用中断的方式来

2021-11-12 16:59:19 2386

原创 《深入浅出DPDK》——学习笔记——流分类

深入浅出DPDK——流分类与多队列流分类流分类指的是网卡依据数据包的特性将其分类的技术。分类的信息可以以不同不方式呈现给数据包的处理者,比如将分类信息记录于描述符中,将数据包丢弃或者将流导入某个或某些队列中。包的分类传统包的分类:IP、TCP、UDP甚至VXLAN、NVGRE等tunnel报文,该信息可以体现在数据包的接收描述符中。DPDK:Mbuf结构中含有相应的字段来表示网卡分析出的包的类型。网卡设备同时可以根据包的类型确定其关键字,从而根据关键字确定其收包队列。其中RSS和

2021-11-12 16:53:27 2809

原创 深入浅出DPDK——第八章第一节(多队列)

流分类与多队列多队列与流分类是当今网卡通用的技术。可以使网卡更好地与多核处理器、多任务系统配合,从而达到更高效率IO处理的目的。多队列网卡多队列的由来传统网卡的DMA队列有多个,网卡有基于多个DMA队列的分配机制。网卡多队列技术应该是与处理器的多核技术密不可分的。早期的计算机都是单核,但随着半导体技术的发展,处理器上的核数不断增加,此时单个处理器不足以满足高速网卡快速处理的需求。因此引入了多队列技术,可以将各个队列通过绑定到不同的核上来满足高速流量的需求。此外多队列技术也可以

2021-11-10 20:40:55 2042

原创 Linux开源网络全栈详解——笔记

Linux虚拟网络TAP/TUP设备TAP/TUN是Linux内核实现的一对虚拟网络设备,TAP工作在二层,TUN工作在三层。Linux内核通过TAP/TUP设备向绑定该设备的用户空间应用发送数据;反之,用户空间也可以像操作硬件网络设备那样,通过TAP/TUN设备发送数据。基于TAP驱动,即可以实现虚拟网卡的功能,虚拟机的每个vNIC都与Hypervisor中的一个TAP设备相连。当一个TAP设备被创建时,Linux设备文件目录下将会生成一个与之对应的字符设备文件,用户空间应用可以像打开普通文件

2021-11-10 15:57:07 1262

原创 深入浅出DPDK学习笔记——网卡性能优化

@文章来源于《深入浅出DPDK》深入浅出DPDK学习笔记——网卡性能优化DPDK的轮询模式DPDK采用了轮询或者混杂中断的模式来进行收包和发包,此前主流运行在操作系统内核态的网卡驱动程序基本都是基于异步中断处理模式。异步中断模式当有包进入网卡收包队列后,网卡会产生硬件(MSIX/MSI/INTX)中断,进而触发CPU中断,进入中断服务程序,在中断服务程序(包含下半部)来完成收包的处理。当然为了改善包处理性能,也可以在中断处理过程中加入轮询,来避免过多的中断响应次数。总体而言,基于异步中断信号模式的

2021-11-09 21:55:27 1219

Linux打包(归档)和压缩详解.mm

Linux打包(归档)和压缩详解

2021-11-29

认识DPDK.xmind

认识DPDK.xmind

2021-11-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除