首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

面试题:如何理解 Linux 的零拷贝技术?

本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较大的帮助。...通常的做法是在 mmap 之前加锁,操作完之后解锁: 方法三:sendfile 从Linux 2.1版内核开始,Linux引入了sendfile,也能减少一次拷贝。...高性能网络 I/O 框架——netmap Netmap 基于共享内存的思想,是一个高性能收发原始数据包的框架,由Luigi Rizzo 等人开发完成,其包含了内核模块以及用户态库函数。...在 Netmap 框架下,内核拥有数据包池,发送环\接收环上的数据包不需要动态申请,有数据到达网卡时,当有数据到达后,直接从数据包池中取出一个数据包,然后将数据放入此数据包中,再将数据包的描述符放入接收环中...用户态程序最终通过 netmap_if 获取接收发送环 netmap_ring,进行数据包的获取发送。

1.8K30

一文看懂DPDK

大纲: 一、 网络IO的处境和趋势 二、 Linux + x86网络IO瓶颈 三、 DPDK的基本原理 四、 DPDK的基石UIO 五、 DPDK核心优化:PMD 六、 DPDK的高性能代码实现...二、Linux + x86网络IO瓶颈 在数年前曾经写过《网卡工作原理及高并发下的调优》一文,描述了Linux的收发报文流程。...Linux社区也提供了旁路机制Netmap,官方数据10G网卡1400万PPS,但是Netmap没广泛使用。其原因有几个: 1.Netmap需要驱动的支持,即需要网卡厂商认可这个方案。...2.Netmap仍然依赖中断通知机制,没完全解决瓶颈。 3.Netmap更像是几个系统调用,实现用户态直接收发包,功能太过原始,没形成依赖的网络开发框架,社区不完善。...采用HugePage减少TLB Miss 默认下Linux采用4KB为一页,页越小内存越大,页表的开销越大,页表的内存占用也越大。

57.9K3434

绝对干货!初学者也能看懂的DPDK解析

二、Linux + x86网络IO瓶颈 在数年前曾经写过《网卡工作原理及高并发下的调优》一文,描述了Linux的收发报文流程。...Linux社区也提供了旁路机制Netmap,官方数据10G网卡1400万PPS,但是Netmap没广泛使用。其原因有几个: 1.Netmap需要驱动的支持,即需要网卡厂商认可这个方案。...2.Netmap仍然依赖中断通知机制,没完全解决瓶颈。 3.Netmap更像是几个系统调用,实现用户态直接收发包,功能太过原始,没形成依赖的网络开发框架,社区不完善。...支持的网卡列表:https://core.dpdk.org/supported/,我们主流使用Intel 82599(光口)、Intel x540(电口) 四、DPDK的基石UIO 为了让驱动运行在用户态,Linux...采用HugePage减少TLB Miss 默认下Linux采用4KB为一页,页越小内存越大,页表的开销越大,页表的内存占用也越大。

2.1K21

网络功能虚拟化系列:NFV的开源软件包

交换: Linux网桥:这是一种通过IEEE 802.1D协议基于软件的交换机,自带的Linux发行版作为内核模块。...Vale/Netmap:类似于Linux网桥和OVS,Vale连接了物理或虚拟网络接口。然而,较之其他软件的交换机,它拥有更高性能(高吞吐量和低CPU使用率)和可扩展性。...更好的性能是通过Netmap的API来实现的,事实上,Vale 是作为Netmap分发(distribution)的一部分提供的。...BIRD项目旨在开发一个功能齐全的动态IP路由程序,主要是针对于(但不限于)Linux , FreeBSD和其他类UNIX系统和GNU通用公共许可证下发布的系统。...VYoS:VyOS是一款基于Linux的网络操作系统,它提供基于软件的路由功能,包括各种OSPF,BGP路由协议,集成了防火墙和V**的支持功能。

1.2K80

网络功能虚拟化系列:NFV的开源软件包

交换: Linux网桥:这是一种通过IEEE 802.1D协议基于软件的交换机,自带的Linux发行版作为内核模块。...Vale/Netmap:类似于Linux网桥和OVS,Vale连接了物理或虚拟网络接口。然而,较之其他软件的交换机,它拥有更高性能(高吞吐量和低CPU使用率)和可扩展性。...更好的性能是通过Netmap的API来实现的,事实上,Vale 是作为Netmap分发(distribution)的一部分提供的。...BIRD项目旨在开发一个功能齐全的动态IP路由程序,主要是针对于(但不限于)Linux , FreeBSD和其他类UNIX系统和GNU通用公共许可证下发布的系统。...VYoS:VyOS是一款基于Linux的网络操作系统,它提供基于软件的路由功能,包括各种OSPF,BGP路由协议,集成了防火墙和V**的支持功能。

1.5K110

NFV的开源软件包

交换: Linux网桥:这是一种通过IEEE 802.1D协议基于软件的交换机,自带的Linux发行版作为内核模块。...Vale/Netmap:类似于Linux网桥和OVS,Vale连接了物理或虚拟网络接口。然而,较之其他软件的交换机,它拥有更高性能(高吞吐量和低CPU使用率)和可扩展性。...更好的性能是通过Netmap的API来实现的,事实上,Vale 是作为Netmap分发(distribution)的一部分提供的。...BIRD项目旨在开发一个功能齐全的动态IP路由程序,主要是针对于(但不限于)Linux , FreeBSD和其他类UNIX系统和GNU通用公共许可证下发布的系统。...VYoS:VyOS是一款基于Linux的网络操作系统,它提供基于软件的路由功能,包括各种OSPF,BGP路由协议,集成了防火墙和V**的支持功能。

2.6K60

从DPDK和eBPF感受一下Smart NIC

说实话,本文不该提DPDK的,应该提的是类似netmap,PF_RING的这种东西: https://www.ntop.org/products/packet-capture/pf_ring/ 只不过,...DPDK似乎找到了一种正确的方法,即直接将数据包拉到用户态来处理,绕过操作系统内核(Tilera Core以及通用的netmap当然也是这种方式)。...整个过程从编程到部署,非常通用: 目前netronome SmartNIC已经实现了该JIT编译器,参见Linux内核目录树: 1|linux-source-5.xx/drivers/net/ethernet...https://lwn.net/Articles/675826/ 【多端口switch模型,Linux反客为主,打破网络设备厂商的垄断】 通用的switchdev驱动模型之前,Linux需要厂商的专门工具套件操作交换机...,控制权在厂商,switchdev之后,通用接口被实现,交换机正式纳入Linux网络设备体系,Linux至此可以用标准接口实现交换机的控制面和管理面了,至此以后,各大互联网厂商的自研交换机才开始遍地开花

2.6K10

Linux网络数据转发平面的变迁-从内核协议栈到DPDKXDP

大意是说,随着IO设备的进化,它们的存取/传输速率已经超过了CPU到内存的存储/传输速率,再也不再是慢速 外设 了,所以,对这些快速设备的管理和操作要发生改变才能适应,从这个意义上讲,几乎一成不变的Linux...这可能是现如今人们纷纷转向DPDK/netmap或者XDP的本质原因了。怎么说呢?周末回上海前,发一篇感想。 在人们的印象中,一台标准的计算机包含三大件: CPU,即中央处理器。...于是操作系统为了管理这些慢速设备,不得不设计出复杂的机制来进行速率的适配,数据的缓存等,无论是Unix/Linux还是Windows,均是在这个假设下设计出来的。...自2012年开始我就一直在关注Linux网络协议栈转发平面的性能优化,那个时代所谓的网络优化几乎都是基于Linux内核协议栈的优化,在还没有智能网卡,DPDK也不火爆的时代,能做的只是优化协议栈,当时除了华为等大厂也很少有做这块工作的

1.7K21

SDN实战团分享(三十九):我的SDN入坑之路

Linux工具栈 我始终认为Linux是一个大宝库,无论是它的内核的架构、解决问题的思路还是它上面提供的丰富的网络工具都非常值得我们学习。...我的一个学习方式是从libpcap开始的,用它实现了tcpdump类似的功能,顺藤摸瓜去分析理解Linux网卡的工作机制和libpcap的性能瓶颈、pf_ring、netmap、dpdk做出的改进和努力...网卡作为一个Linux设备它或多或少都和I/O系统直接打交道,所以我认为理解Linux I/O架构对于理解网卡的工作原理是很有必要的。...这部分的书比较杂《深入Linux内核架构》、《Linux内核探秘 深入解析文件系统和设备驱动架构与设计》、《精通Linux内核网络》(之前推荐过) OpenFlow 可能大家已经感觉到了,我上面罗列的所有东西都是和...具体可以参考netmap、pf_ring、dpdk的设计目标。 Q:是学习java好还是学习JavaScript 好呢 A:这个话题会引发世界大战的,我觉得学习PHP好。呵呵。

1.3K61

从 10 Gb 到 40 Gb,从百万级到千万级转发,打造高性能 TGW

perf:linux自带的一种性能分析工具。 背景 TGW是一套实现多网接入的负载均衡系统,为腾讯业务提供着外网接入服务。...当然,业界也有其他的解决方案,比如netmap,为啥就选择DPDK呢?...原因主要有2点: (1)netmap仍然采用中断,当pps高时,中断容易打断本来正在处理报文的CPU工作,影响吞吐;而DPDK默认采用轮询,CPU自己判断网卡队列是否有报文了,不打断CPU工作。...(2)netmap仍避免不了使用系统调用,而系统调用时需要切换上下文,势必造成CPU cache-misses,无法发挥CPU极致性能。而DPDK都在用户态实现,消除了系统调用的开销。...TGW主流的机器只有64GB内存,2个socket,假设取其中56GB挂载hugepage(留6GB左右内存给系统使用),如果采用1G大小的hugepage,则每个socket最多可以使用28GB内存(linux

5.5K85

DPDK性能压测系列-1:dperf 工具简介

由于DPDK将网卡从linux 内核接管,从而提高了数据转发的性能,正因为如此我们接触到了dperf这一款高性能的开源网络压力测试仪,是Linux基金会旗下的DPDK官方生态项目,它可以对网元进行基本打流...内核收包流程描述 1、性能低、资源消耗大; 2、连接失败高:压力较大时,Linux协议栈或FreeBSD协议栈会因为资源不足,导致出现连接失败,会掩盖了被测设备的缺陷,影响测试结果; 3、不能觉察丢包...大量数据到来会触发频繁的中断(softirq)开销导致系统无法承受 需要把包从内核缓冲区拷贝到用户缓冲区,带来系统调用和数据包复制的开销 对于很多网络功能节点来说,TCP/IP协议并非是数据转发环节所必需的 NAPI/Netmap...等虽然减少了内核到用户空间的数据拷贝,但操作系统调度带来的 cache替换也会对性能产生负面影响 ; 再次:dperf高性能采用,DPDK采用内核旁路技术的UIO描述 DPDK通过linux的UIO...为了使得网卡驱动(PMD Driver)运行在用户态,实现内核旁路,Linux提供了UIO(User Space IO)机制。

3.5K50
领券