CN102508638B - 用于非一致性内存访问的数据预取方法和装置 - Google Patents

用于非一致性内存访问的数据预取方法和装置 Download PDF

Info

Publication number
CN102508638B
CN102508638B CN201110296544.3A CN201110296544A CN102508638B CN 102508638 B CN102508638 B CN 102508638B CN 201110296544 A CN201110296544 A CN 201110296544A CN 102508638 B CN102508638 B CN 102508638B
Authority
CN
China
Prior art keywords
size
fetching
looking ahead
data
buffer pool
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.)
Expired - Fee Related
Application number
CN201110296544.3A
Other languages
English (en)
Other versions
CN102508638A (zh
Inventor
谭玺
韦竹林
刘轶
朴明铉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Du Qianrong
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201110296544.3A priority Critical patent/CN102508638B/zh
Publication of CN102508638A publication Critical patent/CN102508638A/zh
Priority to PCT/CN2012/082202 priority patent/WO2013044829A1/zh
Application granted granted Critical
Publication of CN102508638B publication Critical patent/CN102508638B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供用于非一致性内存访问的数据预取方法和装置,以提高NUMA架构下文件预取的可靠性和准确率。本发明实施例提供一种用于非一致性内存访问的数据预取方法,所述方法包括:根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r;求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize;比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。本发明提供的方法综合考虑了磁盘I/O负载和节点内存剩余大小等影响系统性能的因素,有利于隐藏数据I/O和节省系统资源。

Description

用于非一致性内存访问的数据预取方法和装置
技术领域
本发明涉及通信领域,尤其涉及用于非一致性内存访问的数据预取方法和装置。
背景技术
目前,磁盘依然是计算机系统的主要存储介质。然而,随着技术的日新月异,磁盘面临着其输入/输出(Input/Output,I/O)带宽比不上中央处理器(CentralProcessing Unit,CPU)/内存的发展速度和磁盘的访问延迟与CPU/内存的读写速度差距日益扩大的两大挑战。在CPU速度、磁盘传输速度和磁盘I/O访问速度三者中,磁盘I/O访问速度的提高最缓慢,特别地,磁盘I/O访问速度与CPU的速度差距越来越大,磁盘I/O访问时延已经成为制约系统I/O性能的一个最主要的瓶颈。在操作系统层面,异步化是一种非常有效的I/O性能优化策略,数据预取则是实现I/O的异步化的常用方法。
所谓数据预取,是指系统在后台提前进行I/O操作,将所需数据提前加载到内存,以隐藏应用程序的I/O延迟,从而可以有效地提高计算机系统的利用率。与传统的串行处理相比,数据预取提供的异步操作策略可以消除CPU的等待时间,使CPU与磁盘能并行工作,进而从整体上提高系统的I/O性能。数据预取采用模式匹配的方法,即,通过监测应用程度对各个文件的访问序列,维护其历史访问记录,并将其与识别出来的模式逐一进行模式匹配。如果符合某一访问模式的行为特征,即可依此进行数据的预测和预取。具体的实现技术包括启发式预取和知情式预取,其中,启发式预取对上层应用是透明的,通过自动观测程序的历史访问记录,分析其I/O特征,独立自主地预测并预取即将被访问的数据块。
Linux内核2.6.23之后的版本提供了一种基于启发式的按需预取算法,它工作在虚拟文件系统(Virtual File System,VFS)层,对上统一地服务于各种文件读取操作(通过系统调用API),对下独立于具体的文件系统。按需预取算法引入了页面状态和页面缓存状态,采用宽松的顺序性判决条件,对顺序性I/O操作提供有效的支持,包括异步/非阻塞I/O、多线程交织I/O、顺序随机混合I/O、大规模并发I/O等多种操作。当应用程序要进行数据的访问时,通过系统调用接口,经由页面缓存访问一个磁盘文件。内核对这一标准文件访问路径调用预取算法,跟踪应用程序的访问序列,并进行恰当的预取。具体地,Linux提供的基于启发式的按需预取算法主要通过监控应用程序的读请求和页面缓存来判定应用程序的访问模式,再根据访问模式来决定预取的位置和大小等。预取框架大致可分为两大部分:监控部分和判断处理部分,其中,监控部分嵌入在do_generic_file_read()函数等读请求响应历程中,检测请求中的每一个页面是否已经在文件缓存地址空间中,如果没有,则申请一个新的页面,同时应用程序被临时挂起而等待I/O加载该页面,进行同步预读。如果该新页面的偏移量正好是预读参数async_size指向的位置,则为该页面置预取标记(PG_readahead)。在后续的数据预取过程中,当检测到预取标记页面(PG_readahead page),则意味着下一个预取I/O的时机已经到来,系统进行异步预读。匹配部分位于ondemand_readahead()函数,在逻辑上由一组独立的判决模块组成,判断是否是文件开始读、小文件读、顺序读和随机读。按需预取框架支持顺序读和随机读两种访问模式,对小文件读则采取简单的抛弃,不进行数据预取。
无论是Linux内核2.6.23之后版本提供的基于启发式的按需预取算法还是其他数据预取技术,在设计之初,都是面向单处理器系统的。由于单处理器系统本身受到处理器的计算能力、存储器容量和带宽等因素的限制,因此,对应的数据预取设计得相对比较保守,尤其是预取量管理部分:以初次读请求的页面大小为基准,采取以2为因子的倍增策略并设定上限窗口。
随着科学计算、事务处理对计算机性能要求的不断提高,对称多处理器(Symmetrical Multi-Processing,SMP)系统的应用越来越广泛,规模也越来越大。非一致性内存访问(Non-Uniform Memory Access,NUMA)的多处理器系统是由若干通过高速专用网络连接起来的独立节点构成的系统,各个节点可以是单个的CPU或是SMP系统。NUMA系统作为分布式共享存储器结构一类,同时结合了SMP系统易编程性和分布式存储系统高可扩展性的优点,已成为当今高性能服务器的主流体系结构之一。
基于分布式共享内存的NUMA架构的多处理器系统在CPU访问队列控制、内存访问控制和节点负载平衡等体系架构上与单处理器系统有很大的区别,针对单处理器系统的数据预取已经不能满足NUMA架构的多处理器系统环境。如果将Linux系统部署在分布式共享内存的NUMA架构服务器上,由于Linux系统提供的预取量管理方法没有综合考虑NUMA架构服务器特有的性质,例如,CPU负载、节点剩余内存大小和全局剩余内存大小等影响因素,因此,这种针对单处理器系统的数据预取的实际运行效果不能达到最优。例如,多个处理器同时访问文件时,如果仍然按照针对单处理器系统设计的预取数据量去预取数据,则可能导致磁盘系统负载过重;又如,当NUMA架构的节点本地剩余内存较少时,如果仍然按照针对单处理器系统设计的预取数据量去预取数据,由于NUMA架构分布式内存的特性导致访问远端内存延迟较大,很有可能在节点本地内存中的数据尚未取走(没有被访问远端内存的节点取走)时,预取回的数据进一步加剧了对节点本地剩余内存的占用。
发明内容
本发明实施例提供用于非一致性内存访问的数据预取方法和装置,以提高NUMA架构下文件预取的可靠性和准确率。
本发明实施例提供一种用于非一致性内存访问的数据预取方法,所述方法包括:
根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r;
求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。
本发明实施例提供一种用于非一致性内存访问的数据预取装置,所述装置包括:
数据预取量参数因子获取模块,用于根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取数据预取量参数因子r;
预取量窗口倍增模块,用于求取前一次预取窗口的大小Rprev_size、预取量每次最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
预取量窗口获取模块,用于比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。
从上述本发明实施例可知,在根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取了数据预取量参数因子r后,即可由前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale和所述数据预取量参数因子r三者的乘积Ssize与设定的最大预取量MAXreadahead的大小关系确定本次预取窗口的大小,最终按照确定出的预取窗口的大小去预取数据。由于表征NUMA系统中磁盘负载的参数与当前操作系统的输入/输出I/O队列相关,并且,是数据预取量参数因子r根据进程所在节点的空闲预取缓冲区容量获取,因此,与现有技术提供的针对单处理器的数据预取算法相比,本发明实施例提供的数据预取方法综合考虑了磁盘I/O负载和节点内存剩余大小等影响系统性能的因素,即,在磁盘I/O负载较轻、节点剩余内存较多时,适当地扩大数据预取量,有利于隐藏数据I/O,当磁盘I/O负载较重、节点剩余内存较少时,适当地减小数据预取量,有利于节省系统资源。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,还可以如这些附图获得其他的附图。
图1是本发明实施例提供的用于非一致性内存访问的数据预取方法流程示意图;
图2是数据预取算法的一般设计原理示意图;
图3是数据预取算法的工作层次示意图;
图4是数据预取算法中预取窗口示意图;
图5是本发明实施例提供的用于非一致性内存访问的数据预取装置结构示意图;
图6是本发明另一实施例提供的用于非一致性内存访问的数据预取装置结构示意图;
图7是本发明另一实施例提供的用于非一致性内存访问的数据预取装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员所获得的所有其他实施例,都属于本发明保护的范围。
请参阅附图1,是本发明实施例提供的用于非一致性内存访问的数据预取方法流程示意图,主要包括步骤:
S101,根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r。
需要说明的是,NUMA系统虽然包含多个节点,但只运行一个操作系统,因此,数据预取是针对整个操作系统而言。在本发明实施例中,所述表征NUMA系统中磁盘负载的参数与当前操作系统的输入/输出I/O队列相关。所谓“当前操作系统的I/O队列”,是指由I/O队列由操作系统管理且当前对磁盘访问的I/O队列,即,当前NUMA系统中有多少个读写队列正在对磁盘进行访问。
为了便于说明节点的空闲预取缓冲区容量,此处以Linux系统为例,就数据预取算法的设计原理以及工作层次,对数据预取算法进行简单介绍。Linux内核在完成对数据的读取之后,会将它最近访问过的文件页面缓存到内存中一段时间,这段缓存文件页面的内存被称为页面缓存(page cache)。通常情况下所说到的数据读取(通过系统的“read()”这个API)发生在应用程序缓冲区(Application Buffer)与页面缓存(page cache)之间,如附图2所示,而数据预取算法则负责从磁盘中读取数据填充页面缓存(page cache)。应用程序从页面缓存读取到应用程序缓冲区时,其读取颗粒一般都比较小,例如,文件拷贝命令的读写粒度一般是4KByte(千字节),内核的数据预取则会以它认为更合适的大小,例如,16KByte(千字节)至128KByte(千字节)将数据从磁盘中填充至页面缓存(page cache)。至于数据预取算法的工作层次,可以参阅附图3。数据预取算法工作于VFS层,对上统一地服务于各种文件读取操作(系统调用API),对下独立于具体的文件系统。当应用程序通过read()、pread()、readv()、aI/O_read()、sendfile()和splice()等不同的系统API请求读取文件数据时,都会进入统一的读请求处理函数do_generic_file_read()。这个函数从页面缓存中取出数据来满足应用程序的请求,并在适当的时候调用预读例程进行必要的预读I/O。预读算法发出的预读I/O请求交由_do_page_cache_readahead()进行预处理,该函数检查请求中的每一个页面是否已经在文件缓存地址空间中,如果没有的话就申请一个新页面。如果该新页面的偏移量正好是预读参数async_size指向的位置,则为该页面置PG_readahead标记。最后,所有的新页面被传给read_pages(),它们在这里被逐个加入内存中radix tree和inactive_list,并调用所在文件系统的readpage(),将页面交付I/O。
在本发明实施例中,节点的预取缓冲区就是系统分配给节点的、一段用于缓存节点内核最近访问过的文件页面的内存,即页面缓存(page cache),而节点的空闲预取缓冲区也就是除去页面缓存(page cache)中被已经预取到的数据占用的内存之后剩余的内存。节点的空闲预取缓冲区容量也是影响数据预取量大小的因素之一。
S102,求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
在数据预取算法中,当某个进程所属的一个运行在节点上的线程读取文件时,每当发出一个数据预取请求,数据预取算法都会以一个称为“预取窗口”的数据结构来记录该数据预取请求以表明请求预取的数据长度,如附图4所示。起点(start)和大小(size)构成一个预取窗口,记录了最近一次预取请求的位置和大小,async_size指示了异步预取的位置提前量。PG_readahead page是在上一次预取I/O中设置的,指示应用程序已经用尽了足够的提前读窗口,进行下一个预取I/O的时机已经到来,启动异步预读以读取更多的文件页面。因此,通过记录的数据预取请求,很容易获取前一次预取窗口的大小Rprev_size
需要说明的是,若进程是初次对文件访问,即不存在之前记录的预取窗口,因此,在这种情形下,可以将预取窗口大小设置为比初次请求预取的数据长度大,例如,可以将预取窗口大小设置为初次请求预取的数据长度的2倍。当然,也可以设置为其他倍数,原则上只要比初次请求预取的数据长度大即可,本发明对此不做特别限制。
在本发明实施例中,预取量最大倍增倍数Tscale用来限制每一次预取量倍增倍数,可以由用户根据实际情况设定。Ssize与前一次预取窗口的大小Rprev_size、预取量每次最大倍增倍数Tscale以及所述数据预取量参数因子r三者的关系为Ssize=Rprev_size×Tscale×r。
S103,比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。
由于受预取缓冲区容量等各方面的限制,预取窗口的大小不可能无限地增大,例如,预取窗口的大小不可能按照Rprev_size×Tscale×r这一关系无限地增大,即,应该对预取窗口的大小进行某种限制。
在本发明实施例中,可以由用户设置一个最大预取量MAXreadahead,然后,将MAXreahahead与步骤S102中求取的Ssize(=Rprev_size×Tscale×r)进行比较,最终,以MAXreadahead和Ssize中的较小值作为预取窗口的大小去预取数据。
从上述本发明实施例提供的用于非一致性内存访问的数据预取方法可知,在根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取了数据预取量参数因子r后,即可由前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale和所述数据预取量参数因子r三者的乘积Ssoze与设定的最大预取量MAXreadahead的大小关系确定本次预取窗口的大小,最终按照确定出的本次预取窗口的大小去预取数据。由于表征NUMA系统中磁盘负载的参数与当前操作系统的输入/输出I/O队列相关,并且,是数据预取量参数因子r根据进程所在节点的空闲预取缓冲区容量获取,因此,与现有技术提供的针对单处理器的数据预取算法相比,本发明实施例提供的数据预取方法综合考虑了磁盘I/O负载和节点内存剩余大小等影响系统性能的因素,即,在磁盘I/O负载较轻、节点剩余内存较多时,适当地扩大数据预取量,有利于隐藏数据I/O,当磁盘I/O负载较重、节点剩余内存较少时,适当地减小数据预取量,有利于节省系统资源。
在本发明提供的一个实施例中,由表征NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取数据预取量参数因子r,可以通过以下方式实现:
首先,根据表征NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取磁盘负载对预取量增长的权重和进程所在节点的预取缓冲区容量对预取量增长的权重;然后,求取所述磁盘负载对预取量增长的权重与所述进程所在节点的预取缓冲区容量对预取量增长的权重的差值,该差值即为数据预取量参数因子r。
在上述根据表征NUMA系统中磁盘负载的参数获取磁盘负载对预取量增长的权重的实施例中,可以通过调用I/O队列获取模块获取操作系统当前I/O队列的长度来实现。具体地,可以使用jprobe技术探测do_generic_make_request()函数,从此函数中获取系统当前I/O队列的长度,即正在使用的操作系统I/O队列长度(通过探测do_generic_make_request()函数的参数count),也可以获取操作系统限定的最大I/O队列长度(通过探测do_generic_make_request()函数的参数max_io_length);然后,将所述操作系统当前I/O队列的长度(记为Qcurrent)与操作系统限定的最大I/O队列长度(记为Qmax)的比值乘以第一可调因子(记为a)以获取磁盘负载对预取量增长的权重,即,磁盘负载对预取量增长的权重为aQcurrent/Qmax
而在上述根据进程所在节点的空闲预取缓冲区容量获取进程所在节点的预取缓冲区容量对预取量增长的权重的实施例中,可以通过调用内存获取模块获取进程所在节点的空闲预取缓冲区容量来实现。具体地,将进程所在节点的空闲预取缓冲区容量(记为Ms)与所述进程所在节点总预取缓冲区容量(记为Mtotal)的比值乘以第二可调因子(记为b)以获取所述进程所在节点的预取缓冲区容量对预取量增长的权重,即,进程所在节点的预取缓冲区容量对预取量增长的权重为bMs/Mtotal
此时,数据预取量参数因子r为磁盘负载对预取量增长的权重与进程所在节点的预取缓冲区容量对预取量增长的权重的差值,即,r=aQcurrent/Qmax-bMs/Mtotal
需要说明的是,在本发明实施例中,第一可调因子a和第二可调因子b可由用户根据硬件环境和自身需求确定,其取值范围在(0,1]。如果用户不对第一可调因子a和第二可调因子b进行调整,则第一可调因子a和第二可调因子b可取缺省值1。从数据预取量参数因子r的表达式可知,第一可调因子a和第二可调因子b用于调节进程所在节点总预取缓冲区容量占用情况(即Ms/Mtotal)和磁盘负载情况(即Qcurrent/Qmax)对预取量的影响权重,具体地,当第一可调因子a相对较大而第二可调因子b相对较小时,进程所在节点预取缓冲区空闲比例(即Ms/Mtotal)对预取量影响相对较大;反之,当第一可调因子a相对较小而第二可调因子b相对较大时,磁盘负载情况(即Qcurrent/Qmax)对预取量影响相对较大。
为了实现资源的高效利用,服务器系统(可以是NUMA系统中的一个节点)中常常运行多个虚拟机,每个虚拟机中运行独立的操作系统。在虚拟化系统中,前述实施例提供的用于非一致性内存访问的数据预取方法基本不变,不同之处在于,由于虚拟化I/O子系统的作用,每个虚拟机中运行独立的操作系统可以拥有独立的文件系统,并独立地进行I/O队列管理,因此,操作系统内部的I/O队列长度不能反映整个系统的磁盘I/O负载情况。此时,如果虚拟化系统提供获取整个NUMA系统I/O队列长度的调用接口,则I/O队列获取模块就利用该调用接口获取当前整个NUMA系统的I/O队列长度,而不是从虚拟机中运行的独立操作系统获取当前整个NUMA系统的I/O队列长度;如果虚拟化系统不提供此种调用接口,则从虚拟机中运行的操作系统中获取当前整个NUMA系统的I/O队列长度。具体地,对于虚拟化系统不提供调用接口的情形,可以调用虚拟化系统管理工具(例如,Hypervisor)来获得相关参数。Hypervisor等管理工具对运行于各个节点的虚拟化系统在内存管理、通信等方面进行统一协调,对内存的分配和调度所采用的策略是公开的,具体实现如下,如果某一个节点上的虚拟化系统在运行预取软件,可以首先获取该节点的I/O队列长度,根据管理工具(Hypervisor)的内存调度策略推算出当前整个NUMA系统的I/O队列长度(也即整个NUMA系统正在使用的I/O队列长度)。
需要进一步说明的是,对于预取量最大倍增倍数Tscale,可由用户根据进程所在节点总预取缓冲区容量大小和本系统主要应用的特点来确定,即,如果进程所在节点分配的总预取缓冲区容量较大,主要的应用具有连续顺序读文件的特征,则预取量最大倍增倍数Tscale可以设置为较大的值,以使得在允许的情况下,预取窗口能够快速增长,提高数据预取命中率。
作为本发明一个实施例,预取量最大倍增倍数Tscale的取值范围可以为[0,8],其中,符号“[]”表示闭区间;在[0,8]内,同样遵循预取量最大倍增倍数Tscale越大,所述预取量最大倍增倍数Tscale的取值越大的原则。
综合上述本发明提供的实施例可知,与现有技术提供的用于单处理器的数据预取算法相比,本发明提供的用于非一致性内存访问的数据预取方法至少能够带来如下效果:
第一,本发明没有改变Linux内核既有文件预取的基本框架,而是在其基础上提出一种新的预取量管理策略,是对传统数据预取算法的补强和专属环境下的预取量管理的一种优化,不会对系统的稳定性造成影响;
第二,本发明综合考虑了NUMA系统在磁盘负载、内存管理等影响文件预取效果的多个体系结构特点,解决了Linux内核数据预取算法与之不匹配的问题,提高了数据预取的可靠性和准确率;
第三,提出了主动性预测算法的数据预取量参数因子r,根据数据预取量与进程所在节点的空闲预取缓冲区容量的正相关关系,与NUMA系统磁盘负载的反相关关系,每次确定的数据预取量由NUMA系统当前的磁盘负载、进程所在节点的空闲预取缓冲区容量大小和全局内存大小共同确定,而不是简单地以某个数字(例如,2或4)为系数进行倍增,实现了动态确定数据预取量参数因子r大小,科学有效低管理预取窗口大小;
第四,实现了动态和自适应地预取数据大小及提前量,保证程序在任意时刻终止其顺序、逆序访问,预取命中率都在一个可接受的水平。
请参阅附图5,是本发明实施例提供的用于非一致性内存访问的数据预取装置05结构示意图。为了便于说明,仅仅示出了与本发明实施例相关的部分。附图5示例的用于非一致性内存访问的数据预取装置05包括数据预取量参数因子获取模块501、预取量窗口倍增模块502和预取量窗口获取模块503,其中:
数据预取量参数因子获取模块501,用于根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r,所述表征NUMA系统中磁盘负载的参数与当前操作系统输入/输出I/O队列相关。
需要说明的是,NUMA系统虽然包含多个节点,但只运行一个操作系统,因此,数据预取是针对整个操作系统而言。在附图5所示实施例中,所述表征NUMA系统中磁盘负载的参数与当前操作系统的输入/输出I/O队列相关。所谓“当前操作系统的I/O队列”,是指由I/O队列由操作系统管理且当前对磁盘访问的I/O队列,即,当前NUMA系统中有多少个读写队列正在对磁盘进行访问。
为了便于说明节点的空闲预取缓冲区容量,此处以Linux系统为例,就数据预取算法的设计原理以及工作层次,对数据预取算法进行简单介绍。Linux内核在完成对数据的读取之后,会将它最近访问过的文件页面缓存到内存中一段时间,这段缓存文件页面的内存被称为页面缓存(page cache)。通常情况下所说到的数据读取(通过系统的“read()”这个API)发生在应用程序缓冲区(Application Buffer)与页面缓存(page cache)之间,如附图2所示,而数据预取算法则负责从磁盘中读取数据填充页面缓存(page cache)。应用程序从页面缓存读取到应用程序缓冲区时,其读取颗粒一般都比较小,例如,文件拷贝命令的读写粒度一般是4KByte(千字节),内核的数据预取则会以它认为更合适的大小,例如,16KByte(千字节)至128KByte(千字节)将数据从磁盘中填充至页面缓存(page cache)。至于数据预取算法的工作层次,可以参阅附图3。数据预取算法工作于VFS层,对上统一地服务于各种文件读取操作(系统调用API),对下独立于具体的文件系统。当应用程序通过read()、pread()、readv()、aI/O_read()、sendfile()和splice()等不同的系统API请求读取文件数据时,都会进入统一的读请求处理函数do_generic_file_read()。这个函数从页面缓存中取出数据来满足应用程序的请求,并在适当的时候调用预读例程进行必要的预读I/O。预读算法发出的预读I/O请求交由do_page_cache_readahead()进行预处理,该函数检查请求中的每一个页面是否已经在文件缓存地址空间中,如果没有的话就申请一个新页面。如果该新页面的偏移量正好是预读参数async_size指向的位置,则为该页面置PG_readahead标记。最后,所有的新页面被传给read_pages(),它们在这里被逐个加入内存中radix tree和inactive_list,并调用所在文件系统的readpage(),将页面交付I/O。
在附图5所示实施例中,节点的预取缓冲区就是系统分配给节点的、一段用于缓存节点内核最近访问过的文件页面的内存,即页面缓存(page cache),而节点的空闲预取缓冲区也就是除去页面缓存(page cache)中被已经预取到的数据占用的内存之后剩余的内存。节点的空闲预取缓冲区容量也是影响数据预取量大小的因素之一。
预取量窗口倍增模块502,用于求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子获取模块501获取的数据预取量参数因子r三者的乘积Ssize
在数据预取算法中,当某个进程所属的一个运行在节点上的线程读取文件时,每当发出一个数据预取请求,数据预取算法都会以一个称为“预取窗口”的数据结构来记录该数据预取请求以表明请求预取的数据长度,如附图4所示。起点(start)和大小(size)构成一个预取窗口,记录了最近一次预取请求的位置和大小,async_size指示了异步预取的位置提前量。PG_readahead page是在上一次预取I/O中设置的,指示应用程序已经用尽了足够的提前读窗口,进行下一个预取I/O的时机已经到来,启动异步预读以读取更多的文件页面。因此,通过记录的数据预取请求,很容易获取上一次预取窗口的大小Rprev_size
需要说明的是,若进程是初次对文件访问,即不存在之前记录的预取窗口,因此,在这种情形下,可以将预取窗口大小设置为比初次请求预取的数据长度大,例如,可以将预取窗口大小设置为初次请求预取的数据长度的2倍。当然,也可以设置为其他倍数,原则上只要比初次请求预取的数据长度大即可,本发明对此不做特别限制。
在附图5所示实施例中,预取量最大倍增倍数Tscale用来限制每一次预取量倍增倍数,可以由用户根据实际情况设定。Ssize与上一次预取窗口的大小Rprev_size、预取量每次最大倍增倍数Tscale以及所述数据预取量参数因子r三者的关系为Ssize=Rprev_size×Tscale×r。
预取量窗口获取模块503,用于比较设定的最大预取量MAXreadahead和所述预取量窗口倍增模块502获取的Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。
由于受预取缓冲区容量等各方面的限制,预取窗口的大小不可能无限地增大,例如,预取窗口的大小不可能按照Rprev_size×Tscale×r这一关系无限地增大,即,应该对预取窗口的大小进行某种限制。
在附图5所示实施例中,可以由用户设置一个最大预取量MAXreadahead,然后,预取量窗口获取模块503将MAXreadahead与预取量窗口倍增模块502求取的Ssize(=Rprev_size×Tscale×r)进行比较,最终,以MAXreadahead和Ssize中的较小值作为本次预取窗口的大小去预取数据。
从上述附图5所示实施例提供的用于非一致性内存访问的数据预取装置05可知,在数据预取量参数因子获取模块501根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取了数据预取量参数因子r后,预取量窗口获取模块503即可由上一次预取窗口的大小Rprev_size、预取量每次最大倍增倍数Tscale和所述数据预取量参数因子r三者的乘积Ssize与设定的最大预取量MAXreadahead的大小关系确定预取窗口的大小,最终按照确定出的预取窗口的大小去预取数据。由于表征NUMA系统中磁盘负载的参数与当前操作系统的输入/输出I/O队列相关,并且,是数据预取量参数因子r根据进程所在节点的空闲预取缓冲区容量获取,因此,与现有技术提供的针对单处理器的数据预取算法相比,本发明实施例提供的数据预取装置综合考虑了磁盘I/O负载和节点内存剩余大小等影响系统性能的因素,即,在磁盘I/O负载较轻、节点剩余内存较多时,适当地扩大数据预取量,有利于隐藏数据I/O,当磁盘I/O负载较重、节点剩余内存较少时,适当地减小数据预取量,有利于节省系统资源。
需要说明的是,以上用于非一致性内存访问的数据预取装置的实施方式中,各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将所述用于非一致性内存访问的数据预取装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的数据预取量参数因子获取模块,可以是具有执行前述由表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取数据预取量参数因子r的硬件,例如数据预取量参数因子获取器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前述的预取量窗口倍增模块,可以是具有执行前述求取上一次预取窗口的大小Rprev_size、预取量每次最大倍增倍数Tscale以及所述数据预取量参数因子获取模块(或数据预取量参数因子获取器)获取的数据预取量参数因子r三者的乘积Ssize功能的硬件,例如预取量窗口倍增器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本说明书提供的各个实施例都可应用上述描述原则)。
附图5示例的数据预取量参数因子获取模块501进一步包括权重获取子模块601和求差子模块602,如附图6示例的用于非一致性内存访问的数据预取装置06,其中:
权重获取子模块601,用于根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取磁盘负载对预取量增长的权重和所述进程所在节点的预取缓冲区容量对预取量增长的权重;
求差子模块602,用于求取所述磁盘负载对预取量增长的权重与所述进程所在节点的预取缓冲区容量对预取量增长的权重的差值,得到所述数据预取量参数因子r。
附图6示例的权重获取子模块601进一步包括内存获取单元701和求预取量权重获取单元702,如附图7示例的用于非一致性内存访问的数据预取装置07,其中:
内存获取单元701,用于调用I/O队列获取模块和内存获取模块以分别获取操作系统当前I/O队列的长度和所述进程所在节点的空闲预取缓冲区容量;
预取量权重获取单元702,用于将所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值乘以第一可调因子以获取磁盘负载对预取量增长的权重,将所述进程所在节点的空闲预取缓冲区容量与所述进程所在节点总预取缓冲区容量的比值乘以第二可调因子以获取所述进程所在节点的预取缓冲区容量对预取量增长的权重,所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值为表征非一致性内存访问NUMA系统中磁盘负载的参数。
在上述附图7示例的用于非一致性内存访问的数据预取装置07中,内存获取单元701可以通过调用I/O队列获取模块获取操作系统当前I/O队列的长度,结合预取量权重获取单元702,获取磁盘负载对预取量增长的权重。具体地,可以使用jprobe技术探测do_generic_make_request()函数,从此函数中获取系统当前I/O队列的长度,即正在使用的操作系统I/O队列长度(通过探测do_generic_make_request()函数的参数count),也可以获取操作系统限定的最大I/O队列长度(通过探测do_generic_make_request()函数的参数max_io_length);然后,预取量权重获取单元702将所述操作系统当前I/O队列的长度(记为Qcurrent)与操作系统限定的最大I/O队列长度(记为Qmax)的比值乘以第一可调因子(记为a)以获取磁盘负载对预取量增长的权重,即,磁盘负载对预取量增长的权重为aQcurrent/Qmax
在上述附图7示例的用于非一致性内存访问的数据预取装置07中,内存获取单元701也可以通过调用内存获取模块获取进程所在节点的空闲预取缓冲区容量,结合预取量权重获取单元702,从而获取进程所在节点的预取缓冲区容量对预取量增长的权重。具体地,预取量权重获取单元702将进程所在节点的空闲预取缓冲区容量(记为Ms)与所述进程所在节点总预取缓冲区容量(记为Mtotal)的比值乘以第二可调因子(记为b)以获取所述进程所在节点的预取缓冲区容量对预取量增长的权重,即,进程所在节点的预取缓冲区容量对预取量增长的权重为bMs/Mtotal
此时,数据预取量参数因子r为磁盘负载对预取量增长的权重与进程所在节点的预取缓冲区容量对预取量增长的权重的差值,即,r=aQcurrent/Qmax-bMs/Mtotal
需要说明的是,在附图6或附图7示例的用于非一致性内存访问的数据预取装置06或07中,第一可调因子a和第二可调因子b可由用户根据硬件环境和自身需求确定,其取值范围在(0,1]。如果用户不对第一可调因子a和第二可调因子b进行调整,则第一可调因子a和第二可调因子b可取缺省值1。从数据预取量参数因子r的表达式可知,第一可调因子a和第二可调因子b用于调节进程所在节点总预取缓冲区容量占用情况(即Ms/Mtotal)和磁盘负载情况(即Qcurrent/Qmax)对预取量的影响权重,具体地,当第一可调因子a相对较大而第二可调因子b相对较小时,进程所在节点预取缓冲区空闲比例(即Ms/Mtotal)对预取量影响相对较大;反之,当第一可调因子a相对较小而第二可调因子b相对较大时,磁盘负载情况(即Qcurrent/Qmax)对预取量影响相对较大。
为了实现资源的高效利用,服务器系统(可以是NUMA系统中的一个节点)中常常运行多个虚拟机,每个虚拟机中运行独立的操作系统。在虚拟化系统中,前述实施例提供的用于非一致性内存访问的数据预取方法基本不变,不同之处在于,由于虚拟化I/O子系统的作用,每个虚拟机中运行独立的操作系统可以拥有独立的文件系统,并独立地进行I/O队列管理,因此,操作系统内部的I/O队列长度不能反映整个系统的磁盘I/O负载情况。此时,如果虚拟化系统提供获取整个NUMA系统I/O队列长度的调用接口,则I/O队列获取模块就利用该调用接口获取当前整个NUMA系统的I/O队列长度,而不是从虚拟机中运行的独立操作系统获取当前整个NUMA系统的I/O队列长度;如果虚拟化系统不提供此种调用接口,则从虚拟机中运行的操作系统中获取当前整个NUMA系统的I/O队列长度。具体地,对于虚拟化系统不提供调用接口的情形,可以调用虚拟化管理工具(例如,Hypervisor),Hypervisor等管理工具对运行于各个节点的虚拟化系统在内存管理、通信等方面进行统一协调,对内存的分配和调度所采用的策略是公开的,具体实现如下,如果某一个节点上的虚拟化系统在运行预取软件,可以首先获取该节点的I/O队列长度,根据管理工具(Hypervisor)的内存调度策略推算出当前整个NUMA系统的I/O队列长度(也即整个NUMA系统正在使用的I/O队列长度)。
需要进一步说明的是,对于预取量最大倍增倍数Tscale用来限制每一次预取量倍增倍数,可由用户根据进程所在节点总预取缓冲区容量大小和本系统主要应用的特点来确定,即,如果进程所在节点分配的总预取缓冲区容量较大,主要的应用具有连续顺序读文件的特征,则预取量每次最大倍增倍数Tscale可以设置为较大的值,以使得在允许的情况下,预取窗口能够快速增长,提高数据预取命中率。
作为附图7示例的用于非一致性内存访问的数据预取装置07中的一个实施例,预取量最大倍增倍数Tscale的取值范围可以为[0,8],其中,符号“[]”表示闭区间;在[0,8]内,同样遵循预取量最大倍增倍数Tscale越大,所述预取量最大倍增倍数Tscale的取值越大的原则。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,比如以下各种方法的一种或多种或全部:
根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r;
求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据。
该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上对本发明实施例提供的用于非一致性内存访问的数据预取方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种用于非一致性内存访问的数据预取方法,其特征在于,所述方法包括:
根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r;
求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据;
其中,所述根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r包括:
根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取磁盘负载对预取量增长的权重和所述进程所在节点的预取缓冲区容量对预取量增长的权重;
求取所述磁盘负载对预取量增长的权重与所述进程所在节点的预取缓冲区容量对预取量增长的权重的差值,得到所述数据预取量参数因子r。
2.如权利要求1所述的方法,其特征在于,所述根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取磁盘负载对预取量增长的权重和所述进程所在节点的预取缓冲区容量对预取量增长的权重包括:
调用输入输出I/O队列获取模块和内存获取模块以分别获取操作系统当前I/O队列的长度和所述进程所在节点的空闲预取缓冲区容量;
将所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值乘以第一可调因子以获取磁盘负载对预取量增长的权重,将所述进程所在节点的空闲预取缓冲区容量与所述进程所在节点总预取缓冲区容量的比值乘以第二可调因子以获取所述进程所在节点的预取缓冲区容量对预取量增长的权重,所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值为所述表征非一致性内存访问NUMA系统中磁盘负载的参数。
3.如权利要求1所述的方法,其特征在于,所述预取量最大倍增倍数Tscale的取值范围为[0,8],其中符号“[]”表示闭区间。
4.如权利要求1所述的方法,其特征在于,所述空闲预取缓冲区容量越大,则所述预取量最大倍增倍数Tscale的取值越大。
5.一种用于非一致性内存访问的数据预取装置,其特征在于,所述装置包括:
数据预取量参数因子获取模块,用于根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取数据预取量参数因子r;
预取量窗口倍增模块,用于求取前一次预取窗口的大小Rprev_size、预取量最大倍增倍数Tscale以及所述数据预取量参数因子r三者的乘积Ssize
预取量窗口获取模块,用于比较设定的最大预取量MAXreadahead和所述Ssize的大小,以所述MAXreadahead和所述Ssize中的较小值作为本次预取窗口的大小去预取数据;
其中,所述数据预取量参数因子获取模块包括:
权重获取子模块,用于根据所述表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量,获取磁盘负载对预取量增长的权重和所述进程所在节点的预取缓冲区容量对预取量增长的权重;
求差子模块,用于求取所述磁盘负载对预取量增长的权重与所述进程所在节点的预取缓冲区容量对预取量增长的权重的差值,得到所述数据预取量参数因子r。
6.如权利要求5所述的装置,其特征在于,所述权重获取子模块包括:
内存获取单元,用于调用输入输出I/O队列获取模块和内存获取模块以分别获取操作系统当前I/O队列的长度和所述进程所在节点的空闲预取缓冲区容量;
预取量权重获取单元,用于将所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值乘以第一可调因子以获取磁盘负载对预取量增长的权重,将所述进程所在节点的空闲预取缓冲区容量与所述进程所在节点总预取缓冲区容量的比值乘以第二可调因子以获取所述进程所在节点的预取缓冲区容量对预取量增长的权重,所述操作系统当前I/O队列的长度与操作系统限定的最大I/O队列长度的比值为所述表征非一致性内存访问NUMA系统中磁盘负载的参数。
7.如权利要求5所述的装置,其特征在于,所述预取量最大倍增倍数Tscale的取值范围为[0,8],其中符号“[]”表示闭区间。
8.如权利要求5或7所述的装置,其特征在于,所述空闲预取缓冲区容量越大,则所述预取量最大倍增倍数Tscale的取值越大。
CN201110296544.3A 2011-09-27 2011-09-27 用于非一致性内存访问的数据预取方法和装置 Expired - Fee Related CN102508638B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110296544.3A CN102508638B (zh) 2011-09-27 2011-09-27 用于非一致性内存访问的数据预取方法和装置
PCT/CN2012/082202 WO2013044829A1 (zh) 2011-09-27 2012-09-27 用于非一致性内存访问的数据预取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110296544.3A CN102508638B (zh) 2011-09-27 2011-09-27 用于非一致性内存访问的数据预取方法和装置

Publications (2)

Publication Number Publication Date
CN102508638A CN102508638A (zh) 2012-06-20
CN102508638B true CN102508638B (zh) 2014-09-17

Family

ID=46220732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110296544.3A Expired - Fee Related CN102508638B (zh) 2011-09-27 2011-09-27 用于非一致性内存访问的数据预取方法和装置

Country Status (2)

Country Link
CN (1) CN102508638B (zh)
WO (1) WO2013044829A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508638B (zh) * 2011-09-27 2014-09-17 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置
CN103577158B (zh) * 2012-07-18 2017-03-01 阿里巴巴集团控股有限公司 数据处理方法与装置
US9665491B2 (en) * 2014-07-17 2017-05-30 Samsung Electronics Co., Ltd. Adaptive mechanism to tune the degree of pre-fetches streams
CN104657198B (zh) * 2015-01-24 2017-12-26 深圳职业技术学院 Numa架构系统在虚拟机环境中的访存优化方法及系统
KR20170014496A (ko) * 2015-07-30 2017-02-08 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN112486858A (zh) * 2016-03-17 2021-03-12 华为技术有限公司 一种数据预取方法以及装置
CN107969153B (zh) * 2016-08-19 2021-06-22 华为技术有限公司 一种资源分配方法、装置及numa系统
CN106844740B (zh) * 2017-02-14 2020-12-29 华南师范大学 基于内存对象缓存系统的数据预读方法
CN108877199A (zh) 2017-05-15 2018-11-23 华为技术有限公司 车队的控制方法、设备及车联网系统
CN109471671B (zh) * 2017-09-06 2023-03-24 武汉斗鱼网络科技有限公司 一种程序冷启动方法和系统
CN110019086B (zh) * 2017-11-06 2024-02-13 中兴通讯股份有限公司 基于分布式文件系统的多副本读取方法、设备及存储介质
CN112445725A (zh) * 2019-08-27 2021-03-05 华为技术有限公司 预读取文件页的方法、装置和终端设备
CN110865947B (zh) * 2019-11-14 2022-02-08 中国人民解放军国防科技大学 一种面向预取数据的高速缓存管理方法
CN113128531B (zh) * 2019-12-30 2024-03-26 上海商汤智能科技有限公司 一种数据处理方法及装置
CN112380017B (zh) * 2020-11-30 2024-04-09 成都虚谷伟业科技有限公司 一种基于松散内存释放的内存管理系统
CN112558866B (zh) * 2020-12-03 2022-12-09 Oppo(重庆)智能科技有限公司 数据的预读方法、移动终端及计算机可读存储介质
CN112748989A (zh) * 2021-01-29 2021-05-04 上海交通大学 基于远程内存的虚拟机内存管理方法、系统、终端及介质
CN114238417A (zh) * 2021-12-27 2022-03-25 四川启睿克科技有限公司 数据缓存方法
CN116795877B (zh) * 2023-08-23 2023-12-19 本原数据(北京)信息技术有限公司 数据库的预读方法和装置、计算机设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
CN1604055A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508638B (zh) * 2011-09-27 2014-09-17 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
CN1604055A (zh) * 2003-09-30 2005-04-06 国际商业机器公司 利用永久历史页表数据预取数据到高速缓存的装置和方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Disk I/O performance improvement by the file allocation, adaptive read ahead and scheduling of disks for integrated file servers;Kim Kyung Ho;《http://library.kaist.ac.kr/thesis01/2003/2003D000985032_S1Ver2.pdf》;20030526;正文第50-58页 *
Kim Kyung Ho.Disk I/O performance improvement by the file allocation, adaptive read ahead and scheduling of disks for integrated file servers.《http://library.kaist.ac.kr/thesis01/2003/2003D000985032_S1Ver2.pdf》.2003,正文第50-58页.
一种支持并发访问流的文件预取算法;吴峰光等;《软件学报》;20100831;第21卷(第8期);第1820-1833页 *
吴峰光等.一种支持并发访问流的文件预取算法.《软件学报》.2010,第21卷(第8期),第1820-1833页.

Also Published As

Publication number Publication date
CN102508638A (zh) 2012-06-20
WO2013044829A1 (zh) 2013-04-04

Similar Documents

Publication Publication Date Title
CN102508638B (zh) 用于非一致性内存访问的数据预取方法和装置
US20170364430A1 (en) Optimization of operating system and virtual machine monitor memory management
Seshadri et al. RowClone: Fast and energy-efficient in-DRAM bulk data copy and initialization
WO2018077292A1 (zh) 数据处理方法和系统、电子设备
CN101763226B (zh) 一种虚拟存储设备的缓存方法
US9183151B2 (en) Thread cache allocation
US9858191B2 (en) Electronic system with data management mechanism and method of operation thereof
Al Assaf et al. Eco-storage: A hybrid storage system with energy-efficient informed prefetching
Xue et al. Adaptive memory fusion: Towards transparent, agile integration of persistent memory
CN108874691A (zh) 数据预取方法和内存控制器
Al Assaf et al. Informed prefetching for distributed multi-level storage systems
Liu et al. A space-efficient fair cache scheme based on machine learning for NVMe SSDs
Park et al. MH cache: A multi-retention STT-RAM-based low-power last-level cache for mobile hardware rendering systems
Navarro Transparent operating system support for superpages
Yu et al. WatCache: a workload-aware temporary cache on the compute side of HPC systems
KR20220142059A (ko) 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법
Al Assaf et al. A pipelining approach to informed prefetching in distributed multi-level storage systems
Faibish et al. A new approach to file system cache writeback of application data
Chen et al. Data‐aware task scheduling on heterogeneous hybrid memory multiprocessor systems
Wu et al. The dynamically efficient mechanism of HDFS data prefetching
Al Assaf Informed prefetching in distributed multi-level storage systems
Wu et al. PVMsim: A parallel simulation platform to evaluate virtual machines
Yoon et al. Harmonized memory system for object-based cloud storage
CN117827464B (zh) 异构内存情境下软硬件协同设计的内存优化方法及系统
Simão et al. A progress and profile-driven cloud-vm for resource-efficiency and fairness in e-science environments

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171206

Address after: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Du Qianrong

Inventor before: Tan Xi

Inventor before: Wei Zhulin

Inventor before: Liu Die

Inventor before: Pu Mingxuan

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171218

Address after: Chencang District Bo Town Village six groups of double base in Shaanxi province Baoji city 721000 West Fourth Street No. 59

Patentee after: Du Qianrong

Address before: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140917

Termination date: 20180927