CN115210693A - 具有可预测时延的存储事务 - Google Patents
具有可预测时延的存储事务 Download PDFInfo
- Publication number
- CN115210693A CN115210693A CN202080098562.8A CN202080098562A CN115210693A CN 115210693 A CN115210693 A CN 115210693A CN 202080098562 A CN202080098562 A CN 202080098562A CN 115210693 A CN115210693 A CN 115210693A
- Authority
- CN
- China
- Prior art keywords
- poll
- group
- queue
- poll group
- queues
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims description 90
- 238000003860 storage Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 13
- 239000004744 fabric Substances 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 6
- 239000000835 fiber Substances 0.000 claims description 6
- 230000032258 transport Effects 0.000 description 26
- 230000006870 function Effects 0.000 description 16
- 238000013507 mapping Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- VEUMANXWQDHAJV-UHFFFAOYSA-N 2-[2-[(2-hydroxyphenyl)methylideneamino]ethyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCN=CC1=CC=CC=C1O VEUMANXWQDHAJV-UHFFFAOYSA-N 0.000 description 1
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 229910052760 oxygen Inorganic materials 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002207 retinal effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文描述的示例涉及至少一个处理器,该至少一个处理器可以执行轮询组,以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以使用所述轮询组并且不使用其他轮询组来访问。在一些示例中,所述轮询组在不运行其他轮询组的处理器上执行。在一些示例中,所述至少一个处理器被配置为:在第二处理器上执行第二轮询组,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符。
Description
要求优先权
本申请根据35 U.S.C.365(c)要求于2020年4月15日提交的题为“STORAGETRANSACTIONS WITH PREDICTABLE LATENCY”的美国申请第16/849,915号的优先权,该美国申请在其整体上并入本文。
背景技术
快速非易失性存储器(NVMe)规范描述了用于通过快速外围部件互连(PCIe)端口访问数据存储系统的系统。例如,在NVM Express™基础规范的修订版1.3c(2018)及其前身、后继者和专有变体中描述了NVMe,通过引用在其整体上并入这些规范。NVMe允许主机设备将存储区域指定为单独的命名空间。命名空间可以是非易失性存储器中的可寻址域,其具有已被格式化用于块访问的所选数量的存储块。命名空间可以包括固态驱动器(SSD)中介质的可寻址部分,或者跨多个SSD或其他数据存储设备的多设备存储器空间。命名空间ID(NSID)可以是用于相关联命名空间的唯一标识符。主机设备可以通过为一个或多个块指定NSID、控制器ID和相关联的逻辑地址(例如,逻辑块地址(LBA))来访问特定的非易失性存储器。
附图说明
图1描绘了兼容NVMe-oF和互联网小型计算机系统接口(iSCSI)协议的系统的示例。
图2示出了用于使用TCP传输的NVMe-oF的架构。
图3示出了不同轮询组中的循环(round robin)连接分发。
图4描绘了基于队列标识符分配连接的方式。
图5描绘了应用设备队列(ADQ)的使用示例。
图6示出了可以向轮询组分配连接的存储应用程序。
图7示出了其中使用基于组的异步I/O策略的示例。
图8描绘了过程。
图9描绘了系统。
图10描绘了网络接口。
图11描绘了环境。
具体实施方式
分布式块存储系统通过呈现存储在跨大型远程存储设备池分散的区段中的逻辑块设备,向应用程序提供块设备功能性。要使用这些逻辑块设备,应用程序确定要访问的区段的位置。计算平台可以使用组构(fabric)或网络来访问存储设备。存在使能使用网络或组构访问存储设备的各种存储协议。例如,组构上快速非易失性存储器(NVMe-oF)规范被设计成使能访问远程兼容NVMe固态驱动器(SSD)。例如,至少在快速NVM基础规范修订版1.4(2019)中描述了NVMe-oF。兼容NVMe-oF设备为可通过网络或组构访问的远程系统提供高性能NVMe存储驱动器。
图1描绘了兼容NVMe-oF和互联网小型计算机系统接口(iSCSI)协议的系统的示例。随着兼容NVMe固态驱动器(SSD)的出现,重新使用现有的iSCSI协议来对于远程主机设备允许访问SSD可以涉及协议转换100(例如,NVMe到SCSI到iSCSI和iSCSI到SCSI到NVMe)。NVMe-oF协议可以通过为NVMe事务提供各种传输层来缓解这样的问题,所述传输层诸如远程直接存储器存取(RDMA)、光纤通道(FC)以及最近的传输控制协议(TCP)。
在2018年,针对NVMe-oF发布了涉及TCP传输的规范(例如,TP-8000 NVMe-oF™TCP传输绑定)。T-8000的目的是重新使用现有的联网基础设施,因为传统的网络接口控制器(NIC)和交换机可能不支持远程直接存储器访问(RDMA)相关的协议。在支持TCP传输的情况下,可以发生对现有的网络基础设施的重新使用,以简化从iSCSI到NVMe-oF的过渡。因此,存在NVMe-oF定义并支持的几种公知的传输层协议(例如,RDMA、FC和TCP)。开发人员可以根据规范使用一种或多种不同的传输来实现目标或发起方的NVMe-oF,以向远程主机(发起方)呈现NVMe子系统。
TCP上NVMe-oF可以允许通过互联网进行通信,而RDMA或FC上NVMe-oF用在数据中心中并且在距离方面受限。然而,在一些情况下,TCP上NVMe-oF可能较慢,其具有较少的确定过渡时间。软件和硬件解决方案可以改进用户空间中NVMe-oF TCP传输性能。软件解决方案包括利用用户空间TCP/IP堆栈、数据平面开发套件(DPDK)、存储性能开发套件(SPDK)。硬件卸载允许利用一些卸载方法(例如,现场可编程门阵列(FPGA),或者将由CPU核心施行的操作卸载到RDMA核心中),以便为其他重要任务节省CPU资源,从而改进应用程序的性能。
一些数据中心可以具有目标性能确定性,诸如满足合同要求或作为竞争优势。为该环境中的分布式系统应用程序提供所期望的性能确定性(例如,百分之99.99的时延、具有一致的吞吐量和中央处理器单元(CPU)利用率)可能是一项挑战。在许多情况下,联网接口是对不确定性能(例如时延和尾部时延)的主要贡献因素之一,因为它可能成为服务器上应用程序性能的瓶颈。尾部时延可以指代来自系统的响应时间占对它所服务的输入/输出(I/O)请求的所有响应的百分比,与它的大部分响应时间相比,该来自系统的响应时间花费最久。尾部时延可以指代以非常低的概率看到的最坏情况的时延。尾部时延也可以从累积概率分布来测量,并且它可以具有最低的时延X,使得时延> X以不大于10-15的概率出现。
各种实施例试图使用对网络接口可用的应用设备队列特征以及减少系统调用和上下文切换的忙轮询方案,来减少TCP上NVMe-oF事务的时延和尾部时延。各种实施例提供专用且隔离的队列来将从网络接口接收到的分组存储到用户空间,或者提供专用且隔离的队列来存储要由网络接口传送的分组。各种实施例使用网络接口的应用设备队列(ADQ)作为隔离队列。
已配置业务类(TC)上的TCP连接可以分配给隔离队列,并且队列的队列标识符可以由底层内核以实现相关联应用程序唯一性的方式确定。例如,如果应用程序已经分配了4个队列,则由内核分配的队列标识符(例如,NAPI_ID)可以是从400、401、402到403,并且用于每个连接的队列标识符可以由内核以公平性随机分发。例如,如果4个队列上存在200个连接,并且内核尝试在这4个队列之间进行负载平衡,则可以为每个队列标识符分配50个连接。然而,可以在加权的基础上分配连接,使得连接不是均匀分发的。例如,连接放置可以通过诸如服务级别协定(SLA)、轮询组的工作负载、核心的活动或不活动级别等之类的因素来加权。套接字上具有相同队列标识符的连接可以分发到相同的轮询组。轮询组可以在专用CPU核心(例如,线程)上执行,因此具有相同队列标识符的连接可以由相同的CPU核心执行,以避免处理相同连接的不同CPU之间的资源争用。轮询组可以检测与轮询组相关联的所有连接的事件。可以应用轮询模式,该轮询模式允许应用程序在不切换到内核模式的情况下轮询用户空间中的数据,以减少从内核空间到用户空间的上下文切换和系统调用。
在一些示例中,在NVMe-oF TCP目标开始之后,服务监听器在不同的服务门户(例如,TCP套接字(例如,<IP地址,端口>))上操作,并且当在发射器和目标之间添加新的套接字连接时,可以将连接分配给队列和队列标识符(例如,NAPI_ID)。
各种实施例可以应用于基于SPDK加速框架的任何其他存储应用程序,例如,互联网小型计算机系统接口(iSCSI)、网络文件系统(NFS)。各种实施例可以应用于存储器池事务或工作请求的任何排队(例如,功能即服务(FaaS))。
图2示出了用于使用TCP传输的NVMe-oF的架构。该架构可以由具有对一个或多个固态驱动器(SSD)或其他存储器或存储设备的访问权的目标设备和系统使用。网络接口202可以提供专用队列(例如,ADQ)。网络接口202可以基于连接标识符(例如,TCP套接字)将应用程序业务过滤到专用队列集。例如,至少在RFC 793中描述了TCP。在一些示例中,网络接口202可以使用网络业务类(TC)过滤来将应用程序的TCP连接映射到专用队列。应用程序可以使用优先级设置将传入的TCP连接绑定到(一个或多个)指定的队列(例如,setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &priority, 4))。在该示例中,fd可以是设置套接字优先级的文件描述符,并且优先级可以是由网络接口标识的用于队列分配的定义的TC(业务类)。队列可以是特定于应用程序的,使得仅该应用程序可以使用该队列来接收或传送分组,并且不与另一个应用程序共享队列,以避免来自访问同一队列的不同应用程序的争用。如果执行应用程序的核心处理来自不同队列的连接,则核心从不同队列取回数据,并且结果可能发生争用和锁定,这可能引起性能降级和分组处理时间的增加。附加地,特定于应用程序的传出网络带宽可以由网络接口202进行速率限制,该网络接口202可以用于为特定的应用程序划分网络带宽或对其进行优先化。
TCP传输接受器206可以在核心0的线程上注册为非计时器轮询器。在一些示例中,TCP传输接受器206可以部署在核心1上的线程上。可以确定TCP传输接受器206在具有由应用程序确定的策略的指定CPU核心上运行。TCP传输接受器206可以监听由传输管理的门户(例如,通过spdk_sock_accept函数)。当存在传入的套接字连接事件时,可以创建具有套接字信息的新的TCP连接(例如,spdk_sock),并且这样的连接可以由专用的非定时器轮询器(例如,TCP传输轮询组204-0)来管理。对于传入的套接字连接,应用程序可以发出针对Linux的getsockopt系统调用,以获得硬件队列标识符信息(例如,NAPI_ID)。TCP传输接受器206可以将具有相同队列标识符(例如,NAPI_ID)的连接映射到相同的TCP传输轮询组。一些实施例使用循环(RR)方案来选择用于处理接收到的分组的CPU核心,并通过事件调用发送异步消息,以让专用线程将TCP连接添加到其轮询组。在一些示例中,可以使用诸如SLA、轮询组的工作负载、核心的活动或非活动级别等之类的因素来使用加权循环分配。
对于为NVMe-oF目标分配的n个硬件队列,假设NAPI_ID范围从A,A+1……A+n-1,例如,存在n个不同的队列。当TCP传输接受器206接受连接时,它将检查连接的NAPI_ID,并选择为相同的NAPI_ID连接服务的轮询组。如果没有找到这样的轮询组,则TCP传输接受器206将选择服务较少数量连接的轮询组,并标记服务这样的NAPI_ID连接的轮询组。ADQ可以通过根据相同NAPI_ID将连接分群组在一起而加速相同CPU核心对多个连接的处理,并避免因争用队列访问(例如,读取或写入)而导致的锁定或暂缓。
以下是为连接分配优先级并确定连接的队列标识符的示例伪代码。可以将轮询组分配给连接,因为该轮询组与队列标识符相关联。
/*创建listenfd*/
int listenfd= socket(AF_INET, SOCK_STREAM,0);
/*将优先级数设置成与为应用程序配置的脚本中的设置相同*/
setsockopt(listen_fd, SOL_SOCKET, SO_PRIORITY,&priority, sizeof(priority));
/*定义地址*/
struct sockaddr_in addr;
addr.sin_family = AF_INET;//协议ipv4
addr.sin_port = htons(5888); //端口
addr.sin_addr.s_addr = htonl(INADDR_ANY);//使用来自主机的地址
/*将监听器fd绑定到地址*/
if(bind(listenfd,(const struct sockaddr *)&addr ,sizeof(addr))==-1)
{
ERR_EXIT("bind");
}
/*监听套接字*/
if(listen(listenfd,SOMAXCONN)<0)
{
ERR_EXIT("Listen");
}
struct sockaddr_in peeraddr;
socklen_t peerlen = sizeof(peeraddr);
/*取得新连接*/
int new_fd ;
new_fd= accept(listenfd,(struct sockaddr*)&peeraddr,&peerlen);
/*取得napi_id信息并将其放入napi_id变量*/
getsockopt(new_fd, SOL_SOCKET, SO_INCOMING_NAPI_ID, napi_id, &salen);
执行listenfd针对新文件描述符引起对<ipaddress,port>的注意。执行setsockopt为该新的文件描述符设置优先级。调用getsockopt在“new_fd”上获得队列标识符(NAPI_ID)。不同的new_fd表示活动连接,该活动连接可以在读取/写入的情况下在该连接上使用。如果连接被映射到轮询组,则该连接的文件描述符(fd)可以由组轮询来管理。如果轮询组由eventfd机制管理,则fd将经由epoll_ctl函数添加到epoll组中。当连接准备关闭时,它也将经由epoll_ctl但利用不同的参数从epoll组中移除。
TCP传输接受器206维护全局映射列表,该全局映射列表维护用于NAPI_ID和轮询组之间的关系的映射。下面示出了用于对轮询组添加或移除连接的伪代码表示。
为新连接分配轮询组:
经由NAPI_ID搜索全局映射列表:
如果存在映射X,则在找到的映射条目中增加X.ref_num;在映射和返回中增加轮询组(X.Polling_group)拥有的connection_number;
如果映射不存在,则选择具有最小connection_number的轮询组(将该轮询组标记为PG_F)。创建映射条目,并更新全局映射列表中的<NAPI_ID, PG_F, ref_num=1>。并且还增加用于查找轮询组的collection_number(PG_F.connection_num++)
当连接被毁坏时移除映射:
经由NAPI_ID搜索全局映射列表,必须找到名为X条目的映射条目,然后
减少条目X的ref_num,例如X. ref_num--;
减少X中的轮询组X.polling_group的连接数;
Connection_number--;
如果X. ref_num为0,则释放全局映射列表中的X的条目。
在该示例中,TCP传输轮询组204-0可以在核心0的线程上执行,而TCP传输轮询组204-1可以在核心1的线程上执行。线程可以是由CPU核心执行的程序的实例。当TCP连接被添加到对应的TCP轮询组时,该连接拥有的套接字被添加到套接字轮询组。例如,Linux中的epoll相关操作(例如,epoll_ctl)可以用于将套接字信息添加到套接字轮询组中,并且可以使用套接字组轮询。例如,epoll_wait可以用于检查用于连接的读取数据事件。在轮询组中,如果检测到针对套接字文件描述符(fd)的读取事件,则NVMe/TCP PDU(分组数据单元)协议解析模块可以发出读取系统调用来读取该fd上的内容,以便标识PDU。例如,如果协议解析模块确定NVMe命令在PDU(例如,在SPDK中具有NVME_TCP_PDU_TYPE_IC_REQ类型的PDU)中,则协议解析模块可以根据NVMe-oF协议进行NVMe命令操作。当拥有的套接字的状态检测到TCP连接关闭时,该连接从套接字轮询组中移除,并且不再被该组轮询。
可以在专用CPU核心上执行轮询组。轮询组可以管理该组中所有基于TCP套接字的连接的生命周期,例如,处理每个基于套接字的连接上的I/O,包括读取或写入I/O;监视来自网络的每个套接字描述符上的事件中的数据;以及针对任何错误情况(例如,网络连接损坏)终止套接字。在同一轮询组中,为了检测一个或多个连接上的传入数据,可以使用epoll方案来检测一个或多个连接的读取事件,以确定哪个连接是活动的或不活动的。例如,epoll是针对可伸缩I/O事件通知机制的Linux内核系统调用。在一些示例中,可以使用FreeBSD的kqueue代替epoll。如果应用程序由于正在调用忙轮询而是警戒/活动的,则TCP传输轮询组204-0或204-1可以针对所接收的分组延迟对应用程序的中断。例如,以下步骤可以在轮询期间发生:0)经由(Linux中的epoll_create函数)创建epoll事件组,以及1)调用epoll_wait函数来确定哪个连接具有传入数据。
对于接收的分组,驱动程序将分组复制到主机存储器(例如,直接存储器存取(DMA)),将描述符写入主机存储器,但在忙轮询期间,驱动程序不向应用程序发出中断,并且应用程序在忙轮询中不进入睡眠状态。例如,当应用程序忙于轮询时,驱动程序可以推迟中断启用。应用程序可以保持唤醒,主动忙于轮询队列,以查看工作是否已经到达。轮询模式允许应用程序轮询数据,并在用户空间中保持活动,并且不切换到内核模式而且也不引起上下文切换。在一些情况下,中断引起从用户空间切换到内核空间来处理中断,这引起从用户空间到内核空间的上下文切换,并且扰乱应用程序和降低I/O处理速度。
应用程序可以执行与3GPP无线电接入网络(RAN)和核心网络(CN)、来自宽带论坛和互联网工程任务组(IETF)的传输网络(TN)、ITU-T(GSTR-TN5G)、IEEE(NGFI 1914)等相关的分组处理。分组处理可以包括使用网络功能虚拟化(NFV)、软件定义联网(SDN)、虚拟化网络功能(VNF)、演进分组核心(EPC)或5G网络切片。在欧洲电信标准协会(ETSI)规范或来自ETSI开源Mano(OSM)组的开源NFV管理和编排(MANO)中描述了NFV的一些示例实现。VNF可以包括在通用可配置硬件(诸如防火墙、域名系统(DNS)、缓存或网络地址转换(NAT))上执行的服务链或虚拟化任务序列,并且可以在虚拟执行环境中运行。VNF可以作为服务链链接在一起。在一些示例中,至少对于长期演进(LTE)接入,EPC是3GPP指定的核心架构。5G网络切片可以在相同物理网络基础设施上提供虚拟化和独立逻辑网络的多路复用。
分组可以包括报头和有效载荷。报头可以是媒体访问控制(MAC)源和目的地址、以太网类型、网际协议(IP)源和目的地址、IP协议、传输控制协议(TCP)端口号、虚拟局域网(VLAN)或多协议标签交换(MPLS)标签。
为了传输对NVMe命令的响应,对于在目标侧的NVMe-oF应用程序,轮询组可以:a)读取连接上的数据,并且组成相关的NVMe命令,并引起后端NVMe子系统异步执行那些命令;b)当后端NVMe子系统完成NVMe命令时,根据NVMe命令的结果组成响应PDU,并使用写入相关操作在套接字连接上写入数据。
图3示出了向不同轮询组中的循环连接分发。如果存在n个轮询组,并且假设存在3n个连接,则可以使用循环法来调度这些连接。循环法可以根据IP地址、端口分发连接。可以由第一轮询组(例如,轮询组0)处理具有0、n、2n的连接id;可以由第二轮询组(例如,轮询组1)处理1、n+1、2n+1的连接id;并且可以由第(n-1)轮询组(例如,轮询组n-1)处理n-1、2n-1、3n-1的连接id。
图4描绘了基于队列标识符分配连接的方式。在该示例中,队列标识符对应于NAPI_ID。如果使用基于NAPI_ID的调度,假设也存在N个硬件队列,并且传入连接的NAPI_ID从A循环到A + N-1,则线程仍将处理具有相同NAPI_ID的连接。处理连接的线程或CPU核心访问相同队列。对于套接字连接,应用程序发出用于Linux的getsockopt系统调用以获得NAPI_ID信息(例如,ADQ队列号),并且TCP传输接受器将具有相同NAPI_ID的连接映射到相同的套接字轮询组。套接字轮询组在绑定到核心的线程上运行,尽管该线程可以迁移到另一个核心。
图5描绘了用于各种用途的ADQ分配的示例。ADQ的使用可以将隔离队列专用于应用程序,并且这些队列可以由执行相关联应用程序的(一个或多个)线程专门访问。例如,使用ADQ,NIC可以将内容分配给一个或多个队列,其中一个或多个队列被映射以供软件访问,软件可以包括轮询组、存储应用程序或应用程序,并且一个或多个队列可以在NIC或主机上的存储器中被分配。ADQ可以防止网络业务争用,由此不同的应用程序或进程试图访问相同的队列并引起锁定或争用,并且分组可用性的性能(例如,时延)变得不可预测。此外,ADQ为接收到的分组或要传送的分组的专用应用程序业务队列提供服务质量(QoS)控制。在美国专利10,547,559中描述了用于实现ADQ或队列的各种技术,该美国专利通过引用在其整体上并入本文。
根据各种实施例,通过基于标识符(例如,NAPI_ID)向轮询组分配连接,ADQ可以专用于使用TCP的NVMe-oF通信的单个轮询组。使用TCP作为传输层,应用程序可以减少上下文切换,以实现更低的分组接收时延。例如,对于N个队列并且一个队列被分配一个唯一的NAPI_ID,则所有的NAPI_ID组成包含N个不同的NAPI_ID的集合。运行轮询组的线程被分配N个不同的NAPI_ID的子集,使得轮询组针对一个或多个NAPI_ID专门使用一个或多个队列,并且没有其他轮询组访问该一个或多个队列,使得具有相同NAPI_ID的TCP连接由相同的线程处理。应用程序可以通过Sock_FD上的属性(例如,Linux中具有“SO_INCOMING_NAPI_ID”的getsockopt)来确定哪些硬件队列被分配给NAPI_ID。在该示例中,示出了轮询组500-1和500-2。轮询组500-1可以被分配使用一个ADQ,而轮询组500-2可以被分配使用两个ADQ。
图6示出了可以向轮询组分配连接的示例存储应用程序。将活动TCP连接分配给轮询组的示例可以包括:1)在套接字初始化模块中创建监听器套接字;2)基于所接受的套接字文件描述符(标示为Sock_FD)经由监听器套接字上的接受调用,确定传入的TCP连接;3)TCP调度器模块将连接分派给运行轮询组的指定线程以进行监视;以及4)在TCP连接处理线程(标示为I/O线程)中,I/O线程以异步方式一起监视被分派的连接。
在开始应用程序之前,套接字初始化模块602调用Linux中的“setsockopt”POSIXAPI,以设置针对监听器套接字的优先级,从而引起存储应用程序使用(一个或多个)配置的隔离队列。接受器逻辑模块604可以通过getsockopt(例如,如果支持的话,通过Linux中的SO_INCOMING_NAPI_ID)获得TCP连接的NAPI_ID。NAPI_ID可以表示为TCP连接分配的硬件队列。例如,如果应用程序使用具有3个硬件队列的业务类,则由监听器套接字接受的传入TCP连接具有三个不同的NAPI_ID,例如789、790和791。TCP连接调度器606可以使用这些NAPI_ID来构造基于NAPI_ID的调度。在一些示例中,TCP连接调度器606可以应用循环方案来将连接公平地分派给线程,而不考虑属于TCP连接的NAPI_ID。在一些示例中,TCP连接调度器606可以应用基于NAPI_ID的调度来通过搜索轮询该NAPI_ID的现有轮询组来调度连接。如果这样的轮询组存在,则TCP连接调度器606标识执行该现有轮询组的I/O线程,并将连接分派给该线程。如果不存在分配的I/O线程,则TCP连接调度器606标识具有最少数量的连接的I/O线程,并启动新的轮询组来在所标识的线程上监视NAPI_ID。执行轮询组的I/O线程可以通过监视网络接口卡(NIC)中具有ADQ或隔离队列的队列来获得“数据输入”指示符(接收的分组)。ADQ或队列可以被分配给特定的NAPI_ID。轮询组还可以用异步方式在连接上进行读取/写入,以便使用分配的队列从具有ADQ的NIC传送数据。轮询组可以应用epoll技术来轮询I/O活动。
图7示出了其中由线程执行的轮询组中的连接使用基于组的异步I/O策略的示例。各种实施例提供对组中连接的轮询,并向操作系统发出较少的系统调用数以了解:(1)哪些连接具有传入数据(2)以分群组方式在那些活动连接上发送数据(例如,通过一轮中的一个系统调用,例如,经由libiao库提供的“io_submit”);(3)以分群组的方式在活动连接上读取数据(例如,通过一轮中的一个系统调用,例如,经由linux中的liburing库提供的“io_uring_submit”)。对于由专用线程服务的TCP连接,epoll可以用于跟踪套接字上的POLLIN事件,以确定哪个套接字接收了数据或分组。可以经由事件文件描述符进行系统调用来监视注册的Sock_FD的事件,以从许多Sock_FD收集POLLIN事件。
在一些示例中,对于读取操作处理,在一轮期间,连接最多可以准备一个读取任务。可以合并对于Sock_FD的读取操作,并且进行一个系统调用来提交I/O(例如,经由libaio引擎使用io_submit或者经由liburing引擎使用io_uring_submit)。基于组的I/O提交可以节省系统调用开销。例如,如果在32个连接上存在写入操作,则连接上的I/O写入可以被收集并作为一个io_submit发出(例如,使用libaio库)。以这种方式,可以避免一轮中的31个系统调用。当提交针对读取任务的I/O操作时,可以查询内核来提供I/O。
在一些示例中,对于写入操作处理,在一轮中,连接最多可以准备一个写入任务。可以合并用于Sock_FD的写入操作,并且进行一个系统调用来提交I/O(例如,经由libaio引擎使用io_submit或者经由liburing引擎使用io_uring_submit)。基于组的I/O提交可以节省系统调用开销。例如,如果在64个连接上存在写入操作,则连接上的I/O写入可以被收集并作为一个io_submit发出(例如,使用libaio库)。以这种方式,可以避免一轮中的63个系统调用。当提交针对写入任务的I/O操作时,可以调用一些函数(例如Linux中liburing库中的“io_uring_peek_cqe”)来查询内核是否已经完成了用户空间中的应用程序所请求的I/O。
图8描绘了示例过程。该过程可以用于为使用TCP作为传输层的NVMe-oF通信提供可预测的时延。然而,可以使用其他传输层,诸如RDMA、InfiniBand、光纤通道、用户数据报协议(UDP)、快速用户数据报协议(UDP)互联网连接(QUIC)等等。在802,存储应用程序为存储事务的传送和接收配置隔离队列的使用。例如,应用程序可以是使用NVMe或NVMe-oF与合作伙伴通信的存储应用程序。可以在对包括主机系统的网络接口可访问的存储器中提供隔离队列。例如,隔离队列可以是ADQ。
在804,存储应用程序将队列与一个或多个连接相关联。例如,存储应用程序可以将任何新的TCP连接与队列标识符(例如,NAPI_ID)相关联。此外,从与队列标识符的关联中移除任何终止的套接字连接。可以分配一个或多个队列和对应的队列标识符供(一个或多个)连接使用。
在806,为与相同队列标识符相关联的(一个或多个)连接分配轮询组。在一些示例中,轮询组可以在不执行另一个轮询组的专用CPU核心上执行。在一些示例中,轮询组可以使用epoll方案来检测与相同队列标识符相关联的连接的I/O事件。
在808,网络接口可以将连接分配给专用的一个或多个队列。例如,网络接口可以应用业务类(TC)过滤来将应用程序的TCP连接映射到专用的一个或多个队列。
在810,轮询组针对应用程序对任何分组的接收或任何分组的传送进行轮询。可以应用轮询方案,其中应用程序不进入睡眠状态,并且应用程序针对任何新分组的接收或任何分组的传送进行轮询。当应用程序轮询时,驱动程序可以推迟中断。分组可以在专用于连接的一个或多个队列中被接收,或者使用专用于连接的一个或多个队列被提供以用于传送。为了传送对NVMe命令的响应,轮询组可以:a)根据NVMe命令的结果组成响应PDU,并使用写入相关操作在套接字连接上写入数据用于传送。
图9描绘了系统。根据本文描述的实施例,各种实施例可以用于针对接收的分组或用于传送的分组进行轮询。根据本文描述的实施例,该系统可以使用本文描述的实施例来运行存储应用程序,以分配对接收的分组或用于传送到核心的分组的轮询。系统900包括处理器910,处理器910为系统900提供对指令的处理、操作管理和执行。处理器910可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或者为系统900提供处理的其他处理硬件,或者处理器的组合。处理器910控制系统900的总体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等或者这样的器件的组合。
在一个示例中,系统900包括耦合到处理器910的接口912,该接口912可以表示用于需要较高带宽连接的系统部件的较高速接口或高吞吐量接口,所述系统部件诸如存储器子系统920或图形接口部件940或加速器942。接口912表示接口电路,其可以是独立的部件或者集成到处理器管芯上。在存在的情况下,图形接口940对接到图形部件,用于向系统900的用户提供视觉显示。在一个示例中,图形接口940可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指代具有近似100 PPI(每英寸像素)或更大的像素密度的显示,并且可以包括诸如全HD(例如,1080p)、视网膜显示、4K(超高清晰度或UHD)或其他之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或二者来生成显示。在一个示例中,图形接口940基于存储在存储器930中的数据或基于由处理器910执行的操作或二者来生成显示。
加速器942可以是可编程或固定功能卸载引擎,其可以由处理器910访问或使用。例如,加速器942之中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)之类的密码服务、密码、哈希/认证能力、解密或其他能力或服务。在一些实施例中,附加地或替代地,加速器942之中的加速器提供如本文所述的现场选择控制器能力。在一些情况下,加速器942可以集成到CPU中或者通过各种设备(例如,到包括CPU并提供与CPU的电接口的主板或电路板的连接器)连接到CPU。例如,加速器942可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑以及诸如现场可编程门阵列(FPGA)的可编程处理元件。加速器942可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者可以使图形处理单元可用于供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括强化学习方案、Q学习方案、深度Q学习或异步优势行动者-评论家(A3C)、组合神经网络、递归组合神经网络或其他AI或ML模型中的任一个或组合。可以使多个神经网络、处理器核心或图形处理单元可用于供AI或ML模型使用。
存储器子系统920表示系统900的主存储器,并且为处理器910执行的代码或执行例程中将使用的数据值提供存储。存储器子系统920可以包括一个或多个存储器设备930,诸如只读存储器(ROM)、闪存、诸如DRAM的一种或多种随机存取存储器(RAM)变体或者其他存储器设备或者这样的设备的组合。存储器930除其他事物之外还存储并托管操作系统(OS)932,以提供用于在系统900中执行指令的软件平台。附加地,应用程序934可以在来自存储器930的OS 932的软件平台上执行。应用程序934表示具有它们自己的操作逻辑来执行一个或多个功能的执行的程序。进程936表示向OS 932或一个或多个应用程序934或组合提供辅助功能的代理或例程。OS 932、应用程序934和进程936提供软件逻辑来为系统900提供功能。在一个示例中,存储器子系统920包括存储器控制器922,其是生成命令并向存储器930发出命令的存储器控制器。将理解,存储器控制器922可以是处理器910的物理部分或接口912的物理部分。例如,存储器控制器922可以是集成到具有处理器910的电路上的集成存储器控制器。
虽然未具体说明,但是将理解,系统900可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将部件通信地或电气地耦合在一起,或者既通信地又电气地耦合部件。总线可以包括物理通信线、点对点连接、桥、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围部件互连(PCI)总线、超级传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(火线)中的一个或多个。
在一个示例中,系统900包括接口914,该接口914可以耦合到接口912。在一个示例中,接口914表示接口电路,该接口电路可以包括独立部件和集成电路。在一个示例中,多个用户接口部件或外围部件或二者耦合到接口914。网络接口950向系统900提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口950可以包括以太网适配器、无线互连部件、蜂窝网络互连部件、USB(通用串行总线)或其他基于有线或无线标准的或专有的接口。网络接口950可以将数据传送到处于相同数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口950可以从远程设备接收数据,这可以包括将接收到的数据存储到存储器中。各种实施例可以与网络接口950、处理器910和存储器子系统920结合使用。
在一个示例中,系统900包括一个或多个输入/输出(I/O)接口960。I/O接口960可以包括一个或多个接口部件,用户通过该一个或多个接口部件与系统900交互(例如,音频、字母数字、触觉/触摸或其他对接)。外围接口970可以包括上面没有具体提及的任何硬件接口。外围设备通常指代从属地连接到系统900的设备。从属连接是其中系统900提供软件平台或硬件平台或二者的连接,操作在所述软件平台或硬件平台或二者上执行,并且用户与所述软件平台或硬件平台或二者交互。
在一个示例中,系统900包括以非易失性方式存储数据的存储子系统980。在一个示例中,在某些系统实现中,存储子系统980的至少某些部件可以与存储器子系统920的部件重叠。存储子系统980包括(一个或多个)存储设备984,(一个或多个)存储设备984可以是或包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光学的盘或组合。存储设备984以持久状态保持代码或指令和数据986(例如,尽管至系统900的电力中断,但该值仍被保留)。尽管存储器930通常是向处理器910提供指令的执行或操作存储器,但是存储设备984一般可以被认为是“存储器”。尽管存储设备984是非易失性的,但是存储器930可以包括易失性存储器。在一个示例中,存储子系统980包括控制器982以与存储设备984对接。在一个示例中,控制器982是接口914或处理器910的物理部分,或者可以包括处理器910和接口914二者中的电路或逻辑。
易失性存储器是在至设备的电力中断的情况下其状态(以及因此存储在其中的数据)不确定的存储器。动态易失性存储器需要刷新存储在设备中的数据来维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器),或者诸如同步DRAM(SDRAM)的某种变体。易失性存储器的另一个示例包括高速缓存或静态随机存取存储器(SRAM)。如本文所述的存储器子系统可以与多种存储器技术兼容,所述多种存储器技术诸如DDR3(双倍数据速率版本3,原始版本由JEDEC(联合电子设备工程委员会)于2007年6月27日发布)、DDR4(DDR版本4,初始规范由JEDEC于2012年9月发布)、DDR4E(DDR版本4)、LPDDR3(低功耗DDR版本3,JESD209-3B,JEDEC于2013年8月发布)、LPDDR4(LPDDR版本4,JESD209-4,JEDEC于2014年8月初始发布)、WIO2(宽输入/输出版本2,JESD229-2,JEDEC于2014年8月初始发布)、HBM(高带宽存储器,JESD325,JEDEC于2013年10月初始发布)、LPDDR5(当前正在由JEDEC进行讨论)、HBM2(HBM版本2,当前正在由JEDEC进行讨论)或其他存储器技术或存储器技术的组合以及基于此类规范的衍生或扩展的技术。
非易失性存储器(NVM)设备是这样一种存储器:即使至设备的电力中断,该存储器的状态也是确定的。在一个实施例中,NVM设备可以包括诸如NAND技术的块可寻址存储器设备,或者更具体地,诸如多阈值级NAND闪速存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或者某种其他NAND)。NVM设备还可以包括字节可寻址原地写入三维交叉点存储器设备,或其他字节可寻址原地写入NVM设备(也称为持久性存储器),诸如单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、Intel®Optane™存储器、使用硫族化物相变材料(例如硫族化物玻璃)的NVM设备、电阻存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备或上述任何设备的组合或其他存储器。
电源(未描绘)为系统900的部件提供电力。更具体地,电源通常对接到系统900中的一个或多个电力供应部,以向系统900的部件提供电力。在一个示例中,电力供应部包括AC到DC(交流到直流)适配器,以插入壁装电源插座中。这样的AC电源可以是可再生能量(例如太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电力供应部包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源可以包括内部电池、交流电流供应部、基于运动的电力供应部、太阳能电力供应部或燃料电池源。
在示例中,系统900可以使用处理器、存储器、存储装置、网络接口和其他部件的互连计算滑架来实现。可以使用高速互连,诸如PCIe、以太网或光学互连件(或其组合)。
本文的实施例可以在各种类型的计算和联网装备中实现,所述各种类型的计算和联网装备诸如交换机、路由器、机架和刀片式服务器,诸如在数据中心和/或服务器群环境中采用的那些。数据中心和服务器群中使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片式服务器。这些服务器经由各种网络配置在通信中互连,所述各种网络配置诸如将服务器集分区成局域网(LAN),在LAN之间具有适当的交换和路由设施以形成私有的内联网。例如,云托管设施可以通常采用具有大量服务器的大型数据中心。刀片包括被配置为执行服务器类型功能的单独计算平台,即“卡上服务器”。因此,刀片包括对常规服务器共有的部件,包括主印刷电路板(主板),其提供用于耦合适当的集成电路(IC)和安装到板上的其他部件的内部布线(例如,总线)。
在示例中,系统900可以使用处理器、存储器、存储装置、网络接口和其他部件的互连计算滑架来实现。可以使用高速互连,诸如:以太网(IEEE 802.3)、远程直接存储器存取(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、用户数据报协议(UDP)、快速用户数据报协议(UDP)互联网连接(QUIC)、融合以太网上RDMA(RoCE)、快速外围部件互连(PCIe)、英特尔快速路径互连(QPI)、英特尔超路径互连(UPI)、英特尔片上系统组构(IOSF)、Omnipath、快速计算链路(CXL)、超传输、高速组构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、高速缓存相干互连加速器(CCIX)、3GPP长期演进(LTE)(4G)、3GPP5G及其变体。可以使用诸如组构上NVMe(NVMe-oF)或NVMe之类的协议将数据复制或存储到虚拟化存储节点。
图10描绘了可以使用实施例或由实施例使用的网络接口。各种实施例可以用于以本文描述的方式管理存储事务。例如,可以使用本文描述的实施例从网络接口传送分组,以为具有相同队列标识符的连接上接收或传送的分组提供专用队列(例如,ADQ),并且过滤接收的业务以分配给相关联的一个或多个队列。网络接口1000可以包括收发器1002、处理器1004、传送队列1006、接收队列1008、存储器1010和总线接口1012以及DMA引擎1026。收发器1002可以能够接收和传送符合适用协议的分组,所述协议诸如IEEE 802.3中描述的以太网,尽管也可以使用其他协议。收发器1002可以经由网络介质(未描绘)从网络接收分组和向网络传送分组。收发器1002可以包括物理层(PHY)电路1014和媒体访问控制(MAC)电路1016。PHY电路1014可以包括编码和解码电路(未示出),以根据适用的物理层规范或标准对数据分组进行编码和解码。MAC电路1016可以被配置为将要传送的数据组装成分组,该分组包括目的地址和源地址连同网络控制信息和错误检测哈希值。MAC电路1016可以被配置为通过验证数据完整性、移除前导和填充以及提供分组内容以供更高层处理来处理接收到的分组的MAC报头。
处理器1004可以是处理器、核心、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或允许对网络接口1000进行编程的其他可编程硬件设备的任何组合。例如,处理器1004可以提供中间队列的分配或取消分配。例如,“智能网络接口”可以使用处理器1004在网络接口中提供分组处理能力。
分组分配器1024可以使用本文所述的时隙分配或RSS提供对接收到的分组的分发,以供多个CPU或核心处理。当分组分配器1024使用RSS时,分组分配器1024可以基于接收到的分组的内容来计算哈希或做出另一个确定,以确定哪个CPU或核心要处理分组。
中断合并器1022可以执行中断调节,由此网络接口中断合并器1022在向主机系统生成中断以处理(一个或多个)接收到的分组之前,等待多个分组到达或等待超时期满。接收段合并(RSC)可以由网络接口1000执行,由此传入分组的部分被组合成分组的段。网络接口1000将该合并的分组提供给应用程序。
直接存储器存取(DMA)引擎1026可以将分组报头、分组有效载荷和/或描述符直接从主机存储器复制到网络接口或反之直接从网络接口复制到主机存储器,而不是将分组复制到在主机处的中间缓冲器,并且然后使用另一复制操作从中间缓冲器复制到目的缓冲器。
存储器1010可以是任何类型的易失性或非易失性存储器设备,并且可以存储用于对网络接口1000进行编程的任何队列或指令。传送队列1006可以包括由网络接口传送的数据或对数据的引用。接收队列1008可以包括由网络接口从网络接收的数据或对数据的引用。描述符队列1020可以包括引用传送队列1006或接收队列1008中的数据或分组的描述符。总线接口1012可以提供与主机设备(未描绘)的接口。例如,总线接口1012可以与外围连接、外围部件互连(PCI)、快速PCI、PCI-x、串行ATA(SATA)和/或通用串行总线(USB)兼容接口兼容(尽管可以使用其他互连标准)。
图11描绘了包括多个计算机架1102的环境1100,一些计算机架包括机架顶部(ToR)交换机1104、吊舱管理器1106和多个汇集系统抽屉。各种实施例可以用于以本文描述的方式执行存储事务。通常,汇集的系统抽屉可以包括汇集的计算抽屉和汇集的存储抽屉。可选地,汇集的系统抽屉也可以包括汇集的存储器抽屉和汇集的输入/输出(I/O)抽屉。在图示的实施例中,汇集的系统抽屉包括Intel® XEON®汇集的计算机抽屉1108和Intel®ATOM™汇集的计算抽屉1110、汇集的存储抽屉1112、汇集的存储器抽屉1114和汇集的I/O抽屉1116。一些汇集的系统抽屉经由高速链路1118连接到ToR交换机1104,所述高速链路诸如40吉比特/秒(Gb/s)或100Gb/s以太网链路或100+ Gb/s硅光子学(SiPh)光学链路。
多个计算机架1102可以经由其ToR交换机1104互连(例如,互连至吊舱级交换机或数据中心交换机),如通过至网络1120的连接所图示的。在一些实施例中,计算机架1102的组经由(一个或多个)吊舱管理器1106作为单独的吊舱来管理。在一个实施例中,单个吊舱管理器用于管理吊舱中的机架。替代地,分布式吊舱管理器可以用于吊舱管理操作。
环境1100进一步包括用于管理环境各方面的管理接口1122。这包括管理机架配置,其具有被存储为机架配置数据1124的对应参数。
在一些示例中,本文所述的网络接口和其他实施例可以与基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容接入点)、纳米站(例如,用于点对多点(PtMP)应用程序)、内部数据中心、外部数据中心、边缘网络元件、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义的联网以跨物理数据中心和分布式多云环境交付应用程序工作负载的数据中心)结合使用。
可以使用硬件元件、软件元件或二者的组合实现各种示例。在一些示例中,硬件元件可以包括设备、部件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在一些示例中,软件元件可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以根据任何数量的因素而变化,如给定实现所期望的,所述因素诸如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个组合。
可以使用或作为制品或至少一个计算机可读介质实现一些示例。计算机可读介质可以包括存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可以包括存储或维持指令的非暂时性存储介质,所述指令当由机器、计算设备或系统执行时,使得机器、计算设备或系统执行根据所描述示例的方法和/或操作。指令可以包括任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或语法来实现,用于命令机器、计算设备或系统执行特定功能。可以使用任何合适的高级、低级、面向对象、可视化、编译和/或解释编程语言来实现指令。
至少一个示例的一个或多个方面可以通过存储在至少一个机器可读介质上的表示性指令实现,所述表示性指令表示处理器内的各种逻辑,所述表示性指令当由机器、计算设备或系统读取时,使得机器、计算设备或系统制造逻辑以执行本文所述的技术。被称为“IP核心”的此类表示可以被存储在有形的机器可读介质上,并被供应到各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定都指代同一示例或实施例。本文所述的任何方面可以与本文所述的任何其他方面或类似方面相组合,而不管这些方面是否是针对同一附图或元素来描述的。附图中描绘的块功能的划分、省略或包括并不推断出用于实现这些功能的硬件部件、电路、软件和/或元件将一定被划分、省略或包括在实施例中。
可以使用表述“耦合”和“连接”连同其派生词描述一些示例。这些术语不一定意图作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可以意味着两个或更多个元件彼此不直接接触,但是仍然彼此合作或交互。
本文中的术语“第一”、“第二”等不标示任何次序、数量或重要性,而是用于区分一个元素与另一个元素。本文的术语“一”和“一个”不标示数量的限制,而是标示存在至少一个所引用的项目。本文使用的关于信号的术语“断言”标示信号的状态,在该状态中信号是活动的,并且可以通过向信号施加逻辑0或逻辑1的任何逻辑电平来实现该状态。术语“跟随”或“之后”可以指代紧接在某个或某些其他事件之后或者在某个或某些其他事件之后。根据替代实施例,也可以执行其他步骤序列。此外,取决于特定的应用,可以添加或移除附加的步骤。可以使用改变的任何组合,并且受益于本公开的本领域普通技术人员将理解其许多变型、修改和替代实施例。
诸如短语“X、Y或Z中的至少一个”之类的分离性语言除非另有具体说明,否则在如通常用于呈现项目、术语等的上下文内理解,可以是X、Y或Z,或者它们的任何组合(例如,X、Y和/或Z)。因此,这样的分离性语言通常不意图并且不应该暗示某些实施例要求X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。附加地,诸如短语“X、Y和Z中的至少一个”的连接性语言除非另有具体说明,否则也应理解为意指X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可以包括下述示例中的任何一个或多个以及任何组合。
示例1包括一种计算机实现的方法,包括:分配轮询组,以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以仅使用所述轮询组并且不使用其他轮询组来访问。
示例2包括任何示例,并且包括分配所述轮询组以在不运行其他轮询组的中央处理单元(CPU)核心上执行。
示例3包括任何示例,并且包括分配第二轮询组以在第二中央处理单元(CPU)核心上执行,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与可以仅使用所述第二轮询组访问的一个或多个队列相关联。
示例4包括任何示例,并且包括向队列标识符分配新连接,并为所述新连接的队列标识符分配轮询组。
示例5包括任何示例,并且包括基于连接的终止,从其队列标识符中取消分配所终止的连接,并从轮询中取消分配针对与所终止的连接相关联的输入/输出操作的轮询组。
示例6包括任何示例,其中所述一个或多个队列包括由网络接口分配的至少一个队列,用于软件的专门访问,并且所述软件包括轮询组。
示例7包括任何示例,其中所述轮询组执行忙轮询模式,并且推迟中断以标识至少一个输入或输出操作,直至忙轮询模式结束之后。
示例8包括任何示例,其中所述存储事务包括使用传输层的组构上快速非易失性存储器,所述传输层包括传输控制协议(TCP)、InfiniBand、光纤通道或用户数据报协议(UDP)中的一个。
示例9包括任何示例,并且包括非暂时性计算机可读介质,所述非暂时性计算机可读介质包括指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:执行轮询组,以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以使用所述轮询组并且不使用其他轮询组来访问。
示例10包括任何示例,其中所述轮询组在不运行其他轮询组的处理器上执行。
示例11包括任何示例,并且包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:在第二处理器上执行第二轮询组,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与所述第二轮询组可以访问但所述轮询组不可访问的一个或多个队列相关联。
示例12包括任何示例,并且包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:向队列标识符分配新连接,并为所述新连接的队列标识符分配轮询组。
示例13包括任何示例,并且包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:基于连接的终止,从其队列标识符中取消分配所终止的连接,并从轮询中取消分配针对与所终止的连接相关联的输入/输出操作的轮询组。
示例14包括任何示例,其中所述一个或多个队列包括对网络接口可访问的至少一个应用设备队列(ADQ)。
示例15包括任何示例,其中所述轮询组执行忙轮询模式,并且推迟中断以报告输入/输出事务,直至忙轮询模式结束之后。
示例16包括任何示例,其中所述存储事务包括使用传输层的组构上快速非易失性存储器,所述传输层包括传输控制协议(TCP)、InfiniBand、光纤通道或用户数据报协议(UDP)中的一个。
示例17包括任何示例,并且包括一种装置,所述装置包括:网络接口;高速缓存;以及耦合到所述网络接口和所述高速缓存的至少一个中央处理单元(CPU)处理器,所述至少一个CPU处理器被配置为:执行轮询组以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以使用所述轮询组并且不使用其他轮询组来访问。
示例18包括任何示例,其中所述轮询组在不运行其他轮询组的处理器上执行。
示例19包括任何示例,其中所述至少一个处理器被配置为:在第二处理器上执行第二轮询组,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与可以使用所述第二轮询组访问但所述轮询组不可访问的一个或多个队列相关联。
示例20包括任何示例,其中所述一个或多个队列包括由所述网络接口分配的至少一个队列,用于软件的专门访问,并且所述软件包括轮询组。
Claims (21)
1.一种计算机实现的方法,包括:
分配轮询组,以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以仅使用所述轮询组并且不使用其他轮询组来访问。
2.根据权利要求1所述的方法,包括分配所述轮询组以在不运行其他轮询组的中央处理单元(CPU)核心上执行。
3.根据权利要求1所述的方法,包括分配第二轮询组以在第二中央处理单元(CPU)核心上执行,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与可以仅使用所述第二轮询组访问的一个或多个队列相关联。
4.根据权利要求1所述的方法,包括向队列标识符分配新连接,并为所述新连接的队列标识符分配轮询组。
5.根据权利要求1所述的方法,包括基于连接的终止,从其队列标识符中取消分配所终止的连接,并从轮询中取消分配针对与所终止的连接相关联的输入/输出操作的轮询组。
6.根据权利要求1所述的方法,其中所述一个或多个队列包括由网络接口分配的至少一个队列,用于软件的专门访问,并且所述软件包括所述轮询组。
7.根据权利要求1所述的方法,其中所述轮询组执行忙轮询模式,并且推迟中断以标识至少一个输入或输出操作,直至忙轮询模式结束之后。
8.根据权利要求1所述的方法,其中所述存储事务包括使用传输层的组构上快速非易失性存储器,所述传输层包括传输控制协议(TCP)、InfiniBand、光纤通道或用户数据报协议(UDP)中的一个。
9.一种非暂时性计算机可读介质,包括指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:
执行轮询组,以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以使用所述轮询组并且不使用其他轮询组来访问。
10.根据权利要求9所述的计算机可读介质,其中所述轮询组在不运行其他轮询组的处理器上执行。
11.根据权利要求9所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:
在第二处理器上执行第二轮询组,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与所述第二轮询组可以访问但所述轮询组不可访问的一个或多个队列相关联。
12.根据权利要求9所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:
向队列标识符分配新连接;以及
为所述新连接的队列标识符分配轮询组。
13.根据权利要求9所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使得所述一个或多个处理器:
基于连接的终止,从其队列标识符中取消分配所终止的连接;以及
从轮询中取消分配针对与所终止的连接相关联的输入/输出操作的轮询组。
14.根据权利要求9所述的计算机可读介质,其中所述一个或多个队列包括对网络接口可访问的至少一个应用设备队列(ADQ)。
15.根据权利要求9所述的计算机可读介质,其中所述轮询组执行忙轮询模式,并且推迟中断以报告输入/输出事务,直至忙轮询模式结束之后。
16.根据权利要求9所述的计算机可读介质,其中所述存储事务包括使用传输层的组构上快速非易失性存储器,所述传输层包括传输控制协议(TCP)、InfiniBand、光纤通道或用户数据报协议(UDP)中的一个。
17.一种装置,包括:
网络接口;
高速缓存;以及
耦合到所述网络接口和所述高速缓存的至少一个中央处理单元(CPU)处理器,所述至少一个CPU处理器被配置为:
执行轮询组以轮询与第一组一个或多个特定队列标识符相关联的存储事务,其中所述一个或多个特定队列标识符与一个或多个队列相关联,所述一个或多个队列可以使用所述轮询组并且不使用其他轮询组来访问。
18.根据权利要求17所述的装置,其中所述轮询组在不运行其他轮询组的处理器上执行。
19.根据权利要求17所述的装置,其中所述至少一个处理器被配置为:
在第二处理器上执行第二轮询组,其中所述第二轮询组针对第二组一个或多个特定队列标识符轮询存储事务,所述第二组一个或多个特定队列标识符不同于所述第一组的一个或多个特定队列标识符,其中所述第二组一个或多个特定队列标识符与可以使用所述第二轮询组访问但所述轮询组不可访问的一个或多个队列相关联。
20.根据权利要求17所述的装置,其中所述一个或多个队列包括由所述网络接口分配的至少一个队列,用于软件的专门访问,并且所述软件包括所述轮询组。
21.根据权利要求17所述的装置,包括服务器、机架或数据中心,其中所述服务器、机架或数据中心与所执行的轮询组通信来处理所接收的存储事务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/849,915 US20200241927A1 (en) | 2020-04-15 | 2020-04-15 | Storage transactions with predictable latency |
US16/849915 | 2020-04-15 | ||
PCT/US2020/065116 WO2021211172A1 (en) | 2020-04-15 | 2020-12-15 | Storage transactions with predictable latency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115210693A true CN115210693A (zh) | 2022-10-18 |
Family
ID=71731279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080098562.8A Pending CN115210693A (zh) | 2020-04-15 | 2020-12-15 | 具有可预测时延的存储事务 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200241927A1 (zh) |
EP (1) | EP4136532A4 (zh) |
CN (1) | CN115210693A (zh) |
WO (1) | WO2021211172A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971740A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 一种内存拓展板卡和内存拓展方法 |
CN117971740B (zh) * | 2024-03-29 | 2024-06-07 | 苏州元脑智能科技有限公司 | 一种内存拓展板卡和内存拓展方法 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
US10135789B2 (en) | 2015-04-13 | 2018-11-20 | Nicira, Inc. | Method and system of establishing a virtual private network in a cloud service for branch networking |
US10992568B2 (en) | 2017-01-31 | 2021-04-27 | Vmware, Inc. | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US20200036624A1 (en) | 2017-01-31 | 2020-01-30 | The Mode Group | High performance software-defined core network |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US10999100B2 (en) | 2017-10-02 | 2021-05-04 | Vmware, Inc. | Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider |
US10686625B2 (en) | 2017-10-02 | 2020-06-16 | Vmware, Inc. | Defining and distributing routes for a virtual network |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
US11223514B2 (en) | 2017-11-09 | 2022-01-11 | Nicira, Inc. | Method and system of a dynamic high-availability mode based on current wide area network connectivity |
US10999137B2 (en) | 2019-08-27 | 2021-05-04 | Vmware, Inc. | Providing recommendations for implementing virtual networks |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US11606712B2 (en) | 2020-01-24 | 2023-03-14 | Vmware, Inc. | Dynamically assigning service classes for a QOS aware network link |
US20200241927A1 (en) * | 2020-04-15 | 2020-07-30 | Intel Corporation | Storage transactions with predictable latency |
US11720413B2 (en) * | 2020-06-08 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for virtualizing fabric-attached storage devices |
US20220035665A1 (en) * | 2020-07-28 | 2022-02-03 | Microsoft Technology Licensing, Llc | Sharing of compute resources between the virtualized radio access network (vran) and other workloads |
US11363124B2 (en) * | 2020-07-30 | 2022-06-14 | Vmware, Inc. | Zero copy socket splicing |
US11575591B2 (en) | 2020-11-17 | 2023-02-07 | Vmware, Inc. | Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN |
US11929903B2 (en) | 2020-12-29 | 2024-03-12 | VMware LLC | Emulating packet flows to assess network links for SD-WAN |
US11792127B2 (en) | 2021-01-18 | 2023-10-17 | Vmware, Inc. | Network-aware load balancing |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
US11381499B1 (en) | 2021-05-03 | 2022-07-05 | Vmware, Inc. | Routing meshes for facilitating routing through an SD-WAN |
US11729065B2 (en) | 2021-05-06 | 2023-08-15 | Vmware, Inc. | Methods for application defined virtual network service among multiple transport in SD-WAN |
CN115705303A (zh) * | 2021-08-09 | 2023-02-17 | 英特尔公司 | 数据访问技术 |
US11934672B2 (en) * | 2021-08-26 | 2024-03-19 | International Business Machines Corporation | Cached workload management for a multi-tenant host |
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
US11630603B1 (en) | 2021-09-28 | 2023-04-18 | Hewlett Packard Enterprise Development Lp | Hardware device polling using delay order |
US11943146B2 (en) | 2021-10-01 | 2024-03-26 | VMware LLC | Traffic prioritization in SD-WAN |
CN114691314A (zh) * | 2021-10-14 | 2022-07-01 | 上海交通大学 | 基于确定性算子共存的服务调度方法及其应用的gpu |
US11909815B2 (en) | 2022-06-06 | 2024-02-20 | VMware LLC | Routing based on geolocation costs |
CN115086441B (zh) * | 2022-06-09 | 2024-03-19 | 北京百度网讯科技有限公司 | 信息传输方法、装置、电子设备及存储介质 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1230737C (zh) * | 2002-09-23 | 2005-12-07 | 华为技术有限公司 | 一种设备数据轮询调度方法 |
US6976100B2 (en) * | 2003-04-25 | 2005-12-13 | International Business Machines Corporation | Autonomic I/O adapter response performance optimization using polling |
US7210069B2 (en) * | 2003-05-13 | 2007-04-24 | Lucent Technologies Inc. | Failure recovery in a multiprocessor configuration |
US7937499B1 (en) * | 2004-07-09 | 2011-05-03 | Oracle America, Inc. | Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card |
US7941544B2 (en) * | 2005-03-18 | 2011-05-10 | Sap Ag | Session manager for web-based applications |
DE602005018549D1 (de) * | 2005-05-04 | 2010-02-04 | Telecom Italia Spa | Verfahren und system zum verarbeiten von paketflüssen und computerprogrammprodukt dafür |
US20130024875A1 (en) * | 2011-07-22 | 2013-01-24 | Yilin Wang | Event System And Methods For Using Same |
US8924501B2 (en) * | 2011-11-30 | 2014-12-30 | Red Hat Israel, Ltd. | Application-driven shared device queue polling |
US9621633B2 (en) * | 2013-03-15 | 2017-04-11 | Intel Corporation | Flow director-based low latency networking |
US9846657B2 (en) * | 2015-02-06 | 2017-12-19 | Mediatek Inc. | Electronic device for packing multiple commands in one compound command frame and electronic device for decoding and executing multiple commands packed in one compound command frame |
US9965412B2 (en) * | 2015-10-08 | 2018-05-08 | Samsung Electronics Co., Ltd. | Method for application-aware interrupts management |
US10169235B2 (en) * | 2015-12-15 | 2019-01-01 | Apple Inc. | Methods of overriding a resource retry |
US10547559B2 (en) * | 2015-12-26 | 2020-01-28 | Intel Corporation | Application-level network queueing |
US9632850B1 (en) * | 2016-05-05 | 2017-04-25 | International Business Machines Corporation | Polling parameter adjustment |
US10756816B1 (en) * | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10776012B2 (en) * | 2017-05-19 | 2020-09-15 | Exten Technologies, Inc. | Lock-free datapath design for efficient parallel processing storage array implementation |
JP6932793B2 (ja) * | 2017-06-23 | 2021-09-08 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データ処理方法および装置ならびにスイッチングデバイス |
US20190245924A1 (en) * | 2018-02-06 | 2019-08-08 | Alibaba Group Holding Limited | Three-stage cost-efficient disaggregation for high-performance computation, high-capacity storage with online expansion flexibility |
US11184414B2 (en) * | 2018-12-07 | 2021-11-23 | Slack Technologies, Llc | Reservation management for client-initiated polling requests in a communication system |
US11777804B2 (en) * | 2019-06-11 | 2023-10-03 | Hewlett Packard Enterprise Development Lp | Automatic system provisioning for NVME-over-fabric storage |
US20210075745A1 (en) * | 2019-09-10 | 2021-03-11 | GigaIO Networks, Inc. | Methods and apparatus for improved polling efficiency in network interface fabrics |
US11474868B1 (en) * | 2019-11-27 | 2022-10-18 | Amazon Technologies, Inc. | Sharded polling system |
US11288196B2 (en) * | 2020-01-15 | 2022-03-29 | EMC IP Holding Company LLC | Efficient data read operation |
US20200241927A1 (en) * | 2020-04-15 | 2020-07-30 | Intel Corporation | Storage transactions with predictable latency |
-
2020
- 2020-04-15 US US16/849,915 patent/US20200241927A1/en active Pending
- 2020-12-15 WO PCT/US2020/065116 patent/WO2021211172A1/en unknown
- 2020-12-15 EP EP20931601.7A patent/EP4136532A4/en active Pending
- 2020-12-15 CN CN202080098562.8A patent/CN115210693A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971740A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 一种内存拓展板卡和内存拓展方法 |
CN117971740B (zh) * | 2024-03-29 | 2024-06-07 | 苏州元脑智能科技有限公司 | 一种内存拓展板卡和内存拓展方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4136532A4 (en) | 2024-05-01 |
US20200241927A1 (en) | 2020-07-30 |
EP4136532A1 (en) | 2023-02-22 |
WO2021211172A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200241927A1 (en) | Storage transactions with predictable latency | |
EP3754511B1 (en) | Multi-protocol support for transactions | |
US20200322287A1 (en) | Switch-managed resource allocation and software execution | |
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
EP3706394B1 (en) | Writes to multiple memory destinations | |
US11381515B2 (en) | On-demand packet queuing in a network device | |
CN115039077A (zh) | 为实时虚拟化执行环境迁移维护存储命名空间标识符 | |
US20210359955A1 (en) | Cache allocation system | |
US20220103530A1 (en) | Transport and cryptography offload to a network interface device | |
US11936571B2 (en) | Reliable transport offloaded to network devices | |
US20210326177A1 (en) | Queue scaling based, at least, in part, on processing load | |
US11681625B2 (en) | Receive buffer management | |
US20210326221A1 (en) | Network interface device management of service execution failover | |
US20220210097A1 (en) | Data access technologies | |
WO2022039863A1 (en) | Adaptive routing for pooled and tiered data architectures | |
US20220086226A1 (en) | Virtual device portability | |
CN117651936A (zh) | 网络层7卸载到服务网格的基础设施处理单元 | |
US20200133367A1 (en) | Power management for workload offload engines | |
EP4030284A1 (en) | Virtual device portability | |
US20230305720A1 (en) | Reservation of memory in multiple tiers of memory | |
US20230082780A1 (en) | Packet processing load balancer | |
EP4134804A1 (en) | Data access technologies | |
CN115858139A (zh) | 封包处理负载平衡器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |