Intel Application 应用设备队列(ApplicationDevice Queues,ADQ) 与 动态设备个性化(Dynamic DevicePersonalization,DDP)

2023-11-15

应用设备队列(ApplicationDevice Queues,ADQ)

Learn more at intel.com/ADQ

20年发布的x810系列网卡具备此功能

netdev2020

https://legacy.netdevconf.info/0x14/session.html?talk-ADQ-for-system-level-network-io-performance-improvements

Description

ADQ technology enables application-specific data steering, isolation, signaling, and rate limiting using scalable device queues and an optimized application thread to a device queue data path. ADQ goals are to increase predictability by reducing response time jitter, lower latency and improve throughput for applications using standard Linux networking stack and interfaces. This talk will describe ADQ performance benefits, how ADQ works and how developers can implement for applications which may benefit from this technology using an application example.
ADQ技术使用可扩展的设备队列和优化的设备队列数据路径的应用程序线程,实现特定于应用程序的数据控制、隔离、信令和速率限制。
ADQ的目标是通过减少响应时间抖动、降低延迟和提高使用标准Linux网络堆栈和接口的应用程序的吞吐量来提高可预测性。
这次演讲将通过一个应用程序的例子来描述ADQ的性能优势,ADQ是如何工作的,以及开发人员如何为应用程序实现这一技术。

ADQ improves performance by:
1)Isolating application traffic to its own dedicated queues.
2)Affinitizing an application thread to a hardware device queue, in conjunction with event polling interfaces like epoll, that creates a single producer consumer data flow, avoiding costly synchronizations/contentions.
3)Symmetric queuing ensuring egress/ingress traffic traverses symmetrically through a pre-configured Tx/Rx queue pair.
4)Rate limiting egress data traffic per application.
5)Reducing the number of context switches/second.
ADQ通过以下方式提高性能:
1)将应用程序流量隔离到自己的专用队列。
2)将应用程序线程绑定到硬件设备队列,结合事件轮询接口(如epoll),创建单个生产者消费者数据流,避免昂贵的同步/争用。
3)对称排队,确保出口/入口流量通过预先配置的Tx/Rx队列对对称穿越。
4)速率限制每个应用程序的出口数据流量。
5)减少每秒上下文切换的次数。

How does ADQ work?

ADQ provides applications with customizable ranges of dedicated hardware queues (can be viewed as queue groups). The TC MQPRIO interface is extended for this effect. The TC MQPRIO scheduler configures the traffic classes, queue layout and bandwidth rate limits and offloads these to the hardware. Hardware channels (VSIs) are created for the queue groups. Isolation of traffic to RX queues is achieved using a hardware switch filter (tc-flower based) redirecting flows to the queue group based on the application identifier. The hardware then selects the queue within queue group using RSS/Flow Director.

ADQ为应用程序提供了可定制的专用硬件队列范围(可以看作队列组)。为此,扩展了TC MQPRIO接口。TC MQPRIO调度器配置流量类、队列布局和带宽速率限制,并将它们卸载给硬件。为队列组创建硬件通道(VSIs)。通过使用硬件交换机过滤器(基于tc-flower)根据应用程序标识符将流重定向到队列组来实现对RX队列的流量隔离。然后,硬件使用RSS/Flow Director在队列组中选择队列。

For ADQ application specific queuing model to work in an optimized way, a synchronization-free, single producer consumer model is desirable. To accomplish this abstraction, a unique pipe is established between application thread and device queue using the following:
为了使特定于ADQ应用程序的队列模型以优化的方式工作,一个无同步的、单一生产者消费者模型是可取的。为了完成这个抽象,在应用程序线程和设备队列之间建立了一个唯一的管道,方法如下:

  1. Aligning application thread to queue which allows packet processing in application thread context while the thread is free to move across cores (yet, hardware queue does not change). The socket option SO_INCOMING_NAPI_ID was introduced so the applications could use this information to split the incoming flows among the threads based on the receive queue (aka NAPI_ID). Event polling (epoll) with busy polling device queues was also enabled in the kernel to accomplish this.
    对齐应用程序线程到队列,允许在应用程序线程上下文中进行包处理,同时线程可以自由地跨内核移动(然而,硬件队列不会改变)。引入了套接字选项SO_INCOMING_NAPI_ID,因此应用程序可以使用此信息在基于接收队列(aka NAPI_ID)的线程之间分割传入流。内核中还启用了使用繁忙轮询设备队列的事件轮询(epoll)来实现这一点。

  2. A symmetric queuing model was then implemented to align transmit queue with receive queue. Thus, transmit completion work is locked into the same queue-association that a given application is polling on avoiding overhead of triggering an interrupt on another CPU. When the application cleans up the receive packets during the busy poll, transmit completion may be processed along with it in the same thread context resulting in reduced latency.
    实现了一个对称队列模型,实现了发送队列和接收队列的对齐。因此,传输完成工作被锁定在同一个队列关联中,给定的应用程序为了避免在另一个CPU上触发中断而轮询该队列关联。当应用程序在繁忙轮询期间清理接收包时,可能会在同一个线程上下文中一起处理传输完成,从而减少延迟。

ADQ avoids resource starvation by allowing bandwidth management per application. This is done using TC MQPRIO for configuring the bandwidth rates per traffic class and offloading them to hardware. The hardware scheduler guarantees the specified transmit bandwidth for a given VSI.

ADQ通过允许对每个应用程序进行带宽管理来避免资源短缺。这是使用TC MQPRIO完成的,用于配置每个流量类的带宽速率并将它们卸载到硬件。硬件调度程序保证给定VSI的指定传输带宽。

ADQ also enables assigning RSS enabled set of queues to AF_XDP sockets. Enabling busy polling on AF_XDP sockets is being planned by associating NAPI_ID to an AF_XDP socket at the time of bind.
ADQ还允许将启用RSS的队列集分配给AF_XDP套接字。通过在绑定时将NAPI_ID关联到AF_XDP套接字,正在规划对AF_XDP套接字启用繁忙轮询。

ADQ is supported on next generation Intel 1/10/25/50/100Gbps NICs.

Slides:https://legacy.netdevconf.info/0x14/pub/slides/28/Application%20Device%20Queues%20for%20system-level%20network%20IO%20performance%20improvements.pdf
已转成PPT
Application Device Queues for system-level network IO performance improvements.pptx

Video:
https://www.youtube.com/watch?v=NWgXJwyKrqs

高优先级应用程序值得可预测的高性能
撰稿帕特里夏·库姆罗| 2019 年 5 月 9 日
https://itpeernetwork.intel.com/connectivity-adq/#gs.8ydqpj
2019 年 4 月 2 日,英特尔发布了下一代基础网络技术英特尔® 以太网 800 系列,其速度高达 100GbE,并具有许多新的创新功能。使新的英特尔以太网 800 系列与众不同的一项高级功能是应用设备队列 (ADQ)。ADQ 使管理员能够为优先网络服务指定某些应用程序,以确保特定的响应时间。这就像为拼车预留了一条快速车道。ADQ 以具有成本效益的方式提供快速且可预测的数据传输性能,应用程序开发人员和网络运营商可以依赖并相应地优化他们的应用程序。

传统上,连接性能是通过延迟和吞吐量来衡量的,即平均响应时间和数据移动量。然而,随着数据中心的扩展,可预测性变得同样重要,并根据延迟可变性或“抖动”来衡量。当添加更多服务器以支持不断增长的网络需求时,抖动将成为可扩展性的限制因素,并可能导致较差的最终用户体验。ADQ 的目标是通过大幅降低抖动确保高优先级应用程序不仅获得高性能,而且获得可预测的高性能。在云规模上,延迟和高吞吐量必须与可预测性相结合,以便公司满足服务水平协议 (SLA)。

ADQ 的数据中心应用
在这里插入图片描述
ADQ 的初始部署针对数据中心的不同层级(图 1. ADQ 在数据中心的初始应用
)。Aerospike *、Redis Labs * 和NGINX *等独立软件供应商 (ISV)对 ADQ 感到兴奋,英特尔正与这些公司密切合作,为英特尔® 以太网 800 系列优化 ADQ。

网络应用的加速数据包处理
AF Express 数据路径 (AF_XDP) 支持云原生解决方案的数据包处理。英特尔架构师观察到在基于第二代英特尔® 至强® 可扩展处理器的平台上的英特尔以太网 800 系列上使用 AF_XDP 和 ADQ 时加速数据包处理的初步结果。与不使用 ADQ 加速1 相比,使用 ADQ 加速 AF_XDP 使用的 CPU 内核数量大约减少了一半,从而释放了用于数据包处理的处理器内核,用于其他更重要的任务。随着内核的添加,数据包处理呈现出近乎线性的扩展性,从而使跨多个内核的聚合性能具有高度可扩展性。

网络可预测性的下一步
ADQ 通过更高的响应可预测性、更低的延迟和更好的吞吐量来提高应用程序性能。随着数据中心在新的以数据为中心的时代扩展,网络可预测性的重要性继续增长。使用 ADQ 的初始应用程序已经展示了很好的结果,并且得到了 ISV 社区的大力支持。最重要的是,新的英特尔以太网 800 系列上的 ADQ 有望成为更好、更一致地为最终用户服务的重要一步。

关于Patricia Kummrow
Patty Kummrow 是网络和边缘事业部的副总裁,也是英特尔公司以太网产品事业部的总经理。她领导英特尔® 以太网网络适配器、控制器和 IPU 的战略、架构、开发、制造和营销,以支持用于加速数据中心网络、存储和网络安全的下一代解决方案。Kummrow 在 CPU 设计和技术领导方面拥有二十年的经验。她曾领导多个团队为数据中心、网络、存储和自动驾驶应用开发英特尔处理器。她拥有德克萨斯大学电气工程学士学位和瓦尔登大学技术管理硕士学位。

技术文档:application-device-queues-technology-brief.pdf
已翻译 很重要

使用 ADQ 提高 Aerospike 的吞吐量和可预测性
https://www.intel.com/content/www/us/en/architecture-and-technology/ethernet/performance-testing-application-device-queues-with-aerospike.html
请添加图片描述

动态设备个性化(Dynamic DevicePersonalization,DDP)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Intel Application 应用设备队列(ApplicationDevice Queues,ADQ) 与 动态设备个性化(Dynamic DevicePersonalization,DDP) 的相关文章

随机推荐

  • 12个ggplot2扩展包帮你实现更强大的可视化

    ggplot2 Extension 转自 生信宝典 Bio Data 不一样的生信学习平台 ggplot2自从2007年推出以来 成为世界范围内下载最频繁 使用最广泛的R包之一 许多人包括ggplot2的创建人Hadley Wickham将
  • 单片机菜单

    单片机菜单结构设计 单片机 STM32F030F4 48MHz 开发环境 keil stm32cubemx 显示屏 LCD12864 一 准备工作 1 按键功能正常 本例用了3个按键 上按键 切换菜单里面的项目 中按键 执行菜单里面的项目
  • 与 CrackMapExec 结合攻击

    文章作者 Micropoor 原文链接 https micropoor blogspot com CrackMapExec弥补了MSF4下auxiliary scanner模块下的Command执行方式 但MSF5已解决该问题 在MSF4下
  • try-with-resource有什么作用,为了解决什么问题?

    Java中try with resources是一种方便且安全的资源管理方式 它可以在程序结束时自动关闭打开的资源 比如文件 网络连接等等 这个特性首次引入Java 7中 它为Java开发者提供了极大的便利 有效避免了因资源未关闭而导致的内
  • hive安装与配置详解

    1 hive下载地址http mirror bit edu cn apache hive 2 上传至software目录下 3 解压至指定目录 4 重命名hive 5 修改环境变量 6 让环境生效 7 查看hive版本 8 修改hive s
  • SCCM部署前的IIS、WSUS等准备

    SCCM部署前的IIS WSUS等准备 IIS是SCCM中非常重要的部署条件 SCCM部署中的很多环节都需要IIS的支持 因此 完成Active Directory的准备工作后 我们就开始IIS的准备工作 IIS的部署并不复杂 只需要安装一
  • sessionStorage 移动端兼容问题

    开发移动端项目 需要前端页面存储一些用户数据是一个常见的功能 sessionStorage和localStorage就是常用的选择 最近移动端项目用到sessionStorage时遇到一些问题 如 vivo手机自带浏览器 问题如下 A ht
  • 转载--网站数据统计分析中的日志收集原理及其实现

    http my oschina net leejun2005 blog 292709 转载于 https www cnblogs com benchan2015 p 4897378 html
  • Mysql(12)——聚集索引和非聚集索引

    MyISAM的索引树相关 主键索引树 这一部分我们之前在MyISAM的存储结构中也有所提及 我们也知道MyISAM使用B 树作为索引结构 叶节点的data域存放的是数据记录的地址 因为MyISAM存储引擎的数据和索引是分开存放的 分别是 M
  • redhat6.5 yum register 问题

    安装apache时 出现如下错误 configure error in usr local src httpd 2 2 24 srclib apr configure error no acceptable C compiler found
  • 【云原生之kubernetes实战】在k8s环境下部署Teleport堡垒机系统

    云原生之kubernetes实战 在k8s环境下部署Teleport堡垒机系统 一 Teleport介绍 1 Teleport介绍 2 本次实践说明 二 检查本地k8s环境 1 检查工作节点状态 2 检查系统pod状态 三 使用docker
  • java.sql.SQLException: No suitable driver found for 三种可能情况

    url user password 错了 没有导入 mysql connection jar包 数据库驱动没导入 你可能需要这个 Class forName com mysql cj jdbc Driver 数据库驱动问题
  • Quartus II not support the EP2C5F256I8 device,如何解决

    我自己前些天在运行项目时也发生了这个错误 事实上 我很困惑 因为我之前已经破解完成了 为什么有出现这个问题 报错提示 Error 102290 current license file does not support the EP2C5F
  • python量化交易招聘深圳_招聘兼职量化交易系统( python web版)

    需求描述 支持任务调度 分布式部署的 股票 期货 期权 港美股 数字货币 数据 回测 模拟 交易 可视化 多账户 纯本地量化解决方案 整个系统交易抽象为 用户信息管理 基础数据信息支持 策略管理 风控管理 交易执行模块 系统管理 回测系统七
  • Leetcode 142. 环形链表 II

    给定一个链表 返回链表开始入环的第一个节点 如果链表无环 则返回 null 为了表示给定链表中的环 我们使用整数 pos 来表示链表尾连接到链表中的位置 索引从 0 开始 如果 pos 是 1 则在该链表中没有环 说明 不允许修改给定的链表
  • 在Mac上使用GVM Tool安装Groovy、Grails环境

    一 下载gvmtool curl s get gvmtool net bash 命令运行后提示最后几句如下 Please open a new terminal or run the following in the existing on
  • Java-手动抛出异常

    Java 手动抛出异常 1 概念 关于异常对象的产生 系统自动生成的异常对象 手动生成一个异常对象 并抛出 throw 2 code举例 package p8exception p9 public class StudentTest pub
  • NRZ、NRZI编码

    RZ 编码 Return to zero Code 归零编码 在 RZ 编码中 正电平代表逻辑 1 负电平代表逻辑 0 每传输完一位数据 信号返回到零电平 信号线上会出现 3 种电平 正电平 负电平 零电平 从图上就可以看出来 因为每位传输
  • 数据分析系列之数据预处理

    在数据挖掘过程中 海量的原始数据存在大量的不一致 有缺失的数据 严重影响到数据挖掘的效率和准确率 数据清洗尤为重要 数据清洗之后进行或同时进行数据集成 转换 规约等一系列过程 该过程就是数据预处理 数据预处理一方面提高数据质量 另一方面使数
  • Intel Application 应用设备队列(ApplicationDevice Queues,ADQ) 与 动态设备个性化(Dynamic DevicePersonalization,DDP)

    英特尔X800系列十万兆以太网卡 支持ADQ与DDP优化 应用设备队列 ApplicationDevice Queues ADQ netdev2020 动态设备个性化 Dynamic DevicePersonalization DDP 应用