面向用户态Click的I/O优化框架的设计与实现
发布时间:2021-01-20 22:31
软件路由器在现代网络的发展中发挥着越来越重要的作用,而Click是具有良好模块化设计的软件路由器,为开发和验证新的路由协议等应用提供了很好的软件平台。由于实现机制问题,用户态Click的I/O性能严重限制报文处理能力,影响以Click软件路由器为平台的系统的整体性能。针对现有Click用户态I/O机制的不足,提出了一种面向用户态Click的I/O优化框架,通过采用轮询技术、零拷贝技术和报文预取技术提升了I/O性能。实验结果表明:优化后的用户态Click的I/O性能提升了121倍。
【文章来源】:计算机科学与探索. 2016,10(12)北大核心
【文章页数】:8 页
【部分图文】:
中断方式和轮询方式的对比
刘松等:面向用户态Click的I/O优化框架的设计与实现4设计与实现本文所提出的用户态Click软件优化框架如图3所示。该框架不依赖于诸如SR-IOV(single-rootI/Ovirtualization)的硬件优化方案,完全采用软件方式实现,既避免了原有的系统开销,提高了系统性能,又可以充分利用用户态Click的稳定性高、易于扩展的优势,在可编程性和高性能方面取得了良好的平衡。轮询方式收发报文技术的实现:在用户态使用IntelDPDK数据层面开发套件中的轮询驱动,从网卡中直接获取报文到用户层并形成报文的接收队列,通过创建新的Click组件,在Click中使用轮询CPU队列的方式访问DPDK中的报文接收队列收取报文,并将报文存储在用户态的使用无锁环管理的大页内存中。待Click处理完报文之后,Click组件再以轮询CPU队列的方式将报文按照必要的信息提交给指定的发送队列,轮询模式的驱动库则会通过定时轮询发送队列的方式将报文发送到指定的网卡并释放内存空间,完成整个报文的收发操作。零拷贝技术的实现:报文从网卡收取到用户层之后,提取一定量的必要信息,比如数据长度、报文头指针等,通过缓冲区管理库的操作,生成Click内部处理报文格式,以文件描述符的形式交给Click组件进行后续处理。完成指定的报文操作后,再通过缓冲区管理库,根据报文的文件描述符及必要的附加信息将Click报文还原成DPDK中的内部报文结构,并提交给发送队列进行发送。整个报文的操作过程只进行了文件描述符的传递,实际报文数据没有进行多余的拷贝工作。报文预取技术的实现:Click组件进行报文处理主要通过任务队列对报文进行操作,在处理一个报文的时候提前将下一个需要处理的报文的文件描述符以及对应的数据从内存中预取到Cache中,且在内存管理中采用大页内存和无
ontiersofComputerScienceandTechnology计算机科学与探索2016,10(12)网卡中收报文性能达到5880Kp/s,性能提升大约62倍;使用本文提出的面向用户态Click的I/O优化框架,同时采用报文零拷贝、轮询、缓存预取等技术的情况下,对64Byte报文的转发性能为11400Kp/s,性能提升大约121倍。通过简单计算可知,使用报文零拷贝和缓存预取技术可以将包转发能力提高将近60倍。此外,在实验测试过程中,对于超过128Byte长度大小的报文转发速度与设备发包速度相当,即可以实现完全转发。(2)吞吐率结果与分析与包转发速率相对应,图4(b)和表2展示了不同技术下的吞吐率,从吞吐率的表现可以得知,原生态用户态Click的吞吐率表现最差,其最大吞吐率只有981Mb/s,相同报文长度下,使用3种优化技术最大吞吐率达到9860Mb/s。测试结果显示,从128Byte长度大小的报文开始,同时使用轮询、零拷贝、报文预取等技术优化的Click用户态的吞吐率与测试仪报文发送的吞吐率相等。此外,对于优化后的ClickI/O在多核、多线程时的表现也进行了简单测试,由于经过优化的Click的I/O能力单核、单线程已经超过了5Gb/s吞吐率,使用多核、多进程吞吐率一直保持单接口满负荷状态(≈10Gb/s)。Fig.4Throughputandforwardingrateindifferentmechanisms图4不同技术下的吞吐率和转发性能表现Table1Forwardingrateindifferentmechanisms表1不同技术下的转发速率技术NativeClickClick+PollModeClick+Optimization不同帧长下的转发速率/(Kp/s)64Byte94588011400128Byte9457808446256Byte9445304530512Byte88235023501024Byte84119711971514Byte81812812Table2Throughputindifferentmechanisms表2不同技术下的吞吐?
本文编号:2989906
【文章来源】:计算机科学与探索. 2016,10(12)北大核心
【文章页数】:8 页
【部分图文】:
中断方式和轮询方式的对比
刘松等:面向用户态Click的I/O优化框架的设计与实现4设计与实现本文所提出的用户态Click软件优化框架如图3所示。该框架不依赖于诸如SR-IOV(single-rootI/Ovirtualization)的硬件优化方案,完全采用软件方式实现,既避免了原有的系统开销,提高了系统性能,又可以充分利用用户态Click的稳定性高、易于扩展的优势,在可编程性和高性能方面取得了良好的平衡。轮询方式收发报文技术的实现:在用户态使用IntelDPDK数据层面开发套件中的轮询驱动,从网卡中直接获取报文到用户层并形成报文的接收队列,通过创建新的Click组件,在Click中使用轮询CPU队列的方式访问DPDK中的报文接收队列收取报文,并将报文存储在用户态的使用无锁环管理的大页内存中。待Click处理完报文之后,Click组件再以轮询CPU队列的方式将报文按照必要的信息提交给指定的发送队列,轮询模式的驱动库则会通过定时轮询发送队列的方式将报文发送到指定的网卡并释放内存空间,完成整个报文的收发操作。零拷贝技术的实现:报文从网卡收取到用户层之后,提取一定量的必要信息,比如数据长度、报文头指针等,通过缓冲区管理库的操作,生成Click内部处理报文格式,以文件描述符的形式交给Click组件进行后续处理。完成指定的报文操作后,再通过缓冲区管理库,根据报文的文件描述符及必要的附加信息将Click报文还原成DPDK中的内部报文结构,并提交给发送队列进行发送。整个报文的操作过程只进行了文件描述符的传递,实际报文数据没有进行多余的拷贝工作。报文预取技术的实现:Click组件进行报文处理主要通过任务队列对报文进行操作,在处理一个报文的时候提前将下一个需要处理的报文的文件描述符以及对应的数据从内存中预取到Cache中,且在内存管理中采用大页内存和无
ontiersofComputerScienceandTechnology计算机科学与探索2016,10(12)网卡中收报文性能达到5880Kp/s,性能提升大约62倍;使用本文提出的面向用户态Click的I/O优化框架,同时采用报文零拷贝、轮询、缓存预取等技术的情况下,对64Byte报文的转发性能为11400Kp/s,性能提升大约121倍。通过简单计算可知,使用报文零拷贝和缓存预取技术可以将包转发能力提高将近60倍。此外,在实验测试过程中,对于超过128Byte长度大小的报文转发速度与设备发包速度相当,即可以实现完全转发。(2)吞吐率结果与分析与包转发速率相对应,图4(b)和表2展示了不同技术下的吞吐率,从吞吐率的表现可以得知,原生态用户态Click的吞吐率表现最差,其最大吞吐率只有981Mb/s,相同报文长度下,使用3种优化技术最大吞吐率达到9860Mb/s。测试结果显示,从128Byte长度大小的报文开始,同时使用轮询、零拷贝、报文预取等技术优化的Click用户态的吞吐率与测试仪报文发送的吞吐率相等。此外,对于优化后的ClickI/O在多核、多线程时的表现也进行了简单测试,由于经过优化的Click的I/O能力单核、单线程已经超过了5Gb/s吞吐率,使用多核、多进程吞吐率一直保持单接口满负荷状态(≈10Gb/s)。Fig.4Throughputandforwardingrateindifferentmechanisms图4不同技术下的吞吐率和转发性能表现Table1Forwardingrateindifferentmechanisms表1不同技术下的转发速率技术NativeClickClick+PollModeClick+Optimization不同帧长下的转发速率/(Kp/s)64Byte94588011400128Byte9457808446256Byte9445304530512Byte88235023501024Byte84119711971514Byte81812812Table2Throughputindifferentmechanisms表2不同技术下的吞吐?
本文编号:2989906
本文链接:https://www.wllwen.com/guanlilunwen/ydhl/2989906.html