CN114691315A - 存储器池数据放置技术 - Google Patents
存储器池数据放置技术 Download PDFInfo
- Publication number
- CN114691315A CN114691315A CN202111419770.6A CN202111419770A CN114691315A CN 114691315 A CN114691315 A CN 114691315A CN 202111419770 A CN202111419770 A CN 202111419770A CN 114691315 A CN114691315 A CN 114691315A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory pool
- computing platform
- network interface
- 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
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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06F9/505—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 considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文描述的示例涉及一种网络接口设备,当在操作时,该网络接口设备被配置为:选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低可寻址存储器地址的区域的数据到计算平台的传输时间。在一些示例中,至少部分地基于以下各项中的一个或多个来选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池:(a)用于访问数据的存储器带宽;(b)由计算平台从第一存储器池访问数据的时延;(c)由计算平台在时间窗内访问数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问数据的次数;(e)去往和/或来自计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问数据的不同计算平台的数量。
Description
相关申请
本申请要求享有于2020年12月26日提交的美国临时专利申请序列号63/130,670的优先权日的权益,该美国临时专利申请的完整公开内容通过引用并入本文。
背景技术
云本地使用的快速增长已经导致了向扩展向外、分布式软件设计的转变。例如,应用或服务可以使用一组微服务来执行,并且微服务可以使用网络来与其他微服务进行通信。涉及分布式计算的许多应用可以利用存储器池化技术,使得应用可以从远程存储器池访问远程对象。涉及分布式计算的示例应用包括文档索引、搜索应用、Hadoop文件系统(HDFS)操作以及其他。
在执行处理数据的应用的平台处或在该平台附近提供数据可以改进应用的性能,因为这可以减少访问数据所花费的时间。例如,Red Hat Enterprise Linux 7系统提供自动非统一存储器访问(NUMA)平衡,由此进程访问与进程执行的相同的NUMA节点上的存储器。
附图说明
图1是用于执行具有分解的资源的工作负载的数据中心的至少一个示例的简化图。
图2是可以被包括在数据中心中的系统的至少一个示例的简化图。
图3是节点的顶侧的至少一个示例的简化框图。
图4是节点的底侧的至少一个示例的简化框图。
图5是计算节点的至少一个示例的简化框图。
图6是可在数据中心中使用的加速器节点的至少一个示例的简化框图。
图7是可在数据中心中使用的存储节点的至少一个示例的简化框图。
图8是可在数据中心中使用的存储器节点的至少一个示例的简化框图。
图9描绘了用于执行一个或多个工作负载的系统。
图10描绘了示例系统。
图11示出了示例系统。
图12描绘了示例场景。
图13描绘了示例系统。
图14描绘了系统的示例操作。
图15描绘了示例过程。
图16A和图16B描绘了示例交换机。
图17描绘了示例系统。
具体实施方式
在一些示例中,网络接口设备可以从多个存储器池中选择存储器池,该多个存储器池被托管在数据中心的不同位置中或不同数据中心中或其中存储数据以供一个或多个进程访问的边缘网络中。可以至少部分地基于以下各项选择存储器池来存储数据:通过从存储器池经过零个或多个交换机到执行处理数据的进程的平台的各种路径的数据传输带宽;以及执行进程的平台距存储器池的物理距离;以及由不同平台执行的不同进程访问数据的频率。在确定是否迁移数据时可以考虑在存储数据的存储器池与执行访问数据的进程的平台之间的网元跳数(number of network element hop),并且可以选择选定的存储器池来存储数据以减少网元跳数。网络接口设备可以使数据从存储器池被复制或移动到选定的存储器池,并且可以将针对数据的存储器访问请求(例如,读取或写入)重定向到选定的存储器池。在一些示例中,可以将少于整体的数据迁移到选定的存储器池。在一些示例中,可以在将数据迁移或复制到选定的存储器池的同时重定向存储器访问请求。网络接口设备可以在数据已经被迁移到选定的存储器池之后通知软件栈,使得可以通过更新存储器管理方案(例如,页表、存储器管理器等)对选定的存储器池进行针对数据的其他请求。在一些情况下,网络接口设备可以将数据的只读副本从存储器池提供到平台中的存储器设备中,该平台执行访问数据的进程,并且该进程可以访问来自平台中的存储器设备的数据。
在一些示例中,网络接口设备可以使用预测性指示符和过去的学习来执行预测性迁移,以预期通过网络元件到存储器池处的数据的一个或多个路径预计会变得拥塞。基于对拥塞的预测,网络接口设备可以将数据迁移到选定的存储器池,以减少从存储器池到请求数据的平台的数据传输时间,其中可以经由不拥塞的路径、预计花费较少时间传输数据和/或与数据相关联的存储器访问请求的拥塞的路径或者甚至是在请求者与存储器池之间使用较多跳跃的路径来访问存储器池。
图1描绘了数据中心,其中分解的资源可以协同地执行一个或多个工作负载(例如,代表客户的应用),该数据中心包括多个系统110、120、130、140,系统是或包括一排或多排机架或托盘(tray)。当然,虽然数据中心100被示为具有多个系统,但是在一些示例中,数据中心100可以被体现为单个系统。如本文更详细描述的,机架容纳多个节点,节点中的一些可以配备有一种或多种类型的资源(例如,存储器设备、数据存储设备、加速器设备、通用处理器、GPU、xPU、CPU、现场可编程门阵列(FPGA)或专用集成电路(ASIC))。资源可以逻辑地耦合或聚合以形成组合节点,该组合节点可以例如用作执行作业、工作负载或微服务的服务器。
本文描述的各种示例可以执行由微服务组成的应用,其中微服务在其自己的进程中运行并使用协议(例如,应用程序接口(API)、超文本传输协议(HTTP)资源API、消息服务、远程过程调用(RPC)或Google RPC(gRPC))进行通信。可以使用对微服务的集中式管理来独立部署这些服务。管理系统可以用不同的编程语言编写并使用不同的数据存储技术。微服务可以由以下各项中的一个或多个进行表征:使用细粒度接口(用于可独立部署的服务)、多语言编程(例如,用多种语言编写代码以捕获单个语言无法提供的附加功能和效率)、或轻量级容器或虚拟机部署、以及非集中式的持续微服务递送。一个或多个微服务可以在本文描述的任何资源(例如,图3-11的资源)上执行或使用本文描述的任何资源执行。
在说明性示例中,系统110、120、130、140中的节点连接到多个系统交换机(例如,将数据通信路由到系统内的节点或从系统内的节点路由数据通信的交换机)。交换机可以位于机架顶部(TOR)、行尾(EOR)、机架中部(MOR)或其他位置。系统交换机进而与在数据中心100中的系统(例如,系统110、120、130、140)之间交换通信的主干交换机150连接。在一些示例中,节点可以使用本文描述的标准或专有标准来与结构连接。在其他示例中,节点可以与其他结构(例如,InfiniBand或以太网或光学结构)连接。如本文更详细地描述的,可以将数据中心100中的节点内的资源分配给包含来自一个或多个节点的资源的组(在本文中称为“受管节点”),以在工作负载的执行中共同地对其进行利用。可以像属于受管节点的资源位于相同节点上那样来执行工作负载。受管节点中的资源可以属于归属于不同机架(并且甚至归属不同的系统110、120、130、140)的节点。因此,可以将单个节点的一些资源分配给一个受管节点,而将相同节点的其他资源分配给不同的受管节点(例如,将一个处理器指派给一个受管节点,并且将相同节点的另一处理器指派给不同的受管节点)。
将资源分解到主要包括单一类型资源的节点(例如,主要包括计算资源的计算节点、主要包含存储器资源的存储器节点),以及分解的资源的选择性分配和释放以形成被指派为执行工作负载的受管节点,相对于由包含计算、存储器、存储以及可能的附加资源的超融合服务器组成的典型数据中心而言,改进了数据中心100的操作和资源使用。例如,由于节点主要包含特定类型的资源,因此可以独立于其他资源来对给定类型的资源进行升级。另外地,由于不同的资源类型(处理器、存储器、存储、加速器等)典型地具有不同的刷新速率,因此可以实现更高的资源利用和降低的总体拥有成本。例如,数据中心运营商可以通过仅交换出计算节点来升级贯穿其设施中的处理器。在这种情况下,可以不同时升级加速器和存储资源,而是可以允许其继续操作,直到针对这些资源自己的刷新调度了这些资源为止。资源利用也可以增加。例如,如果受管节点是基于将在其上运行的工作负载的要求组成的,则节点内的资源更有可能被充分利用。这样的利用可以允许更多的受管节点在具有给定的资源的集合的数据中心中运行,或者允许使用较少的资源来构建预期运行给定的工作负载的集合的数据中心。
图2描绘了系统。系统可以包括成排200、210、220、230的机架240的集合。机架240可以容纳多个节点(例如,十六个节点),并且提供到所容纳的节点的电源和数据连接,如本文中更详细描述的。在说明性示例中,每排200、210、220、230中的机架连接到多个系统交换机250、260。系统交换机250包括:端口的集合252,系统110的机架的节点连接到该端口的集合252;以及端口的另一集合254,其将系统110连接到主干交换机150,以提供到数据中心100中的其他系统的连通性。类似地,系统交换机260包括:端口的集合262,系统110的机架的节点连接到该端口的集合262;以及端口的集合264,其将系统110连接到主干交换机150。因此,使用交换机250、260的对为系统110提供了一定量的冗余。例如,如果交换机250、260中的任何一个发生故障,则系统110中的节点仍可以通过另一交换机250、260与数据中心100的其余部分(例如,其他系统的节点)维持数据通信。此外,在说明性示例中,交换机150、250、260可以体现为双模光学交换机,其能够路由承载互联网协议(IP)分组的以太网协议通信以及经由光纤的光学信号传输介质根据第二高性能链路层协议(例如,快速PCI或快速计算链路)的通信两者。
应当认识到的是,其他系统120、130、140(以及数据中心100的附加系统)可以与在图2中示出并关于图2描述的系统110类似地构造并且具有与系统110类似的组件(例如,系统可以具有容纳多个节点的成排的机架,如上面所描述的)。另外地,尽管示出了两个系统交换机250、260,但应当理解,在其他示例中,每个系统110、120、130、140可以连接到不同数量的系统交换机,从而提供甚至更多的故障转移能力。当然,在其他示例中,系统可以与图1-2中示出的成排机架的配置不同地布置。例如,系统可以体现为机架的多个集合,其中机架的每个集合径向布置,即,机架与中心交换机等距。
现在参考图3,在说明性示例中,节点400被配置为安装在数据中心100的对应的机架240中,如上面所讨论的。在一些示例中,节点400可以被优化或以其他方式被配置用于执行特定任务,例如,计算任务、加速任务、数据存储任务等。例如,节点400可以体现为如下面关于图5讨论的计算节点500、如下面关于图6讨论的加速器节点600、如下面关于图7讨论的存储节点700、或体现为被优化或以其他方式被配置为执行其他专门任务的节点,例如,下面关于图8讨论的存储器节点800。例如,一个或多个微服务可以在节点400、节点500、加速器节点600、存储节点700和/或存储器节点800上执行或使用这些节点执行。如本文所描述的,可以选择存储节点700或存储器节点800存储数据以供节点400、节点500或加速器节点600访问,以减少数据的传输时间,从而满足适用的服务水平协议(SLA)参数。
尽管图3中示出了两个物理资源320,但应该认识到的是,在其他示例中,节点400可以包括一个、两个或更多个物理资源320。物理资源320可以体现为任何类型的处理器、控制器或能够执行各种任务(例如,计算功能)和/或控制节点400的功能(这取决于例如节点400的类型或预期功能)的其他计算电路。例如,如下面更详细地讨论的,物理资源320可以在其中节点400被体现为计算节点的示例中体现为高性能处理器,在其中节点400被体现为加速器节点的示例中体现为加速器协处理器或电路,在其中节点400被体现为存储节点的示例中体现为存储控制器,或在其中节点400被体现为存储器节点的示例中体现为存储器设备的集合。
节点400还包括安装到电路板基板302的一个或多个附加物理资源330。在说明性示例中,附加物理资源包括如下面更详细地讨论的网络接口控制器(NIC)。当然,取决于节点400的类型和功能,物理资源330可以在其他示例中包括附加或其他电气组件、电路和/或设备。
物理资源320可以经由输入/输出(I/O)子系统322通信地耦合到物理资源330。I/O子系统322可以体现为用于促进与物理资源320、物理资源330和/或节点400的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统322可以体现为或以其他方式包括存储器控制器中心、输入/输出控制中心、集成传感器中心、固件设备、通信链路(例如,点对点链路、总线链路、电线、电缆、波导、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。在用于存储器系统的说明性示例中,I/O子系统322体现为或以其他方式包括双倍数据速率4(DDR4)数据总线或DDR5数据总线。
在一些示例中,节点400还可以包括资源到资源互连324。资源到资源互连324可以体现为能够促进资源到资源通信的任何类型的通信互连。在说明性示例中,资源到资源互连324体现为高速点对点互连(例如,比I/O子系统322更快)。例如,资源到资源互连324可以体现为QuickPath互连(QPI)、UltraPath互连(UPI)、快速PCI(PCIe)、快速计算链路(CXL)或用于资源到资源通信的其他高速点对点互连。
节点400还包括电源连接器340,该电源连接器340被配置为当节点400被安装在对应的机架240中时与机架240的对应的电源连接器配合。节点400经由电源连接器340从机架240的电源供应接收电力,以为节点400的各种电气组件供应电力。在一些示例中,节点400包括用于向节点400的电气组件提供电力的本地电源供应(例如,板载电源供应)。在一些示例中,节点400不包括用于向节点400的电气组件提供电力的任何本地电源供应(例如,板载电源供应)。
现在参考图4,除了安装在电路板基板302上的物理资源330之外,节点400还包括一个或多个存储器设备420。物理资源320可以经由I/O子系统322通信地耦合到存储器设备420。例如,物理资源320和存储器设备420可以由延伸通过电路板基板302的一个或多个通孔通信地耦合。在一些示例中,物理资源320可以通信地耦合到一个或多个存储器设备420的不同的集合。可替代地,在其他示例中,物理资源320可以通信地耦合到存储器设备420。
存储器设备420可以体现为能够在节点400的操作期间存储用于物理资源320的数据的任何类型的存储器设备,例如,任何类型的易失性存储器(例如,动态随机存取存储器(DRAM)等)或非易失性存储器。
在一个示例中,存储器设备是块可寻址存储器设备,例如,基于NAND或NOR技术的那些存储器设备,例如,多阈值级别NAND闪速存储器和NOR闪速存储器。块可以具有任何大小,例如但不限于2KB、4KB、5KB等。存储器设备还可以包括下一代非易失性设备,例如,Intel存储器或其他字节可寻址就地写入非易失性存储器设备(例如,使用硫族化物玻璃的存储器设备)、多阈值级别NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器、结合了忆阻器技术的磁阻随机存取存储器(MRAM)存储器、包括金属氧化物基底的电阻式存储器、氧空位基和导电桥随机存取存储器(CB-RAM)或自旋转移矩(STT)-MRAM、基于自旋电子磁性结存储器的设备、基于磁性隧穿结(MTJ)的设备、基于DW(域壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备,或以上存储器中的一个或多个的组合,或者其他存储器。存储器设备可以指代管芯本身和/或指代封装的存储器产品。在一些示例中,存储器设备可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交点处并且可单独寻址,并且其中位存储基于体电阻的改变。
现在参考图5,在一些示例中,节点400可以体现为计算节点500。计算节点500可以被配置为执行计算任务。当然,如上面所讨论的,计算节点500可以依赖于其他节点(例如,加速节点和/或存储节点)以执行计算任务。在说明性计算节点500中,物理资源320体现为处理器520。尽管图5中仅示出了两个处理器520,但应当认识到的是,在其他示例中,计算节点500可以包括附加处理器520。说明性地,处理器520被体现为高性能处理器520并且可以被配置为在相对高的额定功率下操作。
在一些示例中,计算节点500还可以包括处理器到处理器互连542。处理器到处理器互连542可以体现为能够促进处理器到处理器互连542通信的任何类型的通信互连。在说明性示例中,处理器到处理器互连542体现为高速点对点互连(例如,比I/O子系统322更快)。例如,处理器到处理器互连542可以体现为QuickPath互连(QPI)、UltraPath互连(UPI)或用于处理器到处理器通信的其他高速点对点互连(例如,PCIe或CXL)。
计算节点500还包括通信电路530。说明性通信电路530包括网络接口控制器(NIC)532,该NIC 532也可以被称为主机结构接口(HFI)。NIC 532可以体现为或以其他方式包括任何类型的集成电路、分立电路、控制器芯片、芯片组、外接板、子卡、网络接口卡或可以由计算节点500使用以与另一计算设备(例如,与其他节点400)连接的其他设备。在一些示例中,NIC 532可以体现为包括一个或多个处理器的片上系统(SoC)的一部分,或者被包括在还包含一个或多个处理器的多芯片封装上。在一些示例中,NIC 532可以包括本地处理器(未示出)和/或本地存储器(未示出),本地处理器和本地存储器两者都在NIC 532本地。在这样的示例中,NIC 532的本地处理器可以能够执行处理器520的功能中的一个或多个。另外地或可替代地,在这样的示例中,NIC 532的本地存储器可以在板级、插座级、芯片级和/或其他级别被集成到计算节点的一个或多个组件中。在一些示例中,网络接口包括网络接口控制器或网络接口卡。在一些示例中,网络接口可以包括网络接口控制器(NIC)532、主机结构接口(HFI)、主机总线适配器(HBA)、连接到总线或连接(例如,PCIe、CXL、DDR等)的网络接口中的一个或多个。在一些示例中,网络接口可以是交换机或片上系统(SoC)的一部分。
NIC 532的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分或由IPU或DPU使用。IPU或DPU可以包括网络接口、存储器设备和一个或多个可编程或固定功能处理器(例如,CPU或XPU),以执行本应由主机CPU或XPU或远程CPU或XPU执行的操作的卸载。在一些示例中,IPU或DPU可以执行虚拟交换机操作、管理存储事务(例如,压缩、加密、虚拟化)并且管理在其他IPU、DPU、服务器或设备上执行的操作。
通信电路530通信地耦合到光学数据连接器534。光学数据连接器534被配置为当计算节点500被安装在机架中时与机架的对应的光学数据连接器配合。说明性地,光学数据连接器534包括从光学数据连接器834的配合表面引向光学收发机536的多条光纤。光学收发机536被配置为将来自机架侧光学数据连接器的传入光学信号转换为电信号,并且将电信号转换为去往机架侧光学数据连接器的传出光学信号。尽管光学收发机536在说明性示例中被示为形成光学数据连接器534的一部分,但在其他示例中,光学收发机836可以形成通信电路530的一部分。
在一些示例中,计算节点500还可以包括扩展连接器540。在这样的示例中,扩展连接器540被配置为与扩展电路板基板的对应的连接器配合,以向计算节点500提供附加的物理资源。在计算节点500的操作期间,附加的物理资源可以例如由处理器520使用。扩展电路板基板可以与上面讨论的电路板基板302基本上相似,并且可以包括被安装在其上的各种电气组件。被安装到扩展电路板基板上的特定电气组件可以取决于扩展电路板基板的预期功能。例如,扩展电路板基板可以提供附加的计算资源、存储器资源和/或存储资源。因此,扩展电路板基板的附加的物理资源可以包括但不限于处理器、存储器设备、存储设备和/或加速器电路,包括例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、安全协处理器、图形处理单元(GPU)、机器学习电路或其他专门的处理器、控制器、设备和/或电路。注意,本文中对GPU或CPU的引用可以另外地或可替代地指代XPU或xPU。xPU可以包括以下各项中的一个或多个:GPU、ASIC、FPGA或加速器设备。
现在参考图6,在一些示例中,节点400可以体现为加速器节点600。加速器节点600被配置为执行专门的计算任务,例如,机器学习、加密、散列或其他计算密集型任务。在一些示例中,例如,计算节点500可以在操作期间将任务卸载到加速器节点600。加速器节点600包括与节点400和/或计算节点500的组件类似的各种组件,这些组件已经在图6中使用相同的附图标记进行标识。
在说明性加速器节点600中,物理资源320被体现为加速器电路620。尽管图6中仅示出了两个加速器电路620,但应当认识到的是,在其他示例中,加速器节点600可以包括附加的加速器电路620。加速器电路620可以体现为任何类型的处理器、协处理器、计算电路或能够执行计算或处理操作的其他设备。例如,加速器电路620可以体现为例如中央处理单元、核心、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可编程控制逻辑(PCL)、安全协处理器、图形处理单元(GPU)、神经形态处理器单元、量子计算机、机器学习电路、可编程处理流水线(例如,可由P4、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制文件或其他可执行二进制文件进行编程)。处理器、FPGA、其他专用的处理器、控制器、设备和/或电路可以用于分组处理或分组修改。三元内容可寻址存储器(TCAM)可以用于对分组报头内容进行并行匹配动作或查找操作。
在一些示例中,加速器节点600还可以包括加速器到加速器互连642。类似于上面讨论的节点300的资源到资源互连324,加速器到加速器互连642可以是体现为能够促进加速器到加速器通信的任何类型的通信互连。在说明性示例中,加速器到加速器互连642体现为高速点对点互连(例如,比I/O子系统322更快)。例如,加速器到加速器互连642可以体现为QuickPath互连(QPI)、UltraPath互连(UPI)或用于加速器到加速器通信的其他高速点对点互连。在一些示例中,加速器电路620可以与通过I/O子系统322连接到NIC 532和存储器420的主要加速器电路620以及通过主要加速器电路620连接到NIC 532和存储器420的次要加速器电路620进行菊花链连接。
现在参考图7,在一些示例中,节点400可以体现为存储节点700。在一些示例中,存储节点700被配置为将数据存储在存储节点700本地的数据存储装置750中。例如,在操作期间,计算节点500或加速器节点600可以存储和取回来自存储节点700的数据存储装置750的数据。存储节点700包括与节点400和/或计算节点500的组件类似的各种组件,这些组件已经在图7中使用相同的附图标记进行标识。
在说明性存储节点700中,物理资源320被体现为存储控制器720。尽管图7中仅示出了两个存储控制器720,但是应当认识到的是,在其他示例中,存储节点700可以包括附加的存储控制器720。存储控制器720可以体现为任何类型的处理器、控制器或控制电路,其能够基于经由通信电路530或其他组件接收到的请求来控制数据存储到数据存储装置750/从数据存储装置750取回数据。在说明性示例中,存储控制器720被体现为相对低功率的处理器或控制器。
在一些示例中,存储节点700还可以包括控制器到控制器互连742。类似于上面讨论的节点400的资源到资源互连324,控制器到控制器互连742可以是体现为能够促进控制器到控制器通信的任何类型的通信互连。在说明性示例中,控制器到控制器互连742被体现为高速点对点互连(例如,比I/O子系统322更快)。例如,控制器到控制器互连742可以体现为QuickPath互连(QPI)、UltraPath互连(UPI)或用于控制器到控制器通信的其他高速点对点互连。
现在参考图8,在一些示例中,节点400可以体现为存储器节点800。存储器节点800被配置为向其他节点400(例如,计算节点500、加速器节点600等)提供对在存储节点700本地的(例如,在存储器设备420的两个或更多个集合830、832中的)存储器的池的访问。而且,可以使用通信电路530和位于其他物理节点(未示出)中的(多个)存储器节点上的存储器集合来促进附加的外部存储器集合。例如,在操作期间,计算节点500或加速器节点600可以使用映射到存储器集合830、832中的物理地址的逻辑地址空间,来远程写入存储器节点800的存储器集合830、832的一个或多个和/或从存储器节点800的存储器集合830、832的一个或多个进行读取。
在说明性存储器节点800中,物理资源320被体现为存储器控制器820。尽管图8中仅示出了两个存储器控制器820,但应当认识到的是,在其他示例中,存储器节点800可以包括附加的存储器控制器820。存储器控制器820可以体现为能够基于经由通信电路530接收到的请求来控制数据到存储器集合830、832中的写入和读取的任何类型的处理器、控制器或控制电路。在说明性示例中,存储器控制器820连接到对应的存储器集合830、832以向对应的存储器集合830、832内的存储器设备420写入和从对应的存储器集合830、832内的存储器设备420读取,并且实施与已经向存储器节点800发送请求以执行存储器访问操作(例如,读取或写入)的节点400相关联的许可(例如,读取、写入等)。
在一些示例中,存储器节点800还可以包括控制器到控制器互连842。类似于上面讨论的节点400的资源到资源互连324,控制器到控制器互连842可以是体现为能够促进控制器到控制器通信的任何类型的通信互连。在说明性示例中,控制器到控制器互连842体现为高速点对点互连(例如,比I/O子系统322更快)。例如,控制器到控制器互连842可以体现为QuickPath互连(QPI)、UltraPath互连(UPI)或用于控制器到控制器通信的其他高速点对点互连。因此,在一些示例中,存储器控制器820可以通过控制器到控制器互连842来访问在存储器集合832内的与另一存储器控制器820相关联的存储器。在一些示例中,可扩展存储器控制器由在存储器节点(例如,存储器节点800)上的多个较小的存储器控制器(在本文中被称为“小芯片”)制成。小芯片可以是互连的(例如,使用EMIB(嵌入式多管芯互连桥))。组合的小芯片存储器控制器可以扩展到相对大量的存储控制器和I/O端口(例如,多达16个存储器通道)。在一些示例中,存储器控制器820可以实现存储器交织(例如,一个存储器地址被映射到存储器集合830,下一个存储器地址被映射到存储器集合832,并且第三个地址被映射到存储器集合830等)。可以在存储器控制器820内管理交织,或者从跨网络链路到存储器集合830、832的CPU插座(例如,计算节点500的CPU插座)管理交织,并且与从相同的存储器设备访问连续的存储器地址相比,可以改进与执行存储器访问操作相关联的时延和带宽。
此外,在一些示例中,存储器节点800可以使用波导连接器880通过波导连接到一个或多个其他节点400(例如,在同一机架240或相邻机架240中)。使用波导可以提供对存储器池(例如,存储器集合830、832)到另一节点(例如,在与存储器节点800相同的机架240或相邻的机架240中的节点400)的高吞吐量访问,而不增加光学数据连接器534上的负载。
现在参考图9,可以实现用于执行一个或多个工作负载(例如,应用或微服务)的系统。在说明性示例中,系统910包括编排器服务器920,该编排器服务器920可以体现为包括执行管理软件(例如,云操作环境,例如,作为OpenStack)的计算设备(例如,计算节点500上的处理器520)的受管节点,该管理软件通信地耦合到多个节点400,包括大量计算节点930(例如,类似于计算节点500)、存储器节点940(例如,类似于存储器节点800)、加速器节点950(例如,类似于加速器节点600)和存储节点960(例如,类似于存储节点700)。节点930、940、950、960中的一个或多个可以例如由编排器服务器920分组为受管节点970,以共同执行工作负载(例如,在虚拟机或容器中执行的应用932)。虽然编排器节点920被示为单个实体,但可替代地或另外地,其功能可以跨多个实例和物理位置分布。
受管节点970可以体现为来自相同或不同节点400的物理资源320(例如,处理器520、存储器资源420、加速器电路620或数据存储装置750)的组合。此外,受管节点可以在将工作负载指派给受管节点时由编排器服务器920建立、定义或“拆分”,并且无论当前是否将工作负载指派给受管节点,受管节点都可以存在。在说明性示例中,编排器服务器920可以根据与工作负载(例如,应用932)的服务水平协议或服务类别(COS或CLOS)相关联的服务质量(QoS)目标(例如,目标吞吐量、目标时延、目标数量的每秒指令等),从节点400选择性地分配和/或取消分配物理资源320,和/或从受管节点970添加或删除一个或多个节点400。在这样做时,编排器服务器920可以接收指示受管节点970的节点400中的性能状况(例如,吞吐量、时延、每秒指令等)的遥测数据,并且将遥测数据与服务质量目标进行比较以确定服务质量目标是否被满足。编排器服务器920可以另外地确定是否可以从受管节点970取消分配一个或多个物理资源同时仍然满足QoS目标,由此释放那些物理资源以供在另一受管节点中使用(例如,以执行不同的工作负载)。可替代地,如果QoS目标当前未被满足,则编排器服务器920可以确定动态地分配附加的物理资源,以在工作负载(例如,应用932)正在执行时协助工作负载的执行。类似地,如果编排器服务器920确定对物理资源的取消分配将导致QoS目标仍然被满足,则编排器服务器920可以确定从受管节点动态地取消分配物理资源。
另外地,在一些示例中,编排器服务器920可以例如通过标识工作负载(例如,应用932)的执行阶段(例如,在其中执行不同操作的时间段,每个操作具有不同的资源利用特性)以及抢先地标识数据中心100中的可用资源并将其分配给受管节点970(例如,在相关联阶段开始的预定义时间段内),来标识工作负载(例如,应用932)的资源利用的趋势。在一些示例中,编排器服务器920可以基于各种时延和分配方案来对性能进行建模,以将工作负载放置在数据中心100中的计算节点和其他资源(例如,加速器节点、存储器节点、存储节点)之中。例如,编排器服务器920可以利用这样的模型:该模型考虑节点400上的资源的性能(例如,FPGA性能、存储器访问时延等,其可选地包括先前收集的历史性能)以及通过网络到资源(例如,FPGA)的路径的性能(例如,拥塞、时延、带宽)。因此,编排器服务器920可以基于与数据中心100中可用的潜在资源相关联的总时延(例如,除了与通过网络在执行工作负载的计算节点与资源所位于的节点400之间的路径相关联的时延之外,与资源本身的性能相关联的时延)来确定哪个(那些)资源应该与哪些工作负载一起使用。
在一些示例中,编排器服务器920可以使用从节点400报告的遥测数据(例如,温度、风扇速度等)生成在数据中心100中的热生成图,并且根据热生成图以及与不同工作负载相关联的预测的热生成来向受管节点分配资源,以维持数据中心100中的目标温度和热分布。另外地或可替代地,在一些示例中,编排器服务器920可以将接收到的遥测数据组织成指示受管节点之间的关系(例如,空间关系(例如,数据中心100内的受管节点的资源的物理位置)和/或功能关系(例如,按受管节点提供服务所针对的客户、典型地由受管节点执行的功能的类型、典型地彼此之间共享或交换工作负载的受管节点等对受管节点进行的分组))的分层模型。基于受管节点中的物理位置和资源的差异,给定工作负载可以在不同的受管节点的资源之间展现出不同的资源利用(例如,导致不同的内部温度、使用处理器或存储器容量的不同百分比)。编排器服务器920可以基于存储在分层模型中的遥测数据来确定差异,并且如果工作负载从一个受管节点重新指派给另一受管节点,则可以将该差异作为因素计入对工作负载的未来资源利用的预测中,以准确地平衡数据中心100中的资源利用。在一些示例中,编排器服务器920可以识别工作负载的资源利用阶段中的模式,并且使用该模式来预测工作负载的未来资源利用。
为了减少编排器服务器920上的计算负载和网络上的数据传送负载,在一些示例中,编排器服务器920可以向节点400发送自检信息,以使节点400能够在本地(例如,在节点400上)确定由节点400生成的遥测数据是否满足一个或多个条件(例如,满足预定义阈值的可用容量、满足预定义阈值的温度等)。然后,节点400可以返回向编排器服务器920报告简化的结果(例如,是或否),编排器服务器920可以利用该简化的结果来确定对受管节点的资源的分配。
本文描述的示例可以选择存储节点700或存储器节点800存储数据以供节点400、节点500或加速器节点600访问,以减少数据的传输时间,从而满足适用的服务水平协议(SLA)参数。节点400至800可以在数据中心或分解的复合节点中使用。本文描述的技术可以应用于分解的和传统的服务器架构两者。传统的服务器可以包括CPU、XPU、一个或多个存储器设备、通信地耦合到服务器内的一个或多个电路板的网络。
边缘网络
在一般级别上,边缘计算指代在更接近网络的“边缘”或“边缘”的集合的位置处对计算和资源的实现、协调和使用。这种布置的目的是改进总体拥有成本、减少应用和网络时延、减少网络回传业务和相关联的能量消耗、改进服务能力、以及改进对安全或数据隐私要求的遵守(尤其是与常规云计算相比)。可以执行边缘计算操作的组件(“边缘节点”)可以驻留在系统架构或临时服务所需的任何位置(例如,在高性能计算数据中心或云装置中;在指定的边缘节点服务器、企业服务器、路边服务器(roadside server)、电信中心办公室中;或在由边缘服务所服务的本地或对等边缘设备中)。
通过下面描述的说明性边缘网络系统,计算和存储资源被移动到更接近网络的边缘(例如,更接近客户端、端点设备或“事物”)。通过将计算和存储资源移动到更靠近产生或使用数据的设备,可以相对于标准网络(例如,云计算)系统实现各种时延、遵守和/或货币或资源成本约束。为此,在一些示例中,计算、存储器和/或存储资源的池可以位于本地服务器、路由器和/或其他网络设备中或以其他方式配备有本地服务器、路由器和/或其他网络设备。这种本地资源促进满足对系统施加的约束。例如,本地计算和存储资源允许边缘系统实时或接近实时地执行计算,这可能是低时延用户案例(例如,自动驾驶、视频监视和移动媒体消费)中的考虑因素。另外地,这些资源将受益于边缘系统中的服务管理,该服务管理提供扩展和实现本地服务水平协议(SLA)或服务水平目标(SLO)、管理分层服务需求以及在临时或永久基础上启用本地特征和功能的能力。
池可以包括同一机箱上的设备,或在不同机箱或不同机架上的不同物理分散的设备。资源池可以包括同质处理器、同质处理器和/或存储器池。异构资源的池化可以使用多个同质资源池来实现。
说明性边缘计算系统可以支持各种服务和/或向端点设备(例如,客户端用户设备(UE))提供各种服务,这些服务中的一些可以具有不同的要求或约束。例如,某些服务可能具有优先级或服务质量(QoS)约束(例如,自动驾驶车辆的交通数据可能具有比温度传感器数据更高的优先级)、可靠性和弹性(例如,交通数据可能要求任务关键的可靠性,而温度数据可能允许有一些误差变化),以及功率、冷却和外形规格约束。在应用于多利益相关者环境中时,这些和其他技术约束可能会带来显著的复杂度和技术挑战。
图10概括地描绘了用于向多利益相关者实体提供边缘服务和应用的边缘计算系统1000,该边缘计算系统1000分布在一个或多个客户端计算节点1002、一个或多个边缘网关节点1012、一个或多个边缘聚合节点1022、一个或多个核心数据中心1032和全局网络云1042之中,该边缘计算系统1000跨网络层分布。一个或多个微服务可以在一个或多个节点和/或数据中心上执行。可以在电信服务提供商(“telco”或“TSP”)、物联网服务提供商、云服务提供商(CSP)、企业实体或任何其他数量的实体处提供边缘计算系统1000的实现方式,或代表电信服务提供商(“telco”或“TSP”)、物联网服务提供商、云服务提供商(CSP)、企业实体或任何其他数量的实体提供边缘计算系统1000的实现方式。可以动态地(例如,在被编排以满足服务目标时)提供系统1000的各种实现方式和配置。
例如,客户端计算节点1002位于端点层处,而边缘网关节点1012位于边缘计算系统1000的边缘设备层(本地层)处。另外地,边缘聚合节点1022(和/或雾设备1024(如果布置在雾联网配置1026中或与雾联网配置1026一起操作))位于网络访问层(中间级别)。雾计算(或“雾化”)通常指代将云计算扩展到企业网络的边缘,或者指代典型地在协调的分布式网络或多节点网络中管理跨云/边缘环境的事务的能力。某些形式的雾计算代表云计算位置在最终设备与云计算数据中心之间提供计算、存储和网络服务的部署。就整体事务而言,某些形式的雾计算还通过基于满足整体服务水平协议的能力将某些工作负载推送到边缘或云,来提供管理工作负载/工作流级别服务的能力。许多场景中的雾计算提供了一种去中心化的架构,并且通过与一个或多个边缘节点设备协作而作为云计算的扩展,从而为最终设备提供后续的本地化控制、配置和管理等。因此,某些形式的雾计算提供与本文讨论的边缘计算一致的操作;本文讨论的边缘计算方面也适用于雾网络、雾化和雾配置。此外,本文讨论的边缘计算系统的方面可以被配置为雾,或者雾的方面可以被集成到边缘计算架构中。
核心数据中心1032位于核心网络层(区域或地理中心级别)处,而全局网络云1042位于云数据中心层(国家或全球层)处。“核心”的使用是作为集中网络位置的术语提供的——在网络中更深处——该“核心”可由多个边缘节点或组件访问;然而,“核心”不一定指定网络的“中心”或最深的位置。因此,核心数据中心1032可以位于边缘云1000内、边缘云1000处或边缘云1000附近。尽管客户端计算节点1002、边缘网关节点1012、边缘聚合节点1022、边缘核心数据中心1032、全局网络云1042的说明性数量在图10中示出,但应当认识到的是,边缘计算系统1000可以在一层或多层处包括附加设备或系统。在一层处的设备可以被配置作为另一层的对等节点,并且因此以协作方式行动以满足服务目标。
与本文提供的示例一致地,客户端计算节点1002可以体现为任何类型的端点组件、设备、装置或能够作为数据的生产者或消费者进行通信的其他事物。此外,边缘计算系统1000中使用的标签“节点”或“设备”不一定意味着这样的节点或设备以客户端或代理/从属/跟随者的角色操作;而是,边缘计算系统1000中的节点或设备中的一个或多个指代包括离散或连接的硬件或软件配置以促进或使用边缘云1000的个体实体、节点或子系统。
因此,边缘云1000由网络组件和功能特征形成,这些网络组件和功能特征由边缘网关节点1012和边缘聚合节点1022操作并且在边缘网关节点1012和边缘聚合节点1022内。边缘云1000可以体现为提供靠近具有无线电接入网络(RAN)能力的端点设备(例如,移动计算设备、IoT设备、智能设备等)定位的边缘计算和/或存储资源的任何类型的部署,该端点设备在图10中示为客户端计算节点1002。换言之,边缘云1000可以被设想为连接端点设备和传统网络接入点的“边缘”,该“边缘”用作进入服务提供商核心网络(包括移动载波网络(例如,全球移动通信系统(GSM)网络、长期演进(LTE)网络、5G/6G网络等))的入口点,同时还提供存储和/或计算能力。其他类型和形式的网络接入(例如,Wi-Fi、远程无线、包括光学网络的有线网络)也可以代替这样的3GPP载波网络使用或与这样的3GPP载波网络结合使用。
在一些示例中,边缘云1000可以形成雾联网配置1026(例如,雾设备1024的网络,未详细示出)的一部分,或以其他方式提供进入雾联网配置1026或跨雾联网配置1026的入口点,该雾联网配置1026可以体现为分配资源和服务以执行特定功能的系统级水平分布式架构。例如,雾设备1024的协调的分布式网络可以在IoT系统布置的上下文中执行计算、存储、控制或联网方面。在核心数据中心1032与客户端端点(例如,客户端计算节点1002)之间的边缘云1000中可以存在其他联网的、聚合的和分布式的功能。以下部分将在网络功能或服务虚拟化的上下文中讨论其中一些,包括为多个利益相关方编排的虚拟边缘和虚拟服务的使用。
如下面更详细地讨论的,边缘网关节点1012和边缘聚合节点1022协作以向客户端计算节点1002提供各种边缘服务和安全性。此外,因为客户端计算节点1002可以是固定的或移动的,因此相应的边缘网关节点1012可以与其他边缘网关设备协作,以在对应的客户端计算节点1002在区域内移动时传播当前提供的边缘服务、相关服务数据和安全性。为此,边缘网关节点1012和/或边缘聚合节点1022可以支持多租户和多利益相关者配置,其中可以跨单个或多个计算设备支持和协调来自(或托管给)多个服务提供商、所有者和多个消费者的服务。
可以在边缘云1000的架构内利用各种安全方法。在多利益相关者环境中,可以存在用于提供实施利益相关者的兴趣的策略的多个可加载安全模块(LSM)。实施点环境可以支持多个LSM,这些LSM应用加载的LSM策略的组合(例如,在应用最受约束的有效策略的情况下,例如,如果利益相关者A、利益相关者B或利益相关者C中的一个或多个限制访问,则访问受到限制)。在边缘云1000内,边缘实体可以提供实施边缘实体兴趣的LSM。云实体可以提供实施云实体兴趣的LSM。同样,各种雾和IoT网络实体可以提供实施雾实体的兴趣的LSM。
如本文所描述的,客户端计算节点1002可以访问存储在客户端计算节点1002、边缘网关节点、边缘聚合节点、核心数据中心1032和/或网络云1042中的数据,以减少数据的传输时间,从而满足适用的服务水平协议(SLA)参数。
图11示出了一个示例,其中各种客户端端点1110(以移动设备、计算机、自动驾驶车辆、商业计算装置、工业处理装置的形式)向边缘云1100(例如,经由无线或有线网络1140)提供针对服务或数据事务的请求1120,并从边缘云1100(例如,经由无线或有线网络1140)接收针对服务或数据事务的响应1130。一个或多个微服务可以在一个或多个节点和/或数据中心上执行。在边缘云1000内,CSP可以部署各种计算和存储资源(例如,边缘内容节点1150),以提供来自分布式内容递送网络的缓存的内容。边缘内容节点1150上可用的其他可用计算和存储资源可以用于执行其他服务并完成其他工作负载。边缘云1000的边缘内容节点1150和其他系统连接到云或数据中心1170,该云或数据中心1170使用回传网络1160来满足来自云/数据中心的对网站、应用、数据库服务器等的较高时延的请求。
如本文所描述的,端点1110可以访问存储在边缘内容节点1150或云1170中的数据以减少数据的传输时间,从而满足适用的服务水平协议(SLA)参数。
存储器设备中的数据放置的示例
图12描绘了一种示例场景,其中服务器平台经由交换机连接到存储器池。平台1、2和3经由多个交换机1-3连接到存储器池A和B。例如,存储器池A和B中的数据可以使用分布式共享存储器(DSM)被映射,其中物理上分离的存储器可以作为逻辑地址空间被寻址。在该场景中,应用X(App X)在平台1上运行,应用Y在平台2上运行,并且应用Z在平台3上运行,并且存储器池A和B被映射到用于应用X、Y和Z的地址空间。对于应用X和Y从远程池、存储器池B访问对象1,通信从平台1进行2个跳跃(经由交换机1和交换机2)。然而,存储器池A距平台1为1个跳跃(经由交换机1),并且平台1从存储器池A取回对象1可能比从存储器池B取回对象1的时延时间更短。
图13提供了确定其中存储数据的存储器池的网络接口设备的示例。在该示例中,平台1-3可以执行应用,该应用通过经过交换机1或2和/或网络接口设备1300的网络连通性访问存储在存储器池A和/或B中的数据。例如,数据1320可以由平台1和2通过相应的App X和Y访问。例如,数据1320可以表示以下各项中的一个或多个:数据、元数据、文件、对象、图像、视频、网页信息、分片(shard)、至少一个数据库记录等。
平台可以包括网络或结构接口、计算资源(例如,CPU、GPU或加速器)和存储器资源(例如,存储器、存储装置和/或高速缓存)。存储器池可以包括网络或结构接口、计算资源(例如,CPU、GPU或加速器)和存储器资源(例如,存储器、存储装置和/或高速缓存)。存储器池可以包括加速器设备、GPU或计算节点中的任何组件。存储器池可以由平台使用网络或结构接口访问。存储器池可以与平台位于同一数据中心或不同数据中心。在一些示例中,存储器池可以包括一个或多个双列直插存储器模块(DIMM)来存储数据。
在一些示例中,网络接口设备1300可以执行对应用的服务水平协议(SLA)的满意度的监视。例如,网络接口设备1300可以利用自顶向下的微架构方法(TMAM)遥测、Unix系统活动报告器(sar)命令、可以分析应用和系统性能的Emon命令监视工具,以便识别对导致过度时延的数据(包括数据1320)的访问或在访问数据时不满足SLA的应用。
在一些示例中,网络接口设备1300可以是存储器池A或B之前的最后跳跃。网络接口设备1300可以确定是否将数据1320(或少于数据1320的全部)复制或迁移到另一存储器池,或甚至复制或迁移到一个平台(例如,平台1、2或3)或多个平台上的本地存储器设备,以尝试减少访问数据的时间。
在一些示例中,管理程序、操作系统或应用可以激活网络接口设备1300以执行以下各项中的一个或多个或去激活网络接口设备1300以使其不执行各项中的一个或多个:监视作为要被移动到另一存储器池的候选的数据、选择要向其迁移数据1320以减少经由网络介质和/或存储器/存储介质带宽的访问时间(例如,读取或写入)的时延的存储器池、或执行数据1320到选定的存储器池的迁移。在执行数据1320的迁移之后,网络接口设备1300可以拦截来自各种平台的对数据1320的请求并将这些请求重定向到选定的存储器池。网络接口设备1300可以被实现为以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
关于数据1320来描述示例。网络接口设备1300可以利用热图标识符1302来识别对数据1320的访问。热图标识符1302可以识别通过交换机从存储器池到平台的不同路径的拥塞。例如,热图标识符1302可以识别从存储器池A、通过网络接口设备1300、通过交换机1到平台1或平台2的路径中的拥塞。例如,热图标识符1302可以识别从存储器池A、通过网络接口设备1300、通过交换机2到平台3的路径中的拥塞。例如,热图标识符1302可以识别从存储器池B、通过网络接口设备1300并且通过交换机2到平台3的拥塞。
热图标识符1302可以识别在从源存储器池到目的地平台的路径中的传输时间和对应的拥塞。热图标识符1302可以监视计算平台访问数据的频率,该计算平台包括一个或多个请求者应用(例如,虚拟机、容器、微服务)、请求者应用、对数据的需求以及读取或写入该数据的当前时延。热图标识符1302可以跟踪以下各项中的一个或多个:(a)在存储器带宽需求方面对数据执行的访问的次数,其中访问可以包括读取或写入,并且其中存储器带宽(或用于访问存储器的带宽)可以是从存储器设备的数据读取速率(例如,字节/秒)或到存储器设备的写入速率(例如,字节/秒)的度量;(b)由请求者从存储器池中的源存储器或存储设备访问数据的当前时延(例如,网络传输时延和存储器访问时延中的一个或其组合);(c)托管数据的当前存储器池(当前目标);(d)由请求者在时间窗内访问数据的次数;(e)由其他请求者在时间窗内访问数据的次数;和/或其他度量。跟踪的利用(e)可用于平衡不同请求者之间的数据访问速率,这可以引导决定将数据维护在存储器池中,该存储器池更接近在时间窗内更有可能访问数据的请求者(例如,距该请求者更少的跳数或更短的物理距离)。
针对受监视数据和/或针对一个或多个请求者应用收集的遥测可以包括以下各项中的一个或多个:高速缓存未命中、存储器带宽利用、存储器大小使用、存储器分配、核心时钟频率速度、核心时钟周期利用、使用的网络带宽、核心空闲测量、用户空间进程的核心执行、核心等待输入/输出操作完成、高速缓存分配/利用、网络接口带宽(发送或接收)利用、CPU周期利用、GPU周期利用、数据库事务/秒、收集的遥测、性能监视单元(PMU)计数器、性能监视计数器(PMON)、性能计数器监视器(参见例如Willhalm的“PerformanceCounter Monitor-A Better Way to Measure CPU Utilization”(2017年)),等等。各种示例提供了跨交换机的协作,以跟踪不同平台上的请求者的数据访问和其他跟踪的利用。可以使用编排器或分布式测量点来收集用于跟踪的利用的遥测数据。
在一些示例中,传输时间和时延可以在诸如在以下描述的那些带内遥测方案之类的带内遥测方案的元数据中传送:“In-band Network Telemetry (INT)DataplaneSpecification,v2.0”P4.org Applications Working Group(2020年2月);IETF draft-lapukhov-dataplane-probe-01,“Data-plane probe for in-band telemetrycollection”(2016年);或IETF draft-ietf-ippm-ioam-data-09,“In-situ Operations,Administration,and Maintenance(IOAM)”(2020年3月8日)。原位操作、管理和维护(IOAM)记录分组中的操作和遥测信息,同时分组遍历网络中的两点之间的路径。IOAM讨论了原位OAM的数据字段和相关联的数据类型。原位OAM数据字段可以封装到各种协议(例如,NSH、Segment Routing、Geneve、IPv6(经由扩展报头)或IPv4)中。
历史利用和/或遥测数据可以用于抢先识别一个或多个路径中的业务或拥塞,并潜在地触发数据迁移到另一存储器池。
基于跟踪的利用和收集的遥测,网络接口设备1300可以确定是否将数据1320移动到特定的选定的存储器池,以减少从存储器池取回数据或将数据写入存储器池的时延或时间。例如,选定的存储器池可以是这样的存储器池:对于该存储器池,在执行访问数据的进程的平台与存储器池之间的数据的传输速率预计足够快,以满足或超过针对数据访问(例如,读取或写入)时间的SLA要求。
SLA监视1304可以使用由热图标识符1302收集的信息并将其映射到用于应用的SLA信息。如果没有满足针对特定应用的SLA,则SLA监视1304可以导致迁移1308以将数据移动或复制到另一存储器池。在一些示例中,数据可以被复制,因此存在数据的多个副本,并且网络接口设备1300可以作为数据的归属代理(home agent)来执行一致性操作。归属代理(HA)可以尝试在不同的存储器设备(包括高速缓存设备)之间为特定的可寻址存储器范围提供数据一致性。
在一些情况下,将数据迁移到目标存储器池可能会改变目标存储器池的性能,使得可能违反针对目标存储器池的SLA,并且反馈监视1306可以请求迁移1308选择向其迁移数据的另一存储器池。
反馈监视1306可以监视例如当多组节点访问相同数据时数据迁移对平台和/或进程的影响。在一些示例中,在移动数据之前,反馈监视1306可以验证没有其他平台在时间窗内访问数据超过阈值访问速率。在一些示例中,在迁移1308确定将数据迁移到另一存储器池之前,反馈监视1306可以与各种交换机通信,从而通知存在将数据从特定源移动到特定目标存储器节点的尝试,并且基于例如超过N个SLA将被违反或者来自其他交换机的N个反对票的回复,迁移1308可以确定不将数据迁移到另一存储器池。
迁移1308可以至少部分地基于以下各项来识别托管在存储器池中的特定数据何时要被迁移到另一存储器池以及将数据迁移到哪个选定的存储器池:来自热图标识符1302的SLA要求、遥测和利用和/或其他度量。迁移1308可以识别何时将托管在存储器池中的特定数据迁移到另一存储器池以及将数据迁移到哪个选定的存储器,以便减少数据在计算平台处的可用性时间,或减少从请求从计算平台复制数据到在目标存储器介质或存储设备上完成数据的存储的时间。数据在计算平台处的可用性时间可以包括访问存储器或存储介质以及通过网络将数据传输到计算平台所花费的时间。
基于迁移数据的决定,迁移1308可以与网络接口设备或存储器池通信以导致数据迁移或复制到选定的存储器池、等待网络接口设备提供肯定响应(例如,数据已移动)或否定响应(例如,数据移动未完成),并且在正向响应的情况下,可以重置针对该数据的监视信息。执行在池之间的数据移动的交换机可以在移动数据时重定向针对数据的请求,以在数据迁移期间提供对数据的持续访问。例如,迁移1308可以通过以下方式引起从存储器池到目标存储器池的数据复制:执行在池之间的数据移动,并在移动数据时重定向请求,以在数据迁移期间提供对数据的持续访问。
迁移1308可以在数据已经被移动到另一存储器池之后通知在一个或多个平台上执行的软件栈,以更新分布式存储器系统或存储器管理方案(例如,页表、存储器管理器等),以便将针对已移动的数据的请求引导到新的物理位置。
数据可以被锁定,使得只有一个交换机可以执行数据的迁移。在锁定被释放之后,另一交换机可以查询另一交换机的热图标识符1302以确定迁移的数据的目的地。交换机可以与其他交换机协调以更新其热图。注意,为了确定是否迁移或复制数据,交换机1和/或交换机2可以利用以下各项中的一个或多个的其自己的或共享的实例:热图标识符1302、SLA监视1304、反馈监视1306、迁移1308和/或接口1402。
图14描绘了系统的示例操作。该示例描绘了可以用于确定要迁移什么数据以及迁移到哪个存储器池的接口1402。接口1402的时延接口可以允许针对特定数据的带宽或时延SLA要求的规范,例如,该特定数据的存储器范围或ID以及针对该数据的时延或带宽要求。接口1402可以通过API、配置文件的接收、二进制文件的接收或其他技术来访问。
接口1402的遥测接口可以接收该特定数据的存储器范围或ID以及指示访问时延或带宽的TMAM度量。交换机可以利用由连接到交换机的平台提供的该信息来决定是否将数据移动或不移动到另一存储器池。例如,如果4个节点正在访问数据A并且SLA未被满足,则交换机可以被配置为决定移动数据。然而,如果只有1个SLA未被满足而其他3个SLA被满足,则交换机可以被配置为决定不移动数据。
接口1402的迁移请求接口可用于交换机请求将特定数据从连接到交换机的池迁移到由另一交换机管理的另一池。数据或存储器地址的范围可以由用于存储器池的主要交换机管理,该存储器池存储数据或存储器地址的范围。接口1402的迁移请求接口可以接收该特定数据的存储器范围或ID以及用于该数据的下一潜在位置。
如表1410中示出的,热图标识符1302可以维护以下各项中的一个或多个:数据地址标识符、数据访问带宽速率(例如,网络遍历和/或介质访问速率)、数据到达一个或多个目标(Dst)所花费的时间(例如,时延)、或当前目标标识符。数据到达目标所花费的时间可以基于在数据遍历网络元件到达其目的地时执行的时间戳。访问可以指示可用于传输数据的带宽。
表1420可以跟踪数据迁移是否正在进行以及迁移是否完成。例如,对于特定对象或数据标识符,可以跟踪源(SRC)和目标(DST)以及迁移的字节数。可以跟踪要迁移的总字节数以确定是否已经迁移所有字节。
图15描绘了示例过程。在1502,第一网络接口设备可以被配置为监视对与存储器地址的范围相关联的数据的访问,并且确定与存储器地址的范围相关联的数据是否要从第一存储器池迁移到第二存储器池。例如,在服务器上执行的编排器、管理程序或操作系统可以配置第一网络接口设备,以确定与存储器地址的范围相关联的数据是否要从第一存储器池迁移到第二存储器池,并提供针对何时迁移数据以及选择哪个存储器池作为第二存储器池的标准。在一些示例中,第一网络接口设备是以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
第一网络接口设备可以被配置为针对以下各项来监视在第一存储器池中的存储器地址的区域:(a)用于访问数据的存储器带宽;(b)请求者从第一存储器池访问数据的时延;(c)由请求者在时间窗内访问数据的次数;(d)在时间窗内由其他请求者在时间窗内访问数据的次数;(e)去往和/或来自计算平台可访问的一个或多个存储器池的历史拥塞;和/或(f)访问数据的不同请求者的数量。
在1504处,第一网络接口设备可以监视对第一存储器池中的存储器地址的区域的访问以及与数据的请求者的执行相关的遥测数据。例如,第一网络接口设备可以根据其配置监视(a)-(f)中的一个或多个。遥测数据可以包括与对数据的请求者的服务水平协议(SLA)的满意度的监视相关的数据。
在1506处,第一网络接口设备可以确定与存储器地址的区域相关联的数据是否要被迁移到另一存储器池,即,第二存储器池。例如,基于跟踪的数据访问速率、数据传输速率、访问数据的各种应用的位置、遥测、相对于其适用的SLA的应用性能和/或本文描述的历史信息,第一网络接口设备可以选择第二存储器池并将数据迁移到选定的第二存储器池,以减少取回数据或写入数据的时延或时间。例如,第一网络接口设备可以在1502中被配置为基于特定级别的跟踪的数据访问速率、数据传输速率、访问数据的各种应用的位置、遥测、相对于其适用的SLA的应用性能和/或历史信息来触发数据到另一存储器池的迁移。
基于不将数据迁移到另一存储器池的决定,该过程可以重复1506。基于将数据迁移到另一存储器池的决定,该过程可以继续到1508。
在1508处,第一网络接口设备可以选择要将数据迁移到的第二存储器池并且导致数据从第一存储器池迁移到选定的第二存储器池。可以基于在1502中设置的配置来选择第二存储器池。例如,可以选择第二存储器池作为这样的存储器池:对于该存储器池,数据的传输速率(例如,网络和/或介质传送速率)预计足够快,以满足或超过针对数据访问(例如,读取或写入)时间的SLA要求。第一网络接口设备可以使数据迁移到选定的存储器池。在1510处,在数据迁移到选定的存储器池期间和/或在迁移之后,第一网络接口设备可以将针对与数据相关联的存储器地址范围的存储器访问请求从第一存储器池重定向到到第二存储器池。
图16A描绘了示例交换机。可以在交换机中使用各种示例或与交换机一起使用各种示例来确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。交换机1604可以将任何格式或根据任何规范的分组或帧从任何端口1602-0至1602-X路由到端口1606-0至1606-Y中的任一个(或反之亦然)。端口1602-0至1602-X中的任一个可以连接到一个或多个互连设备的网络。类似地,端口1606-0至1606-Y中的任一个可以连接到一个或多个互连设备的网络。
在一些示例中,交换结构1610可以提供对来自一个或多个入口端口的分组的路由,以在从交换机1604出口之前对该分组进行处理。交换结构160可以实现为一个或多个多跳拓扑(其中示例拓扑包括环面(torus)、蝶式(butterfly)、缓冲多级等),或共享存储器交换结构(SMSF),以及其他实现方式。SMSF可以是连接到交换机中的入口端口和出口端口的任何交换结构,其中入口子系统将分组分段写入(存储)到结构的存储器中,而出口子系统从结构的存储器中读取(获取)分组分段。
存储器1608可以被配置为存储在端口处接收到的分组,然后将该分组从一个或多个端口出口。分组处理流水线1612可以使用将分组特性与相关联的输出端口进行映射的表来确定将分组或帧传送到哪个端口。在一些示例中,分组处理流水线1612可以被配置为使用存储在三元内容可寻址存储器(TCAM)表或精确匹配表中的信息来对接收到的分组执行匹配动作,以识别分组处理规则和下一跳跃。例如,可以使用匹配动作表或电路,由此将分组的一部分的散列用作索引以查找条目。分组处理流水线1612可以实现访问控制列表(ACL)或由于队列溢出而丢弃分组。分组处理流水线1612可以被配置为确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。
分组处理流水线1612的操作的配置(包括其数据平面)可以使用P4、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制文件或其他可执行二进制文件进行编程。处理器1616和FPGA 1618可以用于分组处理或修改。
图16B描绘了可以用作交换机或路由器的示例网络转发系统。例如,图16B示出了若干入口流水线1620、业务管理单元(称为业务管理器)1650和若干出口流水线1630。虽然示出为单独的结构,但在一些示例中,入口流水线1620和出口流水线1630可以使用相同的电路资源。在一些示例中,流水线电路被配置为同步处理入口流水线分组和/或出口流水线分组以及非分组数据。即,流水线的特定阶段可以在同一时钟周期中处理入口分组、出口分组和非分组数据的任何组合。然而,在其他示例中,入口流水线和出口流水线是单独的电路。在这些其他示例中的一些示例中,入口流水线还处理非分组数据。
在一些示例中,响应于接收到分组,该分组被引导至入口流水线1620中的一个,其中入口流水线可以对应于硬件转发元件的一个或多个端口。在通过选定的入口流水线1620之后,该分组被发送到业务管理器1650,其中该分组被入队并被放置在输出缓冲器1654中。在一些示例中,处理该分组的入口流水线1620指定该分组要由业务管理器1650放置在哪个队列中(例如,基于分组的目的地或分组的流标识符)。业务管理器1650然后将分组分派到适当的出口流水线1630,其中出口流水线可以对应于转发元件的一个或多个端口。在一些示例中,在入口流水线1620中的哪一个处理分组与业务管理器1650将分组分派到出口流水线1630中的哪一个之间没有必要的相关性。即,在分组通过第一端口接收之后,该分组可能最初由入口流水线1620b处理,然后由出口流水线1630a随后处理以发送出第二端口,等等。
至少一个入口流水线1620包括解析器1622、多个匹配动作单元(MAU)1624和逆解析器1626。类似地,出口流水线1630可以包括解析器1632、多个MAU 1634和逆解析器1636。在一些示例中,解析器1622或1632接收分组作为以特定次序的位的格式化集合,并且将分组解析为其组成报头字段。在一些示例中,解析器从分组的开头开始并将报头字段指派给字段(例如,数据容器)以进行处理。在一些示例中,解析器1622或1632从分组的有效载荷中分离出分组报头(直到指定点),并且将有效载荷(或整个分组,包括报头和有效载荷)直接发送到逆解析器而不通过MAU处理。
MAU 1624或1634可以对分组数据执行处理。在一些示例中,MAU包括阶段的序列,其中一个阶段包括一个或多个匹配表和动作引擎。匹配表可以包括匹配条目的集合,分组报头字段与该匹配条目的集合匹配(例如,使用散列表),其中匹配条目引用动作条目。当分组与特定匹配条目匹配时,该特定匹配条目引用特定动作条目,该特定动作条目指定要对分组执行的动作的集合(例如,将分组发送到特定端口、修改一个或多个分组报头字段值、丢弃分组,将分组镜像到镜像缓冲器等等)。该阶段的动作引擎可以对分组执行动作,然后将该分组发送到MAU的下一阶段。例如,(多个)MAU可以用于确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。
逆解析器1626或1636可以使用由MAU 1624或1634修改的分组报头向量(PHV)和直接从解析器1622或1632接收到的有效载荷来重构分组。逆解析器可以构建可以通过物理网络发送出或发送到业务管理器1650的分组。在一些示例中,逆解析器可以基于与PHV一起接收到的数据来构建该分组,该PHV指定要包括在分组报头中的协议,以及其自己存储的、用于可能的协议报头字段的数据容器位置的列表。
业务管理器1650可以包括分组复制器1652和输出缓冲器1654。在一些示例中,业务管理器1650可以包括其他组件,例如,用于发送关于输出端口故障的信号的反馈生成器、一系列队列和用于这些队列的调度器、队列状态分析组件以及附加组件。一些示例的分组复制器1652对广播/多播分组执行复制,从而生成要添加到输出缓冲器(例如,要分发到不同的出口流水线)的多个分组。
在一些示例中,输出缓冲器1654可以是业务管理器的排队和缓冲系统的一部分。业务管理器1650可以提供共享缓冲器,该共享缓冲器适应出口流水线中的任何排队延迟。在一些示例中,该共享输出缓冲器1654可以存储分组数据,而对该分组数据的引用(例如,指针)被保持在用于出口流水线1630的不同队列中。出口流水线可以使用控制平面可配置的排队策略来从公共数据缓冲器中请求其相应的数据。当分组数据引用到达其队列的头部并被调度用于出队时,对应的分组数据可以从输出缓冲器1654中读出并且进入对应的出口流水线1630中。在一些示例中,分组数据可以被多个流水线引用(例如,对于多播分组)。在这种情况下,直到对分组数据的引用已经清除了其相应的队列,才从该输出缓冲器1654中移除分组数据。
图17描绘了示例计算系统。各种示例可以使用系统1700的组件(例如,处理器1710、网络接口1750等等)来执行一个或多个网络接口设备和/或节点的配置,以确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。
系统1700包括处理器1710,该处理器1710为系统1700提供处理、操作管理和指令的执行。处理器1710可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或其他处理硬件或处理器的组合,以为系统1700提供处理。处理器1710控制系统1700的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或者这些设备的组合。
在一个示例中,系统1700包括耦合到处理器1710的接口1712,该接口1712可以表示针对需要更高的带宽连接的系统组件(例如,存储器子系统1720或图形接口组件1740或加速器1742)的更高速度接口或高吞吐量接口。接口1712表示接口电路,该接口电路可以是独立组件或者集成到处理器管芯上。在存在图形接口1740的情况下,该图形接口1740与图形组件接合,以将视觉显示提供到系统1700的用户。在一个示例中,图形接口1740可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指代具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全HD(例如,1080p)、视网膜显示、4K(超高清晰度或UHD)或其他格式之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1740基于在存储器1730中存储的数据或基于由处理器1710执行的操作或两者来生成显示。在一个示例中,图形接口1740基于在存储器1730中存储的数据或基于由处理器1710执行的操作或两者来生成显示。
加速器1742可以是可以由处理器1710访问或使用的固定功能或可编程卸载引擎。例如,加速器1742中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)之类的密码服务、密码、散列/认证能力、解密或其他能力或服务。在一些示例中,另外地或可替代地,加速器1742中的加速器提供如本文所描述的现场选择控制器能力。在一些情况下,加速器1742可以被集成到CPU插座(例如,到包括CPU并提供与CPU的电气接口的主板或电路板的连接器)中。例如,加速器1742可以包括单核心或多核心处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑以及诸如现场可编程门阵列(FPGA)或可编程逻辑器件(PLD)之类的可编程处理元件。加速器1742可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者可以使图形处理单元可供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下各项中的一个或多个:强化学习方案、Q-学习方案、深度-Q学习、或异步优势Actor-Critic(A3C)、组合神经网络、递归组合神经网络或其他AI或ML模型。可以使多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。
存储器子系统1720表示系统1700的主存储器,并且为要由处理器1710执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统1720可以包括一个或多个存储器设备1730,例如,只读存储器(ROM)、闪速存储器、随机存取存储器(RAM)的一种或多种变型(例如,DRAM),或其他存储器设备,或这些设备的组合。存储器1730存储并托管操作系统(OS)1732以及其他事物,以提供用于执行系统1700中的指令的软件平台。另外地,应用1734可以从存储器1730在OS 1732的软件平台上执行。应用1734表示具有其自己的操作逻辑以执行对一个或多个功能的执行的程序。进程1736表示向OS 1732或一个或多个应用1734或其组合提供辅助功能的代理或例程。OS 1732、应用1734和进程1736提供软件逻辑以提供用于系统1700的功能。在一个示例中,存储器子系统1720包括存储器控制器1722,该存储器控制器1722是用于生成命令并将命令发出到存储器1730的存储器控制器。将理解的是,存储器控制器1722可以是处理器1710的物理部分或接口1712的物理部分。例如,存储器控制器1722可以是集成到具有处理器1710的电路上的集成存储器控制器。
在一些示例中,OS 1732可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu或任何其他操作系统。OS和驱动程序可以在由Texas以及其他公司销售或设计的CPU上执行。由进程执行的驱动程序可以配置网络接口1750以确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。
尽管没有具体示出,但是将理解的是,系统1700可以包括设备之间的一条或多条总线或一个或多个总线系统,例如,存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件通信地且电气地耦合。总线可以包括物理通信线路、点对点连接、桥、适配器、控制器或其他电路系统或其组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、超传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(Firewire)中的一个或多个。
在一个示例中,系统1700包括接口1714,该接口1714可以耦合到接口1712。在一个示例中,接口1714表示接口电路,该接口电路可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口1714。网络接口1750向系统1700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线标准或无线标准的接口或专有接口。网络接口1750可以将数据发送到位于相同数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口1750可以从远程设备接收数据,这可以包括将接收到的数据存储在存储器中。网络接口1750的各种示例可以确定是否将数据迁移到另一存储器设备并选择另一存储器设备,如本文所描述的。
在一个示例中,系统1700包括一个或多个输入/输出(I/O)接口1760。I/O接口1760可以包括用户通过其与系统1700交互(例如,音频、字母数字、触觉/触摸或其他接合)的一个或多个接口组件。外围接口1770可以包括上面未具体提到的任何硬件接口。外围设备通常指代依赖地连接到系统1700的设备。依赖连接是其中系统1700提供在其上执行操作并且用户与其进行交互的软件平台或硬件平台或两者的一种连接。
在一个示例中,系统1700包括用于以非易失性方式存储数据的存储子系统1780。在一个示例中,在某些系统实现方式中,存储装置1780的至少某些组件可以与存储器子系统1720的组件重叠。存储子系统1780包括(多个)存储设备1784,这些存储设备1784可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如,一个或多个基于磁性、固态或光学的盘或其组合。存储装置1784以持久状态保存代码或指令以及数据1786(即,尽管到系统1700的电力中断,但值仍被保留)。存储装置1784通常可以被认为是“存储器”,但是存储器1730典型地是用于向处理器1710提供指令的执行或操作存储器。尽管存储装置1784是非易失性的,但是存储器1730可以包括易失性存储器(即,如果到系统1700的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统1780包括用于与存储装置1784接合的控制器1782。在一个示例中,控制器1782是接口1714或处理器1710的物理部分,或者可以包括处理器1710和接口1714两者中的电路或逻辑。
易失性存储器是一种这样的存储器:如果到设备的电力被中断,则其状态(以及因此存储在其中的数据)是不确定的。动态易失性存储器使用对存储在设备中的数据的刷新以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)之类的一些变型。易失性存储器的示例包括高速缓存。如本文所描述的存储器子系统可以与多种存储器技术兼容,例如,DDR3(双倍数据速率版本3,由JEDEC(联合电子器件工程委员会)于2007年6月16日最初发布)、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正在讨论),或其他存储器技术或这些存储器技术的组合,以及基于这样的规范的派生物或扩展的技术。JEDEC标准可在www.jedec.org处获得。
非易失性存储器(NVM)设备是一种这样的存储器:即使到设备的电力被中断,其状态也是确定的。在一个示例中,NVM设备可以包括块可寻址存储器设备,例如,NAND技术,或者更具体地,多阈值级NAND闪速存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其他NAND)。NVM设备还可以包括字节可寻址的就地写入三维交叉点存储器设备,或其他字节可寻址的就地写入NVM设备(也被称为持久性存储器),例如,单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、OptaneTM存储器、使用硫族相变材料(例如,硫族玻璃)的NVM设备、电阻式存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备或上述存储器中的一个或多个的组合或其他存储器。
电源(未描绘)向系统1700的组件提供电力。更具体地,电源典型地与系统1700中的一个或多个电源供应接合,以向系统1700的组件提供电力。在一个示例中,电源供应包括用于插入壁式插座的AC到DC(交流电到直流电)适配器。这样的AC电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如,外部AC到DC转换器。在一个示例中,电源或电源供应包括无线充电硬件,以经由与充电场的接近度来充电。在一个示例中,电源可以包括内部电池、交流电供应、基于运动的电源供应、太阳能电源供应或燃料电池源。
在示例中,系统1700可以使用处理器、存储器、存储装置、网络接口和其他组件的互连的计算托架来实现。可以使用高速互连,例如:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、聚合以太网上的RDMA(RoCE)、快速外围组件互连(PCIe)、Intel QuickPath互连(QPI)、Intel Ultra Path互连(UPI)、Intel片上系统结构(IOSF)、Omni-path、快速计算链路(CXL)、HyperTransport、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、Infinity Fabric(IF)、用于加速器的高速缓存一致性互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变型。可以使用协议(例如,non-volatile memory express(NVMe)over Fabrics(NVMe-oF)或NVMe)向经虚拟化的存储节点或存储器池写入或从其读取数据。
本文的示例可以在各种类型的计算和联网装备(例如,交换机、路由器、机架和刀片式服务器(例如,在数据中心和/或服务器场环境中所采用的那些))中实现。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如,基于机架的服务器或刀片式服务器。这些服务器经由各种网络配置进行通信互连,例如,将多组服务器划分为局域网(LAN),该LAN具有LAN之间的适当的交换和路由设施,以形成私有的内联网。例如,云托管设施可以典型地采用具有大量服务器的大型数据中心。刀片包括单独的计算平台,该计算平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,刀片可以包括常规的服务器所共有的组件,包括提供用于耦合适当的集成电路(IC)和安装到板上的其他组件的内部布线(即,总线)的主印刷电路板(主板)。
在一些示例中,本文描述的网络接口和其他示例可以与基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(picostation,例如,IEEE 802.11兼容的接入点)、毫微站(nanostation,例如,用于点对多点(PtMP)应用)、本地数据中心、异地数据中心、边缘网络元件、边缘服务器、边缘交换机、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义网络来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)结合使用。
各种示例可以使用硬件元件、软件元件或者两者的组合来实现。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其组合。确定示例是否是使用硬件元件和/或软件元件实现的可以根据任何数量的因素(例如,期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和根据给定的实现方式的期望的其他设计或者性能约束)而变化。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可以使用制品或者至少一种计算机可读介质来实现或被实现为制品或者至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或者多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写入或可重写存储器等等。在一些示例中,逻辑可以包括各种软件元件,例如,软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其组合。
根据一些示例,计算机可读介质可以包括用于存储或者维持指令的非暂时性存储介质,该指令在由机器、计算设备或者系统执行时使得该机器、计算设备或者系统执行根据所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或者句法来实现,以用于指示机器、计算设备或者系统执行某些功能。指令可以使用任何适合的高级、低级、面向对象、视觉、编译和/或解释编程语言来实现。
至少一个示例的一个或多个方面可以由存储在至少一种机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该指令在由机器、计算设备或者系统读取时使得该机器、计算设备或者系统制造用于执行本文描述的技术的逻辑。被称为“IP核心”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或者制造设施以加载到实际上制造逻辑或者处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定全部指代相同的示例或实施例。本文描述的任何方面可以与本文所描述的任何其他方面或类似的方面组合,而不管这些方面是否是关于相同的附图或元素来描述的。附图中描绘的块功能的划分、省略或者包含并不暗指用于实现这些功能的硬件组件、电路、软件和/或元件将一定在示例中被划分、省略或者包含。
一些示例可以使用表述“耦合”和“连接”以及其衍生词来描述。这些术语不一定旨在是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或者更多个元件彼此直接物理或者电接触。然而,术语“耦合”也可以意味着两个或者更多个元件彼此不直接接触,但是仍然协同操作或者彼此交互。
本文中的术语“第一”、“第二”等并不表示任何次序、数量或重要性,而是用于将一个元素与另一元素区分开。本文中的术语“一(a)”和“一个(an)”不表示对数量的限制,而是表示所引用的项目中的至少一个的存在。本文中参考信号使用的术语“使……生效”表示其中信号为活动的信号的状态,并且可以通过将任何逻辑电平(逻辑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包括一个或多个示例,其中,访问包括读取操作和/或写入操作。
示例3包括一个或多个示例,其中,网络接口设备用于也至少部分地基于以下各项中的一个或多个来选择性地将数据迁移到第二存储器池:(a)用于访问数据的存储器带宽;(b)由计算平台从第一存储器池访问数据的时延;(c)由计算平台在时间窗内访问数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问数据的次数;(e)去往和/或来自计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问数据的不同计算平台的数量。
示例4包括一个或多个示例,其中,网络接口设备用于也至少部分地基于遥测数据来选择性地将数据迁移到第二存储器池,该遥测数据指示计算平台的服务水平协议(SLA)被满足还是未被满足。
示例5包括一个或多个示例,包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:配置网络接口设备以至少部分地基于以下来选择第二存储器池:与数据从第一存储器池到计算平台的传输时间相比减少将数据传输到计算平台的时间。
示例6包括一个或多个示例,包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:配置网络接口设备以通知计算平台数据到第二存储器池的存储的改变。
示例7包括一个或多个示例,包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:配置网络接口设备,以在将数据迁移到第二存储器池期间,将针对数据的存储器访问请求重定向到第二存储器池。
示例8包括一个或多个示例,其中,网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、转发元件、交换机、基础设施处理单元(IPU)或数据处理单元(DPU)。
示例9包括一个或多个示例,并且包括一种装置,包括:网络接口设备,当在操作时,该网络接口设备被配置为:选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低可寻址存储器地址的区域的数据到计算平台的传输时间。
示例10包括一个或多个示例,其中,为了选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低可寻址存储器地址的区域的数据到计算平台的传输时间,网络接口设备至少部分地基于以下各项中的一个或多个:(a)用于访问数据的存储器带宽;(b)由计算平台从第一存储器池访问数据的时延;(c)由计算平台在时间窗内访问数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问数据的次数;(e)去往和/或来自计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问数据的不同计算平台的数量。
示例11包括一个或多个示例,其中,为了选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低可寻址存储器地址的区域的数据到计算平台的传输时间,网络接口设备至少部分地基于遥测数据,该遥测数据指示计算平台的服务水平协议(SLA)被满足还是未被满足。
示例12包括一个或多个示例,其中,当在操作时,网络接口设备用于通知与计算平台相关联的存储器管理器数据到第二存储器池的存储的改变。
示例13包括一个或多个示例,其中,当在操作时,网络接口设备用于在将数据迁移到第二存储器池期间,将针对数据的存储器访问请求重定向到第二存储器池。
示例14包括一个或多个示例,其中,当在操作时,网络接口设备用于基于与计算平台或第二存储器池相关联的服务水平协议(SLA)未被满足的确定,来选择性地将数据迁移回第一存储器池或另一存储器池。
示例15包括一个或多个示例,其中,网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、转发元件、交换机、基础设施处理单元(IPU)或数据处理单元(DPU)。
示例16包括一个或多个示例,并且包括:服务器,该服务器用于配置网络接口设备以执行选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低可寻址存储器地址的区域的数据到计算平台的传输时间。
示例17包括一个或多个示例,并且包括:数据中心,其中,该数据中心包括第一存储器池和第二存储器池,并且其中,网络接口设备用于通过将数据从第一存储器池迁移到第二存储器池来减少从存储器池到计算平台的数据访问时间。
示例18包括一个或多个示例,并且包括一种方法,包括:在交换机处进行以下操作,该交换机被配置为管理对第一存储器池中的第一存储器地址范围的访问:选择性地将第一存储器池中的第一存储器地址范围的数据迁移到第二存储器池,以减少数据到计算平台的传输时间。
示例19包括一个或多个示例,其中,至少部分地基于以下各项中的一个或多个来选择性地将第一存储器池中的第一存储器地址范围的数据迁移到第二存储器池,以减少数据到计算平台的传输时间:(a)用于访问数据的存储器带宽;(b)由计算平台从第一存储器池访问数据的时延;(c)由计算平台在时间窗内访问数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问数据的次数;(e)去往和/或来自计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问数据的不同计算平台的数量。
示例20包括一个或多个示例,其中,至少部分地基于遥测数据来选择性地将第一存储器池中的第一存储器地址范围的数据迁移到第二存储器池,以减少数据到计算平台的传输时间,该遥测数据指示计算平台的服务水平协议(SLA)被满足还是未被满足。
Claims (20)
1.一种计算机可读介质,包含存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
配置网络接口设备以监视对第一存储器池中的数据的访问,并且至少部分地基于所述数据到计算平台的传输速率来选择性地将所述数据迁移到第二存储器池。
2.根据权利要求1所述的计算机可读介质,其中,所述访问包括读取操作和/或写入操作。
3.根据权利要求1所述的计算机可读介质,其中,所述网络接口设备用于也至少部分地基于以下各项中的一个或多个来选择性地将所述数据迁移到第二存储器池:(a)用于访问所述数据的存储器带宽;(b)由所述计算平台从所述第一存储器池访问所述数据的时延;(c)由所述计算平台在时间窗内访问所述数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问所述数据的次数;(e)去往和/或来自所述计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问所述数据的不同计算平台的数量。
4.根据权利要求1所述的计算机可读介质,其中,所述网络接口设备用于也至少部分地基于遥测数据来选择性地将所述数据迁移到第二存储器池,所述遥测数据指示所述计算平台的服务水平协议(SLA)被满足还是未被满足。
5.根据权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
配置所述网络接口设备以至少部分地基于以下操作来选择所述第二存储器池:与在所述计算平台处从所述第一存储器池接收所述数据花费的时间相比减少在所述计算平台处接收所述数据花费的时间。
6.根据权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
配置所述网络接口设备以通知所述计算平台所述数据到所述第二存储器池的存储的改变。
7.根据权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令如果由一个或多个处理器执行,则使所述一个或多个处理器进行以下操作:
配置所述网络接口设备,以在将所述数据迁移到所述第二存储器池期间,将针对所述数据的存储器访问请求重定向到所述第二存储器池。
8.根据权利要求1所述的计算机可读介质,其中,所述网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、转发元件、交换机、基础设施处理单元(IPU)或数据处理单元(DPU)。
9.一种装置,包括:
网络接口设备,当在操作时,所述网络接口设备被配置为:
选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以减少所述可寻址存储器地址的区域的所述数据在计算平台处的可用性时间。
10.根据权利要求9所述的装置,其中,至少部分地基于以下各项中的一个或多个来选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以减少所述可寻址存储器地址的区域的所述数据在计算平台处的可用性时间:(a)用于访问所述数据的存储器带宽;(b)由所述计算平台从所述第一存储器池访问所述数据的时延;(c)由所述计算平台在时间窗内访问所述数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问所述数据的次数;(e)去往和/或来自所述计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问所述数据的不同计算平台的数量。
11.根据权利要求9所述的装置,其中,为了选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以减少所述可寻址存储器地址的区域的所述数据在计算平台处的可用性时间,所述网络接口设备至少部分地基于遥测数据,所述遥测数据指示所述计算平台的服务水平协议(SLA)被满足还是未被满足。
12.根据权利要求9所述的装置,其中
当在操作时,所述网络接口设备用于通知与所述计算平台相关联的存储器管理器所述数据到所述第二存储器池的存储的改变。
13.根据权利要求9所述的装置,其中
当在操作时,所述网络接口设备用于在将所述数据迁移到所述第二存储器池期间,将针对所述数据的存储器访问请求重定向到所述第二存储器池。
14.根据权利要求9所述的装置,其中
当在操作时,所述网络接口设备用于基于与所述计算平台或所述第二存储器池相关联的服务水平协议(SLA)未被满足的确定,来选择性地将所述数据迁移回所述第一存储器池或另一存储器池。
15.根据权利要求9所述的装置,其中,所述网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、转发元件、交换机、基础设施处理单元(IPU)或数据处理单元(DPU)。
16.根据权利要求9所述的装置,包括:服务器,所述服务器用于配置所述网络接口设备以执行选择可寻址存储器地址的区域的数据以从第一存储器池迁移到第二存储器池,以降低所述可寻址存储器地址的区域的所述数据到计算平台的传输时间。
17.根据权利要求9所述的装置,包括:数据中心,其中,所述数据中心包括所述第一存储器池和所述第二存储器池,并且其中,所述网络接口设备用于通过将所述数据从所述第一存储器池迁移到所述第二存储器池来减少从存储器池到所述计算平台的数据访问时间。
18.一种方法,包括:
在交换机处进行以下操作,所述交换机被配置为管理对第一存储器池中的第一存储器地址范围的访问:
选择性地将所述第一存储器池中的所述第一存储器地址范围的数据迁移到第二存储器池,以减少所述数据在计算平台处的可用性时间。
19.根据权利要求18所述的方法,其中,至少部分地基于以下各项中的一个或多个来选择性地将所述第一存储器池中的所述第一存储器地址范围的数据迁移到第二存储器池,以减少所述数据在计算平台处的可用性时间:(a)用于访问所述数据的存储器带宽;(b)由所述计算平台从所述第一存储器池访问所述数据的时延;(c)由所述计算平台在时间窗内访问所述数据的次数;(d)在时间窗内由其他计算平台在时间窗内访问所述数据的次数;(e)去往和/或来自所述计算平台能够访问的一个或多个存储器池的历史拥塞;和/或(f)访问所述数据的不同计算平台的数量。
20.根据权利要求18所述的方法,其中,至少部分地基于遥测数据来选择性地将所述第一存储器池中的所述第一存储器地址范围的数据迁移到第二存储器池,以减少所述数据在计算平台处的可用性时间,所述遥测数据指示所述计算平台的服务水平协议(SLA)被满足还是未被满足。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063130670P | 2020-12-26 | 2020-12-26 | |
US63/130,670 | 2020-12-26 | ||
US17/480,938 US20220004330A1 (en) | 2020-12-26 | 2021-09-21 | Memory pool data placement technologies |
US17/480,938 | 2021-09-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691315A true CN114691315A (zh) | 2022-07-01 |
Family
ID=79166779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111419770.6A Pending CN114691315A (zh) | 2020-12-26 | 2021-11-26 | 存储器池数据放置技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220004330A1 (zh) |
EP (1) | EP4020208A1 (zh) |
CN (1) | CN114691315A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102018205204A1 (de) * | 2018-04-06 | 2019-10-10 | Robert Bosch Gmbh | Verfahren zum Bereitstellen von Anwendungsdaten zumindest einer auf einem Steuergerät eines Fahrzeugs ausführbaren Anwendung, Verfahren zum Kalibrieren eines Steuergeräts, Steuergerät und Auswerteeinrichtung |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10552051B2 (en) * | 2018-02-05 | 2020-02-04 | International Business Machines Corporation | Allocation of heat-tiered storage among throttling units |
US10838647B2 (en) * | 2018-03-14 | 2020-11-17 | Intel Corporation | Adaptive data migration across disaggregated memory resources |
US11340832B2 (en) * | 2019-08-12 | 2022-05-24 | Intel Corporation | Concept for controlling a memory performance in a computer system |
US11573900B2 (en) * | 2019-09-11 | 2023-02-07 | Intel Corporation | Proactive data prefetch with applied quality of service |
US20220091738A1 (en) * | 2020-09-22 | 2022-03-24 | International Business Machines Corporation | Storage tiering within a unified storage environment |
-
2021
- 2021-09-21 US US17/480,938 patent/US20220004330A1/en active Pending
- 2021-11-23 EP EP21209882.6A patent/EP4020208A1/en active Pending
- 2021-11-26 CN CN202111419770.6A patent/CN114691315A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4020208A1 (en) | 2022-06-29 |
US20220004330A1 (en) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416295B2 (en) | Technologies for providing efficient access to data in an edge infrastructure | |
US20210271517A1 (en) | Resource selection based in part on workload | |
US20210243247A1 (en) | Service mesh offload to network devices | |
US20210266253A1 (en) | Pooling of network processing resources | |
US20200241926A1 (en) | Selection and management of disaggregated computing resources | |
US20220103530A1 (en) | Transport and cryptography offload to a network interface device | |
US11936571B2 (en) | Reliable transport offloaded to network devices | |
US20210326221A1 (en) | Network interface device management of service execution failover | |
US20210117244A1 (en) | Resource manager access control | |
US20210329354A1 (en) | Telemetry collection technologies | |
CN111756791A (zh) | 用于加速的功能即服务的网络设备负载平衡器的技术 | |
US20210258265A1 (en) | Resource management for components of a virtualized execution environment | |
US20220086226A1 (en) | Virtual device portability | |
US20210120077A1 (en) | Multi-tenant isolated data regions for collaborative platform architectures | |
EP4020208A1 (en) | Memory pool data placement technologies | |
US20230027516A1 (en) | Method and apparatus to perform packet switching between services on different processors in a compute node in a server | |
EP4030284A1 (en) | Virtual device portability | |
US20220121481A1 (en) | Switch for managing service meshes | |
US20220197819A1 (en) | Dynamic load balancing for pooled memory | |
WO2024098232A1 (en) | Adaptive live migration of a virtual machine for a physical storage device controller | |
US20230019974A1 (en) | Method and apparatus to detect network idleness in a network device to provide power savings in a data center | |
US20220360646A1 (en) | Apparatus and method to perform synchronization services in a switch | |
CN116302468A (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 |