CN117421276A - 用于数据预取的系统和方法 - Google Patents
用于数据预取的系统和方法 Download PDFInfo
- Publication number
- CN117421276A CN117421276A CN202310597610.3A CN202310597610A CN117421276A CN 117421276 A CN117421276 A CN 117421276A CN 202310597610 A CN202310597610 A CN 202310597610A CN 117421276 A CN117421276 A CN 117421276A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- memory
- processor
- metadata
- 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
- 238000000034 method Methods 0.000 title claims description 62
- 230000015654 memory Effects 0.000 claims abstract description 214
- 230000002085 persistent effect Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 13
- 239000007787 solid Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 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
- 230000001934 delay Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种系统。该系统可以包括:包括第一处理器的第一设备、以及包括第二处理器的第二设备、存储器、第一存储设备和第二存储设备。第一存储设备可以以第一速度操作,第二存储设备可以以第二速度操作,第二速度比第一速度慢。第二设备相对于第一设备是远程的。第一设备可以从第二设备的存储器中的存储器地址加载元数据。第一设备还可以至少部分地基于第二设备的存储器中的元数据从第二设备访问数据。
Description
相关申请数据
本申请要求于2022年7月19日提交的美国临时专利申请序列号63/390,618和于2022年9月7日提交的美国专利申请序列号17/939,944的权益,前述申请出于所有目的通过引用并入本文。
技术领域
本公开总体上涉及数据库,并且更具体地,涉及加速从远程服务器检索数据。
背景技术
存储需求往往会随着时间的推移而增加。随着存储设备变得越来越大,要存储的数据量也会增加。从存储设备读取的数据越多,读取所有适当的数据可能需要更多的时间。读取数据可能导致计算负载增加(因为在读取数据时处理器可能在各种线程上等待)。如果存储设备位于远程位置,则这些计算负载可能会进一步增加从远程位置读取数据所需的时间。
需要一种加快从远程服务器检索数据的方法。
发明内容
本公开的实施例包括一种系统。该系统可以包括数据库服务器和存储服务器。数据库服务器可以从存储服务器远程访问元数据,并且可以使用元数据来确定是远程访问数据还是向存储服务器发出对数据的网络套接字(socket)请求。
附图说明
下面描述的附图是可以如何实现本公开的实施例的示例,并且不旨在限制本公开的各个实施例。本公开的各个实施例可以包括未在特定附图中示出的元件和/或可以省略在特定附图中示出的元件。这些图旨在提供说明,并且可以不是按比例绘制的。
图1示出了根据本公开的实施例的其中两个机器通信的系统,其中一个机器从另一个机器读取数据。
图2示出了根据本公开的实施例的图1的机器的细节。
图3示出了根据本公开的实施例的图1的数据库服务器从图1的存储服务器访问数据。
图4是示出根据本公开的实施例的可以被存储在图3的哈希表中的数据的图。
图5示出了根据本公开的实施例的图1的存储服务器。
图6示出了根据本公开的实施例的可以在图1的存储服务器中使用的各种形式的存储设备(storage)。
图7示出了根据本公开的实施例的、图1的数据库服务器从图1的存储服务器访问数据的示例过程的流程图。
图8示出了根据本公开的实施例的、图1的数据库服务器确定数据在图1的存储服务器上的地址的示例过程的流程图。
图9示出了根据本公开的实施例的、图1的数据库服务器从图1的存储服务器访问数据的示例过程的流程图。
图10示出了根据本公开的实施例的、图1的存储服务器在多种形式的存储设备之间复制数据的示例过程的流程图。
图11示出了根据本公开的实施例的、图1的存储服务器在多种形式的存储设备之间复制数据的示例过程的流程图。
具体实施方式
现在将详细参考本公开的实施例,其示例在附图中示出。在下面的详细描述中,提出了多个具体细节,以使得能够彻底理解本公开。然而,应当理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地混淆实施例的各方面。
应当理解,尽管术语第一、第二等在本文中可以用于描述各种元件,但是这些元件不应当受到这些术语的限制。这些术语仅用于区分一个元件与另一个元件。例如,在不脱离本公开的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称作第一模块。
在本文公开的描述中使用的术语仅用于描述特定实施例的目的,而不旨在限制本公开。如在本公开和所附权利要求的描述中所使用的,单数形式也旨在包括复数形式,除非上下文另有明确指示。还应当理解,本文中使用的术语“和/或”是指并包含相关所列项目中的一个或多个的任何和所有可能的组合。还应当理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。附图的组件和特征不一定按比例绘制。
数据库服务器可能不在本地存储其处理的数据。相反,数据可能被存储在远程服务器上。
发出从远程服务器读取数据的请求可能涉及经由网络套接字发送请求。存储服务器在接收到请求时,可以使用哈希表来确定数据当前位于何处。可能的数据位置可以包括动态随机访问存储器(DRAM)、持久存储器(PMEM)或各种存储设备,诸如固态驱动(SSD)或硬盘驱动等。
每种类型的存储设备(DRAM、PMEM、SSD或硬盘驱动)都可以提供不同级别的性能和成本。例如,DRAM可能是最快的存储形式,但也是最昂贵的存储类型。另一方面,硬盘驱动可能相对较慢,但每单位成本可能提供最多的存储空间(即最便宜的存储类型)。
取决于数据所在的位置,存储服务器可以将数据从其当前位置加载到DRAM(或比数据当前所在的存储设备更快的存储形式),然后将数据发送回数据库服务器。通过以更快的存储形式存储数据,存储服务器可以准备对未来访问数据的请求做出更快速的响应。
但是,从数据库服务器发出读取数据的请求到存储服务器将数据返回数据库服务器所需的时间可能相对较长:例如,所需时间可能约为200微秒(μs)。这种延迟可能看起来不大,但乘以大量的读取请求,则可能会变得很明显。由于数据库服务器在等待数据被检索时暂停,因此期望避免或最小化这种延迟。
本公开的实施例通过使数据库服务器使用远程访问命令(例如,远程直接存储器访问(RDMA)命令)访问存储服务器的哈希表来解决这个问题。根据哈希表中的信息,数据库服务器可以确定数据当前被存储在何处。如果数据当前被存储在DRAM或PMEM中,则数据库服务器可以使用另一个远程访问命令来检索数据。由于远程访问命令可能比经由网络套接字发出的读取请求相对更快,因此数据库服务器可能能够使用远程访问命令来更快地检索数据。
此外,存储服务器可以辨识数据库服务器何时经由远程访问命令访问了哈希表。如果其位置在哈希表中被指定的数据当前在较慢的存储设备(诸如硬盘驱动或SSD)上,则存储服务器可以将数据移动到较快的存储设备(诸如PMEM或DRAM)中,以使数据库服务器能够更快地访问数据。
图1示出了根据本公开的实施例的其中两个机器通信的系统,其中一个机器从另一个机器读取数据。图1示出了根据本公开的实施例的包括彼此通信的两个机器的系统。在图1中,机器105_1可以是存储服务器,机器105_2可以是数据库服务器。数据库服务器105_2可以从存储服务器105_1访问数据。机器105_1和105_2可以被统称为机器105。机器105也可以被称为主机或系统。存储服务器105_1可以包括处理器110_1,并且数据库服务器105_2可以包括处理器110_2。处理器110_1和110_2可以被统称为处理器110。存储服务器105_1还可以包括存储器115和存储设备120。未被示出为包括存储器115、存储设备120或任何其他组件的数据库服务器105_2也可以包括这样的组件。处理器110可以是各种处理器。为了便于说明,处理器110以及下面讨论的其他组件被示出在机器外部。本公开的实施例可以在机器内包括这些部件。尽管图1将机器105示出为每个都包括单个处理器110,但机器105可以包括任何数量的处理器,每个处理器可以是单核或多核处理器,每个处理器可以实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(等),并且可以以任何期望的组合混合。
处理器110_1可以耦合到存储器115。存储器115可以是各种存储器,诸如闪存、动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、持久随机访问存储器、铁电随机访问存储器(FRAM)或非易失性随机访问存储器(NVRAM),诸如磁阻随机访问存储器(MRAM)等。根据需要,存储器115可以是易失性或非易失性存储器。存储器115也可以是不同存储器类型的任何期望的组合,并且可以由存储器控制器125管理。存储器115可以用于存储可以被称为“短期”的数据:即,预计不被存储很长一段时间的数据。短期数据的示例可以包括临时文件、应用在本地使用的数据(这些数据可能是从其他存储位置复制的)等。
在本公开的一些实施例中,机器105可以包括持久存储器设备(未在图1中示出)。该持久存储器设备可以代替存储器115被使用、或者除了存储器115之外被使用。
处理器110和存储器115还可以支持各种应用可以在其下运行的操作系统。这些应用可以发出从存储器115读取数据或向存储器115写入数据的请求(也可以被称为命令)。当存储设备120用于支持经由某种文件系统读取或写入数据的应用时,存储设备120可以使用设备驱动器130来访问。尽管图1示出了一个存储设备120,但是在机器105中可以有任何数量的存储设备。每个存储设备120都可以支持任何期望的一种或多种协议,包括例如非易失性存储器高速(NVMe)协议。不同存储设备120可以支持不同协议和/或接口。例如,存储设备120可以支持高速缓存一致互连协议,其可以支持对存储设备120上的数据的块级(或任何其他更高级别的粒度)访问和字节级(或任何其他更低级别的粒度)访问。这种高速缓存一致互连协议的示例是计算高速链路(CXL)协议,其支持使用cxl.io协议以块访问数据以及使用cxl.memory协议以字节访问数据。以这种方式,CXL存储设备上的数据可以作为块级数据(如SSD)或字节级数据(诸如存储器)来访问:CXL存储设备可以用于扩展系统存储器。
图1使用通用术语“存储设备”,并且本公开的实施例可以包括可以支持高速缓存一致互连协议的任何存储设备格式,其示例可以包括硬盘驱动和固态驱动(SSD)。以下对“SSD”、“硬盘驱动”或“存储设备”的任何引用都应被理解为包括本公开的此类其他实施例。此外,不同类型的存储设备可以混合。例如,一个存储设备120可以是硬盘驱动,而另一个存储设备120可以是SSD。
未在图1中示出的是电路板。这些电路板可以包括处理器110、存储器115和/或存储设备120可以被安装在其中的插槽。电路板可以包括主板、背板、中平面(midplane)等。注意,取决于实现方式,这些组件中的一个或多个可以直接安装在电路板上,而不是安装在插槽中。此外,本公开的实施例可以包括互连的多个电路板,其中组件安装在这些电路板上。
图2示出了根据本公开的实施例的图1的机器的细节。图2示出了图1的机器105。在图2中,机器105包括一个或多个处理器110,该一个或多个处理器110可以包括存储器控制器125和时钟205,该时钟205可以用于协调机器组件的操作。处理器110还可以耦合到存储器115,该存储器115例如可以包括随机访问存储器(RAM)、只读存储器(ROM)或其他状态保持介质。处理器110还可以耦合到存储设备120,并且耦合到网络连接器210,该网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,该总线215可以附接用户接口220和输入/输出(I/O)接口端口,输入/输出(I/O)接口端口可以使用I/O引擎225以及其他组件来管理。
图3示出了根据本公开的实施例的图1的数据库服务器从图1的存储服务器访问数据。在图3中,数据库服务器105_2可以执行从存储服务器105_1中的存储器115加载元数据。更具体地,数据库服务器105_2可以从哈希表310加载条目305_1(也可以被称为元数据305_1),该哈希表310可以被存储在存储服务器105_1的存储器115中。换句话说,条目305_1可以存储关于所寻找的数据的元数据。
条目305_1可以是哈希表310中任何数量的条目中的一个。例如,哈希表310可以包括条目305_1到305_5(其可以被统称为条目305或元数据305)。尽管图3将哈希表310示出为包括八个条目305,但并不一定限于此,本公开的实施例可以支持哈希表310中的任何数量的条目305。
每个条目可以标识特定的数据组块(chunk of data)被存储在何处。例如,存储服务器105_1可以包括存储器115和存储设备120。条目305可以存储标识哪个设备当前存储特定数据的存储类型,以及数据当前被存储在该设备上的地址。例如,条目305_2和305_3可以指示数据315_1或315_2被存储在存储器115中的存储器地址处(其可以是存储器115中与哈希表310不同的部分),而条目305_4和305_5可以指示数据块(data block)320_1或320_2被存储在存储设备120的块中。
图4示出了根据本公开的实施例的可以被存储在图3的哈希表中的数据。在图4中,条目305被更详细地示出为包括存储类型405和地址410。存储类型405可以标识存储数据的设备的类型。例如,基于图1的存储服务器105_1中设备的数量,若干比特可以用于标识设备。可替代地(或附加地),存储类型405可以标识存储数据的设备类型是“快速存储设备”还是“慢速存储设备”。下面将参考图6进一步讨论“快速存储设备”和“慢速存储设备”。
返回图3,因为条目305_1可以被存储在存储器115中,所以数据库服务器105_2可以使用远程存储器访问调用(诸如远程直接存储器访问(RDMA)加载请求)来访问条目305_1。这样的请求可以向数据库服务器105_2提供条目305_1中的数据(或元数据),而存储服务器105_1的图1的处理器110_1不需要使用任何处理器周期来处理请求。在本文档的其余部分中,术语“RDMA命令”、“RDMA请求”等旨在指代任何远程访问命令或请求,无论是使用RDMA还是其他类型的命令。同样,在本文件的其余部分中,提及存储设备以一定速度“操作”是指存储设备能够以该速度返回数据。因此,如果第一存储设备、第二存储设备和第三存储设备分别以800MB/秒、500MB/秒和300MB/秒“操作”,则第二存储设备可以相对于第一存储设备被描述为“慢速存储设备”,但相对于第三存储设备被描述为“快速存储设备”。
一旦数据库服务器105_2知道哪个设备存储所讨论的数据,数据库服务器105_2就可以以适当的方式访问数据。例如,如果元数据指示所讨论的数据被存储在存储器115中的某处,则数据库服务器105_2可以使用另一个远程存储器访问调用来访问数据。例如,数据库服务器105_2可以使用RDMA加载请求来访问数据。因此,数据库服务器105_2可以发出RDMA加载请求以从存储器115访问数据315_1或315_2。另一方面,如果元数据指示所讨论的数据被存储在闪存设备上,则数据库服务器105_2可以使用不同的请求来访问数据:例如,非易失性存储器高速结构(non-volatile memory express over fabric,NVMeoF)读取请求。因此,数据库服务器105_2可以发出NVMeoF读取请求以访问数据320_1或320_2。如果数据被存储在远程访问较慢的存储设备上,则数据库服务器105_2也可以选择发出网络套接字请求以从存储服务器105_1读取数据,而不执行对数据的远程访问。
使用本文描述的技术的优点在于,数据库服务器105_2可以比使用通过网络套接字的传统访问请求更快地接收数据。使用网络套接字请求,可以涉及存储服务器105_1的图1的处理器110_1。例如,网络套接字请求可能需要20微秒(μs)才能被接收和处理:如果图1的处理器110_1当前正忙,则网络套接字请求可能等待更长的时间来处理。然后,存储服务器105_1可以访问条目305_1以确定数据被存储在何处,从数据被存储的设备检索数据,并将数据返回到数据库服务器105_2。如果数据被存储在闪存设备上的高速缓存中,存储服务器105_1可能还需要40μs来检索数据以及40μs将数据发送回数据库服务器105_2。再加上100μs用以完成网络套接字读取,总共可能需要200μs才能检索数据并将数据返回到数据库服务器105_2。如果数据被存储在较慢的存储设备(诸如硬盘驱动)上,则完成读取请求的总时间可能会更长。但是,如果数据库服务器105_2能够直接访问条目305_1,然后直接从存储设备检索数据,则所涉及的时间可能更少。例如,执行RDMA加载请求以检索条目305_1可能只需要1μs,执行RDMA加载请求以从闪存设备上的高速缓存中检索数据可能需要另外100μs。由于直接访问数据所需的总时间可能只有101μs,因此所需时间可能仅为使用网络套接字请求检索数据所需时间的1/2。
即使数据被存储在较慢的存储设备上(例如,硬盘驱动)并且数据库服务器105_2选择使用网络套接字请求来从存储服务器105_1读取数据,尝试直接访问数据所花费的增加的时间也可能不是显著的延迟。例如,如果从存储器115中的存储器地址访问数据315_1只需要1μs,则在尝试直接访问之后使用网络套接字请求访问数据的总时间将仅比直接发出网络套接字请求长1μs。例如,如果网络套接字请求需要200μs来完成并使数据库服务器105_2访问数据,则增加的延迟可能仅代表0.5%的额外时间。
尽管图3示出了条目305指向存储器115或存储设备120中的位置,但是本公开的实施例可以具有指示数据也可以被存储在其他位置的条目。例如,如果存储设备120是SSD,并且存储服务器105_1还包括持久存储器设备和硬盘驱动,则条目305可以指向这四个设备中的任何一个,以标识数据被存储在何处。
尚未讨论的一点是数据库服务器105_2如何知道哪个条目305包括关于数据315或320被存储在何处的信息。在本公开的一些实施例中,哈希表310的结构对于数据库服务器105_2来说是已知的。哈希表310的结构是静态确定还是动态确定的并不重要:只要数据库服务器105_2知道哈希表310是如何构造的,数据库服务器105_2就能够发出从哈希表310读取适当条目305的远程存储器访问请求。换句话说,在知道特定数据315或320的标识符的情况下,数据库服务器105_2可以复制存储服务器105_1对该标识符执行的哈希函数,并确定可以存储关于该数据315或320实际被存储在存储服务器105_2上的位置的信息的哈希桶。数据库服务器105_2然后可以知道从哈希表310访问什么条目305,并使用远程存储器访问请求来直接访问该条目。
还应当注意,哈希表310中的每个条目305可以标识已知大小的数据组块可以被存储在何处。例如,数据315或320每个的大小可以是大约8千字节(KB)。如果数据库服务器105_2执行对存储器115的远程存储器访问请求或对存储设备120的存储设备读取请求,则请求可以访问整个8KB组块,然后数据库服务器105_1可以从该组块访问特定的感兴趣数据。
图5示出了根据本公开的实施例的图1的存储服务器。具体地,图5示出了存储服务器105_1复制数据以供数据库服务器105_2将来访问。当数据库服务器105_1发出远程存储器访问请求(诸如RDMA加载请求)时,存储服务器105_2可以检测到该请求。尽管存储服务器105_1在远程存储器访问发生时可能不需要执行任何处理,但是存储服务器105_2可以采取一些动作来加快将来的请求。例如,如图5所示,条目305_1可以指示存储设备120上的块中的数据320_2。存储设备120可能是相对慢的存储设备,并且存储服务器105_1可能预计数据库服务器105_2可以发出网络套接字请求来访问该数据。在预期该网络套接字请求的情况下,存储服务器105_1可以将数据320_2从存储设备120上的块复制到存储器115中的存储器地址中作为数据315_2,如虚线505所示。存储服务器105_1还可以更新条目305_1以反映数据320_2现在可用作存储器115中的数据315_2,如虚线510所示(此信息可以替换或可以补充条目305_1中的原始元数据)。由于存储器115的访问速度可能比存储设备120的访问速度相对更快,因此当存储服务器105_1从数据库服务器105_2接收到网络套接字请求时,存储服务器105_1能够更快地响应网络套接字请求(因为从存储器115读取数据315_2的速度可能比从存储设备120读取数据320_2的速度更快)。
还存在将数据从相对较慢的存储设备复制到较快的存储设备的其他原因。一个额外的原因可能是,如果数据库服务器105_2想要访问数据一次,则数据库服务器105_2可能想要再次访问数据。通过将数据复制到存储器115(或一些相对较快的存储设备)中,数据库服务器105_2将来可能能够更快地远程访问数据。
将数据从相对较慢的存储设备复制到相对较快的存储设备的另一个原因可能是预期数据库服务器105_2想要访问数据,即使这样的访问请求尚未被做出。例如,数据库服务器105_2可能想要访问大量的数据。如果存储服务器105_1将数据依次存储在存储设备120上,则存储服务器105_1可以将相邻数据复制到存储器115中,以预期数据库服务器105_2也可能想要访问该数据。
图6示出了根据本公开的实施例的可以在图1的存储服务器中使用的各种形式的存储设备。在图6中,示出了四种类型的存储设备:存储器115、持久存储器605、SSD 610和硬盘驱动615。尽管图6仅示出了四种类型的存储设备,但是本公开的实施例可以包括任何数量的不同类型的存储设备。图1的存储服务器105_1可以包括这些形式的存储设备的任何组合。
一般地,一种存储形式的速度与其每单位存储成本之间可能存在反比关系。例如,可以是DRAM的存储器115可以是图6中所示的最快形式的存储设备。(也可能存在更快的存储形式,诸如处理器高速缓存,适用相同的一般原理。)但由于2022年每千兆字节(GB)平均成本为4至5美元,DRAM也可能被认为相对昂贵。另一方面,SSD 610可能比存储器115慢,但在2022年每GB 0.10美元至0.20美元的平均成本下,作为SSD购买的存储器可能是DRAM的20倍(或更多)。硬盘驱动615可能比SSD 610慢,但可能更便宜,因为2022年每GB平均成本为0.03美元至0.05美元。
持久存储器605可以以多种方式来实现。持久存储器605可以采用的一种形式在于2022年7月5日提交的美国专利申请序列号17/858,058(其处于待审状态,并且要求于2022年5月10日提交的美国临时专利申请序列号63/340,437和于2022年2月25日提交的美国临时专利申请序列号63/314,361的权益)中进行了描述,出于所有目的,所有这些专利申请通过引用并入本文。在使用在该专利申请中描述的持久存储器的本公开的实施例中,响应时间可以被预计平均在DRAM的响应时间和SSD的响应时间之间(因为这种形式的持久存储器包括DRAM和SSD),并且每GB平均成本可以被预计在DRAM的每GB平均成本和SSD的每GB平均成本之间,这与更快的存储设备可能每GB更昂贵的一般原理一致。
图6中还示出了各种形式的存储设备可以被分类为快速存储设备620或慢速存储设备625。术语“快速存储设备”和“慢速存储设备”应当被理解为相对术语,而不是基于绝对响应时间的。也就是说,特定形式的存储设备在本公开的实施例的一些实现方式中可以被认为是“快的”,并且在本公开实施例的其他实现方式中可以被认为“慢的”。换句话说,在存储形式之间或基于某些阈值响应时间,没有可以区分“快速存储设备”和“慢速存储设备”的“界线”。作为一种替代方案,“快速存储设备”可以是在一个时间单位内返回的数据可能比“慢速存储设备”在同一时间单位返回的数据多的存储形式:可替代地,对于给定数据量,“快速存储设备”可能在比“慢速存储设备”更短的时间内返回数据。
在图6中,存储器115和持久存储器605被认为是快速存储设备620,而SSD 610和硬盘驱动615被认为是慢速存储设备625。快速存储设备620和慢速存储设备625之间的区别可以被认为是在图1的数据库服务器105_2可以比使用网络套接字请求更快地直接访问(例如,使用RDMA加载请求或NVMeoF读取请求)的存储器和可能不比使用网络套接字请求更快地访问的存储器之间的区别。例如,存储器115和持久存储器605可以以足够快的方式被访问,使得图1的数据库服务器105_2可以比使用网络套接字请求更快地访问期望的数据(因此为“快速存储设备”620)。另一方面,SSD 610和硬盘驱动615可能需要足够长的时间来返回数据,即与网络套接字请求相比,直接访问数据没有足够的好处、或者对其更快的访问是不可能的,诸如不支持远程访问的存储设备(因此为“慢速存储设备”625)。
图7示出了根据本公开的实施例的、图1的数据库服务器从图1的存储服务器访问数据的示例过程的流程图。参考图7,在步骤705中,图1的数据库服务器105_2可以从图1的存储服务器105_1的图1的存储器115加载图3的元数据305_1。在步骤710中,图1的数据库服务器105_2可以根据图3的元数据305_1来确定图4的存储类型405,其可以标识当前存储感兴趣数据的存储设备的类型或形式。最后,在步骤715中,图1的数据库服务器105_2可以从图6的适当存储设备115、605、610或615访问图3的数据315或320。
图8示出了根据本公开的实施例的、图1的数据库服务器确定数据在图1的存储服务器上的地址的示例过程的流程图。在图8中,在步骤805中,图1的数据库服务器105_2可以根据图3的元数据305来确定图3的数据315或320的图4的地址410。
图9示出了根据本公开的实施例的、图1的数据库服务器从图1的存储服务器访问数据的示例过程的流程图。参考图9,在步骤905中,图1的数据库服务器105_2可以从图1的存储服务器105_1的快速存储设备(例如,图6的快速存储设备620)加载图3的数据315。可替代地,在步骤910中,图1的数据库服务器105_2可以从图6的慢速存储设备625读取图3的数据320。可替代地,在步骤915中,图1的数据库服务器105_2可以向图1的存储服务器105_1发送对图3的数据315或320的网络套接字请求,并且可以执行步骤920。在步骤920中,图1的数据库服务器105_2可以从图1的存储服务器105_1接收图3的数据315或320。
图10示出了根据本公开的实施例的、图1的存储服务器在多种形式的存储设备之间复制数据的示例过程的流程图。在图10中,在步骤1005中,图1的存储服务器105_1可以确定图1的数据库服务器105_2已经从图1的存储器115访问了图3的元数据305。在步骤1010中,图1的存储服务器105_1可以确定图3的数据320当前在图6的慢速存储设备625上。并且在步骤1015中,图1的存储服务器105_1可以将图3的数据320从图6的慢速存储设备625复制到图6的快速存储设备620,以预期图1的数据库服务器105_2将来访问图3的数据315。
图11示出了根据本公开的实施例的、图1的存储服务器在多种形式的存储设备之间复制数据的示例过程的流程图。参考图11,在步骤1105中,基于图1的数据库服务器105_2已经从图1的存储服务器105_1上的图6的慢速存储设备625访问了图3的另一数据320,图1的存储服务器105_1还可以将图3的另一数据320从图1的存储器服务器105_1上的图6的慢速存储设备625复制到图1的存储服务器105_1上的图6中的快速存储设备620,以预期图1的数据库服务器105_2将来访问图3的数据320。
在图7-图11中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变步骤的次序、通过省略步骤或通过包括未在附图中示出的链接,本公开的其他实施例也是可能的。流程图的所有这些变化都被认为是本公开的实施例,无论是否明确描述。
本公开的实施例可以包括数据库服务器从存储服务器远程访问元数据。元数据可以标识特定数据位于何处。数据库服务器然后可以远程访问数据,而不是使用网络套接字请求来请求存储服务器访问并返回数据。因为从存储服务器直接访问数据可能比使用网络套接字请求更快,所以本公开的实施例提供了由数据库服务器更快访问数据的技术优势,这可以使得能够更快地处理数据。
本公开的实施例包括使用聚合以太网(RoCE)上远程直接存储器访问(RDMA)来访问数据,以减少持久存储器(PMEM)的延迟。
本公开的实施例可以包括具有数据服务器和存储服务器的系统。系统可以维护各种类型的存储器(例如,持久存储器、闪存、易失性存储器等)。例如,预定大小的存储器(例如,大约8KB的块)可以用于在系统中的动态随机访问存储器(DRAM)、闪存或持久存储器中存储数据。如果被存储在DRAM中,则数据可以使用RDMA被直接读取到存储器中。本公开的实施例可以包括具有两个RDMA操作来访问数据。第一操作可以包括读取存储服务器上的哈希表以计算要使用哪个DRAM桶。系统可以由此将数据加载到数据服务器中,数据服务器检查桶以查看数据块是否被缓存,并确定其上存储了数据块的存储器的类型(例如,持久存储器、闪存或高速缓存)。因此,第一操作可以获得元数据信息(例如,数据块的地址)。第二操作可以使用RDMA从持久存储器读取实际数据。
当数据库服务器使用RDMA访问存储服务器时,可能会有两个操作,如前所述。第一操作可以包括从哈希表中读取桶,并且第二操作可以包括从存储服务器读取数据。使用所提出的系统,描述了一种可以减少系统等待时间的更高效的技术。由于系统同时使用DRAM和NAND,因此从DRAM读取数据可能是理想的,因为从持久存储器读取数据可能需要相对较长的时间。
为了缓解这种情况,本公开的实施例可以经由这两个操作、利用存储服务器的行为来读取元数据并使用元数据从持久存储器预取一些数据。首先,存储服务器可以访问一定范围内(例如,位于持久存储器中)的数据,并且可以解析被监视的存储器空间中的数据。存储器预取器可以解析信息(例如,检索地址信息)。一旦存储器预取器识别出持久存储器区域中的数据块,则为了便于访问,预取器可以将数据从NAND传送到DRAM。因此,本公开的实施例可以包括预取少量经保证数据。因此,这种方法可能会带来不利后果,但由于一些数据块预计很快就会被访问,因此未被访问的数据块可以立即被驱逐。例如,如果存储器压力发生,则系统可以被配置为首先驱逐未被访问的数据块。
以下讨论旨在提供对可以在其中实现本公开的某些方面的一个或多个合适机器的简要、一般描述。一个或多个机器可以至少部分地通过来自诸如键盘、鼠标等的传统输入设备的输入以及通过从另一个机器接收到的指令、与虚拟现实(VR)环境的交互、生物测定反馈或其他输入信号来控制。如本文所使用的,术语“机器”旨在广泛地包括单个机器;虚拟机;或通信耦合的机器、虚拟机器或一起操作的设备的系统。示例性机器包括计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持式设备、电话、平板等,以及运输设备,诸如私人或公共交通工具,例如,汽车、火车、出租车等。
一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(诸如内联网、互联网、局域网、广域网等)互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或长程载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等。
本公开的实施例可以通过参考或结合包括功能、过程、数据结构、应用程序等的关联数据来描述,当被机器访问时,这些关联数据使得机器执行任务或定义抽象数据类型或低级硬件上下文。关联数据可以被存储在例如易失性和/或非易失性存储器(例如RAM、ROM等)中、或者被存储在其他存储设备及其关联存储介质(包括硬盘驱动、软盘、光存储设备、磁带、闪存、记忆棒、数字视频盘、生物存储设备等)中。关联数据可以以分组、串行数据、并行数据、传播信号等的形式,通过传输环境(包括物理和/或逻辑网络)来传递,并且可以以压缩或加密的格式使用。关联数据可以在分布式环境中使用,并被本地和/或远程存储以供机器访问。
本公开的实施例可以包括有形的、非暂时性机器可读介质,包括可由一个或多个处理器执行的指令,这些指令包括用于执行本文描述的公开的元件的指令。
上述方法的各种操作可以通过能够执行操作的任何合适的部件(诸如各种硬件和/或软件组件、电路和/或模块)来执行。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以体现在由指令执行系统、装置或设备(诸如单核或多核处理器或包含处理器的系统)使用或与之结合使用的任何“处理器可读介质”中。
结合本文公开的实施例所描述的方法或算法和功能的块或步骤可以直接体现在硬件中、由处理器执行的软件模块中或两者的组合中。如果以软件实现,则这些功能可以作为一个或多个指令或代码存储在有形的、非暂时性计算机可读介质上或者通过该介质传输。软件模块可以驻留在随机访问存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或本领域已知的任何其他形式的存储介质中。
在参考所示实施例描述和示出了本公开的原理之后,将认识到,在不偏离这些原理的情况下,可以在布置和细节上修改所示的实施例,并且可以以任何期望的方式组合实施例。此外,尽管前面的讨论集中在特定实施例上,但是也可以考虑其他配置。特别地,即使在本文中使用了诸如“根据本公开的实施例”的表达,这些短语一般是指实施例可能性,而不是旨在将本公开限制于特定的实施例配置。如本文所使用的,这些术语可以引用可组合成其他实施例的相同或不同的实施例。
前述说明性实施例不应被解释为限制其公开。尽管已经描述了一些实施例,但是本领域技术人员将容易地理解,在不实质上偏离本公开的新颖教导和优点的情况下,可以对这些实施例进行多种修改。因此,所有这样的修改旨在被包括在下面定义的本公开的范围内。
本公开的实施例包括一种系统,包括:
第一设备,包括第一处理器,以及
第二设备,包括第二处理器、存储器、以第一速度操作的第一存储设备和以第二速度操作的第二存储设备,其中,第二速度比第一速度慢,
其中,第二设备相对于第一设备是远程的,
其中,第一设备被配置为从第二设备的存储器中的存储器地址加载元数据,并且
其中,第一设备被配置为至少部分地基于第二设备的元数据,从第二设备访问数据。
本公开的实施例包括该系统,其中,第二设备的存储器被配置为存储哈希表,该哈希表包括存储器地址。
本公开的实施例包括该系统,其中:
第一存储设备包括固态驱动(SSD)或硬盘驱动中的至少一个,并且
第二存储设备包括存储器或持久存储器中的至少一个。
本公开的实施例包括该系统,其中,第一设备还被配置为从第二设备的存储器中的存储器地址加载元数据,其中,第二设备的第二处理器执行任支持第一设备的第一处理器从第二设备的存储器中的存储器地址加载元数据的何操作。
本公开的实施例包括该系统,其中,第二设备的存储器中的元数据包括数据的存储类型。
本公开的实施例包括该系统,其中,该存储类型标识第一存储设备或第二存储设备中的至少一个。
本公开的实施例包括该系统,其中,第一设备被配置为至少部分地基于远程直接存储器访问(RDMA)从第二设备的存储器中的存储器地址加载元数据。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据,从第二设备的第一存储设备加载数据。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据中标识第一存储设备的存储类型和第二设备的存储器中的元数据中的数据地址,从第二设备的第一存储设备加载数据。
本公开的实施例包括该系统,其中,第二设备的第一存储设备包括第二设备的存储器。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据,从第二设备的第二存储设备读取数据。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据中标识第二存储设备的存储类型和第二设备的存储器中的元数据中的数据地址,从第二设备的第二存储设备读取数据。
本公开的实施例包括该系统,其中,第一设备还被配置为从第二设备的第二存储设备读取数据,而不需要第二设备的第二处理器执行支持第一设备的第一处理器从第二设备的第二存储设备读取数据的任何操作。
本公开的实施例包括该系统,其中,第一设备还被配置为使用非易失性存储器高速结构(NVMeoF)请求从第二设备的第二存储设备读取数据。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据,向第二设备发送读取请求。
本公开的实施例包括该系统,其中,第一设备还被配置为至少部分地基于第二设备的存储器中的元数据中标识第二存储设备的存储类型,向第二设备发送读取请求。
本公开的实施例包括该系统,其中,第二设备被配置为至少部分地基于第一设备从第二设备的存储器中的存储器地址加载元数据,将数据从第二设备的第二存储设备复制到第二设备的第一存储设备。
本公开的实施例包括该系统,其中,第二设备还被配置为至少部分地基于将数据从第二设备的第二存储设备复制到第二设备的第一存储设备,更新第二设备的存储器中的元数据。
本公开的实施例包括该系统,其中,第二设备被配置为至少部分地基于第一设备从第二设备的存储器中的存储器地址加载元数据,将第二数据从第二设备的第二存储设备复制到第二设备的第一存储设备。
本公开的实施例包括该系统,其中,第二设备还被配置为至少部分地基于将第二数据从第二设备的第二存储设备复制到第二设备的第一存储设备,更新第二设备的存储器中的第二元数据。
本公开的实施例包括一种方法,包括:
由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据,第二设备相对于第一设备是远程的,
由第一设备的处理器至少部分地基于元数据,确定存储在第二设备上的数据的存储类型,以及
由第一设备的处理器从第二设备访问数据。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据包括:由第一设备的处理器从第二设备的存储器中的哈希表中的存储器地址加载元数据。
本公开的实施例包括该方法,其中,该哈希表的结构对于第一设备和第二设备是已知的。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据包括:由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据,而第二设备的第二处理器不执行支持第一设备的处理器从第二设备的存储器中的哈希表中的存储器地址加载元数据的任何操作。
本公开的实施例包括该方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是第一存储类型,
其中,第一存储类型以比第二存储类型的第二速度快的第一速度操作。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第二设备的第一存储设备加载数据。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的第一存储设备加载数据包括:由第一设备的处理器至少部分地基于远程直接存储器访问(RDMA)从第二设备的第一存储设备加载数据。
本公开的实施例包括该方法,其中,第二设备的第一存储设备包括第二设备的存储器或第二设备的持久存储器中的至少一个。
本公开的实施例包括该方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型还包括确定数据在第二设备的第一存储设备上的数据地址。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的第一存储设备加载数据包括:由第一设备的处理器从第二设备的第一存储设备上的数据地址加载数据。
本公开的实施例包括该方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是第二存储类型,其中,第二存储类型以比第一存储类型的第一速度慢的第二速度操作。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第二设备的第二存储设备读取数据。
本公开的实施例包括该方法,其中,第二设备的第二存储设备包括第二设备的固态驱动(SSD)或第二设备的硬盘驱动中的至少一个。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器从第二设备的第二存储设备读取数据,而第二设备的第二处理器不执行支持第一设备的处理器从第二设备的第二存储设备读取数据的任何操作。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器使用非易失性存储器高速结构(NVMeoF)请求从第二设备的第二存储设备读取数据。
本公开的实施例包括该方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型还包括:确定数据在第二设备的第二存储设备上的数据地址。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器从第二设备的第二存储设备上的数据地址读取数据。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备访问数据包括向第二设备发送对数据的读取请求。
本公开的实施例包括该方法,其中,由第一设备的处理器从第二设备访问数据还包括从第二设备接收数据。
本公开的实施例包括一种方法,包括:
由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据,第二设备相对于第一设备是远程的,
由第一设备的第一处理器确定与元数据相关联的数据当前被存储在第一设备的第一存储设备上,以及
由第一设备的第一处理器将数据从第一设备的第一存储设备复制到第一设备的第二存储设备中。
本公开的实施例包括该方法,其中:
第一存储设备包括以第一速度操作的第二存储类型,并且
第二存储设备包括以第二速度操作的第一存储类型,
其中,第一速度比第二速度慢。
本公开的实施例包括该方法,其中:
第一存储设备包括固态驱动(SSD)或硬盘驱动中的至少一个,并且
第二存储设备包括存储器或持久存储器中的至少一个。
本公开的实施例包括该方法,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据包括:由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的哈希表中的存储器地址访问了元数据。
本公开的实施例包括该方法,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据包括:由第一设备的第一处理器检测第一设备的存储器中的存储器地址的远程直接存储器访问(RDMA)。
本公开的实施例包括该方法,还包括:由第一设备的第一处理器将第二数据从第一设备的第一存储设备复制到第一设备的第二存储设备中。
本公开的实施例包括一种物品,包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当由设备执行时,这些指令使得:
由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据,第二设备相对于第一设备是远程的,
由第一设备的处理器至少部分地基于元数据,确定存储在第二设备上的数据的存储类型,以及
由第一设备的处理器从第二设备访问数据。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据包括:由第一设备的处理器从第二设备的存储器中的哈希表中的存储器地址加载元数据。
本公开的实施例包括该物品,其中,该哈希表的结构对于第一设备和第二设备是已知的。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据包括:由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据,而第二设备的第二处理器不执行支持第一设备的处理器从第二设备的存储器中的哈希表中的存储器地址加载元数据的任何操作。
本公开的实施例包括该物品,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是第一存储类型,
其中,第一存储类型以比第二存储类型的第二速度快的第一速度操作。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第二设备的第一存储设备加载数据。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的第一存储设备加载数据包括:由第一设备的处理器至少部分地基于远程直接存储器访问(RDMA)从第二设备的第一存储设备加载数据。
本公开的实施例包括该物品,其中,第二设备的第一存储设备包括第二设备的存储器或第二设备的持久存储器中的至少一个。
本公开的实施例包括该物品,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型还包括确定数据在第二设备的第一存储设备上的数据地址。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的第一存储设备加载数据包括:由第一设备的处理器从第二设备的第一存储设备上的数据地址加载数据。
本公开的实施例包括该物品,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是第二存储类型,
其中,第二存储类型以比第一存储类型的第一速度慢的第二速度操作。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第二设备的第二存储设备读取数据。
本公开的实施例包括该物品,其中,第二设备的第二存储设备包括第二设备的固态驱动(SSD)或第二设备的硬盘驱动中的至少一个。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器从第二设备的第二存储设备读取数据,而第二设备的第二处理器不执行支持第一设备的处理器从第二设备的第二存储设备读取数据的任何操作。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器使用非易失性存储器高速结构(NVMeoF)请求从第二设备的第二存储设备读取数据。
本公开的实施例包括该物品,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型还包括:确定数据在第二设备的第二存储设备上的数据地址。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备的第二存储设备读取数据包括:由第一设备的处理器从第二设备的第二存储设备上的数据地址读取数据。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备访问数据包括向第二设备发送对数据的读取请求。
本公开的实施例包括该物品,其中,由第一设备的处理器从第二设备访问数据还包括从第二设备接收数据。
本公开的实施例包括一种物品,包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当由设备执行时,这些指令使得:
由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据,第二设备相对于第一设备是远程的,
由第一设备的第一处理器确定与元数据相关联的数据当前被存储在第一设备的第一存储设备上,以及
由第一设备的第一处理器将数据从第一设备的第一存储设备复制到第一设备的第二存储设备中。
本公开的实施例包括该物品,其中:
第一存储设备包括以第一速度操作的第二存储类型,并且
第二存储设备包括以第二速度操作的第一存储类型,
其中,第一速度比第二速度慢。
本公开的实施例包括该物品,其中:
第一存储设备包括固态驱动(SSD)或硬盘驱动中的至少一个,并且
第二存储设备包括存储器或持久存储器中的至少一个。
本公开的实施例包括该物品,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据包括:由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的哈希表中的存储器地址访问了元数据。
本公开的实施例包括该物品,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问元数据包括:由第一设备的第一处理器检测第二设备的第二处理器对第一设备的存储器中的存储器地址的远程直接存储器访问(RDMA)。
本公开的实施例包括该物品,该非暂时性存储介质上存储有进一步的指令,当由设备执行时,这些指令使得:由第一设备的第一处理器将第二数据从第一设备的第一存储设备复制到第一设备的第二存储设备中。
因此,鉴于本文所描述的实施例的各种排列,本详细描述和所附材料仅用于说明,而不应被视为限制本公开的范围。
Claims (20)
1.一种系统,包括:
第一设备,包括第一处理器,以及
第二设备,包括第二处理器、存储器、以第一速度操作的第一存储设备和以第二速度操作的第二存储设备,其中,第二速度比第一速度慢,
其中,第二设备相对于第一设备是远程的,
其中,第一设备被配置为从第二设备的存储器中的存储器地址加载元数据,并且
其中,第一设备被配置为至少部分地基于第二设备的元数据,从第二设备访问数据。
2.根据权利要求1所述的系统,其中,第二设备的存储器被配置为存储哈希表,所述哈希表包括存储器地址。
3.根据权利要求1所述的系统,其中,所述元数据包括数据的存储类型。
4.根据权利要求1所述的系统,其中,第一设备还被配置为至少部分地基于元数据,从第一存储设备加载数据。
5.根据权利要求4所述的系统,其中,第一设备还被配置为至少部分地基于元数据中标识第一存储设备的存储类型和元数据中的数据地址,从第一存储设备加载数据。
6.根据权利要求1所述的系统,其中,第一设备还被配置为至少部分地基于元数据,从第二存储设备读取数据。
7.根据权利要求6所述的系统,其中,第一设备还被配置为至少部分地基于元数据中标识第二存储设备的存储类型和元数据中的数据地址,从第二存储设备读取数据。
8.根据权利要求1所述的系统,其中,第二设备被配置为至少部分地基于第一设备从存储器中的存储器地址加载元数据,将数据从第二存储设备复制到第一存储设备。
9.根据权利要求8所述的系统,其中,第二设备被配置为至少部分地基于第一设备从存储器地址加载元数据,将第二数据从第二存储设备复制到第一存储设备。
10.一种方法,包括:
由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据,第二设备相对于第一设备是远程的,
由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型,以及
由第一设备的处理器从第二设备访问数据。
11.根据权利要求10所述的方法,其中,由第一设备的处理器从第二设备的存储器中的存储器地址加载元数据包括:由第一设备的处理器从存储器中的哈希表中的存储器地址加载元数据。
12.根据权利要求10所述的方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是以第一速度操作的第一存储类型。
13.根据权利要求12所述的方法,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第一存储设备加载数据。
14.根据权利要求12所述的方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型还包括:确定数据在第一存储设备上的数据地址。
15.根据权利要求10所述的方法,其中,由第一设备的处理器至少部分地基于元数据确定存储在第二设备上的数据的存储类型包括:由第一设备的处理器确定存储类型是以第二速度操作的第二存储类型。
16.根据权利要求15所述的方法,其中,由第一设备的处理器从第二设备访问数据包括:由第一设备的处理器从第二存储设备读取数据。
17.一种方法,包括:
由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据,第二设备相对于第一设备是远程的,
由第一设备的第一处理器确定与元数据相关联的数据当前被存储在第一设备的第一存储设备上,以及
由第一设备的第一处理器将数据从第一设备的第一存储设备复制到第一设备的第二存储设备中。
18.根据权利要求17所述的方法,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据包括:由第一设备的第一处理器确定第二处理器已经从存储器中的哈希表中的存储器地址访问了元数据。
19.根据权利要求17所述的方法,其中,由第一设备的第一处理器确定第二设备的第二处理器已经从第一设备的存储器中的存储器地址访问了元数据包括:由第一设备的第一处理器检测第二设备的第二处理器对第一设备的存储器中的存储器地址的远程直接存储器访问(RDMA)。
20.根据权利要求17所述的方法,还包括:由第一设备的第一处理器将第二数据从第一存储设备复制到第二存储设备中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/390,618 | 2022-07-19 | ||
US17/939,944 | 2022-09-07 | ||
US17/939,944 US11960419B2 (en) | 2022-07-19 | 2022-09-07 | Systems and methods for data prefetching for low latency data read from a remote server |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117421276A true CN117421276A (zh) | 2024-01-19 |
Family
ID=89525283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310597610.3A Pending CN117421276A (zh) | 2022-07-19 | 2023-05-25 | 用于数据预取的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117421276A (zh) |
-
2023
- 2023-05-25 CN CN202310597610.3A patent/CN117421276A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11194710B2 (en) | Garbage collection—automatic data placement | |
CN109725840B (zh) | 利用异步冲刷对写入进行节流 | |
US20210072923A1 (en) | Storage device and computer system | |
CN110895446A (zh) | 存储设备以及系统 | |
US20100287217A1 (en) | Host control of background garbage collection in a data storage device | |
US11526296B2 (en) | Controller providing host with map information of physical address for memory region, and operation method thereof | |
US10585594B1 (en) | Content-based caching using digests | |
KR20090109959A (ko) | 스토리지 장치 | |
CN108073358B (zh) | 包括存储设备的用户设备及存储设备的修剪管理方法 | |
EP4310690A1 (en) | Systems and methods for data prefetching for low latency data read from a remote server | |
US11630780B2 (en) | Flash memory controller mechanism capable of generating host-based cache information or flash-memory-based cache information to build and optimize binary tree with fewer nodes when cache stores data from host | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
US11507294B2 (en) | Partitioning a cache for fulfilling storage commands | |
CN112988620A (zh) | 数据处理系统 | |
CN117421276A (zh) | 用于数据预取的系统和方法 | |
CN118427012A (zh) | 一种映射表元数据恢复方法、装置、设备及存储介质 | |
US20240094908A1 (en) | Systems and methods for performing data compression in memory | |
EP4432106A1 (en) | Systems and methods for a cache-coherent interconnect protocol storage device | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
EP4394576A1 (en) | Apparatus and methods for accessing data at a storage node | |
US20240330193A1 (en) | System and method for embeddings retrieval | |
CN116431535A (zh) | 高效和并行的模型运行 | |
CN118259829A (zh) | 用于访问存储节点处的数据的设备和方法 | |
KR20240083513A (ko) | 스토리지 장치 및 이의 동작 방법 | |
CN116431528A (zh) | 用于运行内核的低等待时间输入数据分级 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |