用于非一致性内存访问的数据预取方法和装置制造方法及图纸

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

【技术实现步骤摘要】

本专利技术涉及通信领域,尤其涉及用于非一致性内存访问的数据预取方法和装置。技术背景目前,磁盘依然是计算机系统的主要存储介质。然而,随着技术的日新月异,磁盘面临着其输入/输出anput/Output,I/O)带宽比不上中央处理器(Central Processing Unit,CPU) /内存的发展速度和磁盘的访问延迟与CPU/内存的读写速度差距日益扩大的两大挑战。在CPU速度、磁盘传输速度和磁盘I/O访问速度三者中,磁盘I/O访问速度的提高最缓慢,特别地,磁盘I/O访问速度与CPU的速度差距越来越大,磁盘I/O访问时延已经成为制约系统I/O性能的一个最主要的瓶颈。在操作系统层面,异步化是一种非常有效的I/ 0性能优化策略,数据预取则是实现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提供的基于启发式的按需预取算法主要通过监控应用程序的读请求和页面缓存来判定应用程序的访问模式,再根据访问模式来决定预取的位置和大小等。预取框架大致可分为两大部分监控部分和判断处理部分,其中,监控部分嵌入在d0_generiC_file_read()函数等读请求响应历程中,检测请求中的每一个页面是否已经在文件缓存地址空间中,如果没有,则申请一个新的页面,同时应用程序被临时挂起而等待I/O加载该页面,进行同步预读。如果该新页面的偏移量正好是预读参数async_size指向的位置,则为该页面置预取标记(PG_ readahead)。在后续的数据预取过程中,当检测到预取标记页面(PGjeadahead page), 则意味着下一个预取I/O的时机已经到来,系统进行异步预读。匹配部分位于ondemancL 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 ;求取前一次预取窗口的大小Iiprev size、预取量最大倍增倍数Ts。-以及所述数据预取量参数因子r三者的乘积;比较设定的最大预取量MAX_dahead和所述的大小,以所述MAXreadahead和所述中的较小值作为本次预取窗口的大小去预取数据。本专利技术实施例提供一种用于非一致性内存访问的数据预取装置,所述装置包括数据预取量参数因子获取模块,用于根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取数据预取量参数因子r ;预取量窗口倍增模块,用于求取前一次预取窗口的大小Rpra size、预取量每次最大倍增倍数Tsrale以及所述数据预取量参数因子r三者的乘积;预取量窗口获取模块,用于比较设定的最大预取量MAX—d和所述的大小, 以所述MAX_datead和所述中的较小值作为本次预取窗口的大小去预取数据。从上述本专利技术实施例可知,在根据表征非一致性内存访问NUMA系统中磁盘负载的参数和进程所在节点的空闲预取缓冲区容量获取了数据预取量参数因子r后,即可由前一次预取窗口的大小size、预取量最大倍增倍数Ts。-和所述数据预取量参数因子r三者的乘积与设定的最大预取量MAXreadatead的大小关系确定本次预取窗口的大小,最终按照确定出的预取窗口的大小去预取数据。由于表征NUMA系统中磁盘负载的参数与当前操作本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:谭玺韦竹林刘轶朴明铉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术