CN100346318C - 根据存储器占用动态调整预读值的***和方法 - Google Patents
根据存储器占用动态调整预读值的***和方法 Download PDFInfo
- Publication number
- CN100346318C CN100346318C CNB2005100657692A CN200510065769A CN100346318C CN 100346318 C CN100346318 C CN 100346318C CN B2005100657692 A CNB2005100657692 A CN B2005100657692A CN 200510065769 A CN200510065769 A CN 200510065769A CN 100346318 C CN100346318 C CN 100346318C
- Authority
- CN
- China
- Prior art keywords
- read
- free
- page
- sequential access
- virtual memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
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)
- Storage Device Security (AREA)
Abstract
本发明提供了一种根据当前***存储器状况动态地改变虚拟存储器管理器(VMM)顺序访问预读设置的***和方法。正常VMM操作用用户设置的顺序访问预读值执行。在检测到存储器紧张时,***根据自由空间只不过是紧张还是紧张到临界程度断开顺序访问预读操作或者减小最大页预读(maxpgahead)值。改变的VMM顺序访问预读状态一直保持到有足够的自由空间可用于执行正常的VMM顺序访问预读操作(此时,已改变的顺序访问预读值复位为它们的原有值)。
Description
技术领域
本发明一般涉及根据存储器占用情况调整操作***的预读值(read ahead value)的***和方法。具体地说,本发明与监视虚拟存储器状况、调整与读取顺序访问文件关联的预读值的***和方法有关。
背景技术
虚拟存储器在许多现代的复杂操作***中是很重要的。虚拟存储器是由一些操作***(例如,IBM的AIXTM操作***)在硬件的配合下支持的一个想象的存储器区域。虚拟存储器提供一个替代的存储器地址集。程序用这些虚拟地址而不是实际地址存储指令和数据。在程序实际执行时,虚拟地址被变换为实际存储器地址。
虚拟存储器的用途是扩大地址空间,即程序可用的地址集。例如,虚拟存储器可以含有为主存储器两倍的地址。因此一个使用所有虚拟存储器的程序就不能立刻适合主存储器。然而,通过将程序在执行期间任何给定点所需要的那些部分拷贝入主存储器,计算机可以执行这样一个程序。
为了促进将虚拟存储器拷贝入实际存储器,操作***将虚拟存储器划分成多个页(page),每个页含有数量固定的地址。每个页都存储在一个盘上,直到需要它时。在需要这页时,操作***将它从盘上拷贝给主存储器,从而将虚拟地址变换成实际地址。
在AIXTM内,虚拟存储器段划分为多个称为页的4K(4096)字节的单元,而实际存储器划分为多个4K字节的页帧(page frame)。VMM管理页帧分配和解决对那些当前不在RAM内(即存储在分页空间内的)或还不存在的虚拟存储器页的引用。为了完成这些任务,VMM维护一个列有可用页帧的“自由表(freelist)”,用一个页置换算法确定使哪些当前在RAM内的虚拟存储器页将它们的页帧交还(即,换出)给自由表。AIX的VMM所用的页置换算法考虑“持久性”的页与“工作段”的页。如名称所意味的,持久性存储器段在盘上具有永久的存储位置。数据文件或可执行程序通常映射到持久性段。另一方面,工作段是暂时性的,仅在一个程序用到它们期间存在。工作段没有固定的盘存储位置。在工作段调出页时,它们写给盘分页空间。在一个程序退出时,这个程序的所有工作页都立即放回自由表。由于工作页必须先回写回盘才可再重新使用它的页帧,因此通常优选的是先换出持久性存储器段再换工作存储器段。
诸如IBM的AIXTM操作***之类的现代操作***通常用一个虚拟存储器管理器(VMM)来管理虚拟存储器,以便为来自操作***的存储器请求和从应用接收到的存储器请求服务。许多VMM试图预测一个程序什么时候顺序地从盘读取一个文件,以便预取一些页,使得后续的页在程序请求前就已装入存储器。这种由VMM执行的预测通常称为“顺序访问预读(Sequential-Access Read Ahead)”。
在AIXTM内,VMM试图通过检测一个程序访问文件的模式预测将来对一个顺序文件(Sequential file)的一些页的需求。在程序访问一个文件的两个相继的页时,VMM假设程序将继续顺序访问这个文件。因此,VMM调度对文件的一些附加的顺序读出,使得文件数据可以比VMM等到程序向文件请求下一页时再启动文件I/O的情况更快地供程序使用。
在AIXTM中,顺序访问预读可以接通/断开和用两个VMM门限调整。首先,在VMM最初检测到对一个顺序文件的访问时,将预读的页数设置为minpgahead。VMM将在一个顺序文件中可预读的最多页数的第二调整门限设置为maxpgahead。在最初检测到一个顺序文件时,读取minpgahead页。在随后的请求是请求这个顺序访问文件的另一些页时,就增大预取的页数,直到达到预取maxpgahead页。
图1为示出顺序访问预读的现有技术实现方式的示意图。VMM顺序访问预读处理开始于步骤100,于是在步骤120,第一个对文件110的访问导致读取文件100的第一页(页0)。此时,VMM并不假设是随机还是顺序文件访问。在步骤130,程序访问下一页(页1)的第一字节,而中间没有访问文件的其余各页。此时,VMM推断这个程序是顺序访问的。它就调度与当前的minpgahead值相应的附加页(例如,两个附加页)。在这个例子中,是读取两个附加页(页2和3)。因此,在这个例子中作为程序的第二个读请求的结果总共读取3页。
在步骤140,程序访问已经预读的第一页(页2)的第一字节,VMM将页预读值加倍为4,调度从文件110读取页4至7。
在步骤150,程序访问已经预读的第一页(页4)的第一字节,VMM将页预读值再加倍为8,调度读取页8至15。这样的加倍一直继续到读取的数据量达到maxpgahead或达到文件的末尾。
在步骤160,已经达到maxpgahead,VMM在程序访问上一组预读页的第一字节时继续读取maxpgahead页,直到文件结束。
由图1所示可见,高的maxpgahead值改善了执行大量顺序访问读操作的效率和速度。然而,预取大量的顺序访问页的问题是存储器有时会变为受限。在存储器变为受限时,VMM确定当前在RAM内的哪些虚拟存储器页可以将它们的页帧交还给自由表。在持久性存储段的情况下,所确定的页可迅速再分配。然而,如果需要再分配工作存储器段必须首先将工作存储器段数据写给盘的分页空间。
因此,所需要的是一种识别存储器受限(memory constraint)状况、据此调整VMM的顺序访问预读门限值的***和方法。此外,还需要的是一种在存储器高度受限时自动断开VMM的顺序访问预读和以减少顺序访问预读在接通、断开状态之间来回切换的方式接通顺序访问预读的***和方法。
发明内容
业已发现上述问题可以通过根据当前***存储器状况动态地改变VMM顺序访问预读设置来解决。在一个实施例中,用用户设置的顺序访问预读值执行正常的VMM操作。在检测到***的自由表内自由空间紧张时,***根据自由空间单单是紧张(low)还是已紧张到临界的程度断开顺序访问预读操作或者减小最大页预读(maxpgahead)值(在存储器紧张到临界时断开顺序访问预读,而在存储器紧张但没有紧张到临界时减小maxpgahead)。改变的VMM顺序访问预读状态一直保持到有足够的自由空间可用于执行正常的VMM顺序访问预读操作(此时,已改变的顺序访问预读值复位为它们的原有值)。
在另一个实施例中,用一个减小和增大maxpgahead值的算法根据门限值动态地设置顺序访问预读值。此外,可用页突然极端地减少也导致断开顺序访问预读。用一个考虑最小自由页(minfree)设置与自由表内可用空间之差和minfree与操作者设置的低自由表门限之差的算法来计算当前maxpgahead设置(CurPgAhead)。这样,操作者可以根据在计算机***上执行的操作调整minfree和门限设置。
在一个实施例中,在顺序访问预读断开后,一直要到自由空间增大到在原检测到急剧下降时在用maxpgahead的以上时再接通。这样,顺序访问预读很少会在接通和断开状态之间来回摆动而影响***性能。
以上概要只是经简化和概括的说明,省略了具体的情况。当然,本领域技术人员可以理解这个概要只是例示性的,而不是限制性的。从以下的非限制性的详细说明中可以清楚地看到仅由权利要求书给出的本发明的其他一些情况、创造性的特征和优点。
附图说明
本领域技术人员参考附图可以更好地理解本发明,看到它的众多目的、特征和优点。在不同的附图中同样的标注符号所标示的是类似或相同的项。在这些附图中:
图1为示出VMM顺序访问预读功能的现有技术实现方式的示意图;
图2为示出改变VMM顺序访问预读门限值的一个实现方式的流程图;
图3为示出动态地改变VMM顺序访问预读门限值的第二实现方式的流程图;
图4为示出一个列有用图3所示的逻辑动态改变的例示性顺序访问预读门限的表的示意图;以及
图5为一个能实现本发明的信息处理***的方框图。
具体实施方式
以下将对本发明的一个例子进行详细说明,这不应该看作对本发明本身的限制。适当地说,许多变异都在本说明后所附的权利要求书中给出的发明的专利保护范围之内。
图1为示出VMM顺序访问预读功能的现有技术实现方式的示意图。图1的具体情况已在以上背景部分作了说明。
图2为示出改变VMM顺序访问预读门限值的一个实现方式的流程图。处理开始于200,于是在步骤210,设置最小页预读值(minpgahead)和最大页预读值(maxpgahead)。minpgahead设置确定由VMM的顺序访问预读过程检索的最少页数。相反,maxpgahead设置确定由VMM的顺序访问预读过程可检索的最多页数。如在背景部分所说明的,VMM的顺序访问预读用minpgahead和maxpgahead设置预取一个要顺序访问的文件的页。
在步骤220,执行“正常”VMM顺序访问预读操作,同时监视自由页空间大小(自由表290内可用页数)。正常VMM顺序访问预读操作的较为详细的说明见以上背景部分。***监视***存储器内可用的自由存储器空间大小(自由页数),以保证有足够的自由空间满足存储器请求。确定是否有足够的自由空间可用(判定225)。如果有足够的自由空间可用,判定225转至“是”分支226,继续执行正常的VMM顺序访问预读操作。然而,如果自由空间受限(constrained),判定225转至“否”分支228,以便考虑自由空间紧张的状况。
确定自由空间紧张的状况是否已经紧张到临界程度(判定230)。如果自由空间的量紧张到临界程度,判定230转至“是”分支235,于是在步骤240,断开VMM的顺序访问预读。但是,如果自由空间的量紧张但还没有紧张到临界,判定230就转至“否”分支245,于是在步骤250,减小VMM的顺序访问预读过程可检索的最多页数(maxpgahead)。在一个实施例中,maxpgahead减小一个取决于自由空间量的量。也就是说,在有较大自由空间可用时,maxpgahead减小比在有较小自由空间可用时小一些的量。
在步骤260,继续用在步骤240或250提供的设置进行VMM操作。如果断开顺序访问预读,VMM在不执行顺序访问预读操作的情况下继续进行操作。另一方面,如果maxpgahead减小,VMM的顺序访问预读操作继续提供预读服务,但使用一个较小的最大预读页数。这样,或者没有页或者有较少的页用于顺序访问预读服务。VMM周期性地检索***的存储器内可用的自由存储器空间的量,确定是否有足够的自由空间可用(判定270)。如果存储器仍然受限制,判定270转至“否”分支275,于是处理循环回确定存储器是否为临界和据此设置顺序访问预读设置。另一方面,如果有足够的自由空间(即,存储器不再受限),判定270转至“是”分支280,于是在步骤285,接通VMM的顺序访问预读(如果它原已断开),将顺序访问预读的maxpgahead值复位为它原来的值。处理继续根据***内当前可用的存储器量调整VMM的顺序访问预读设置。
图3为示出一个动态地改变VMM顺序访问预读门限值的第二实现方式的流程图。处理开始于300,于是在步骤310,从自由表315检索自由页帧多少。在这个实施例中,VMM的当前最大顺序访问预读值表示为“CurPgAhead”(当前最大页预读),从而不改变用户/操作者设置的最大页预读(maxpgahead)值。在初始化时,将CurPgAhead设置为等于maxpgahead。
确定自由表内当前可用自由页数是否小于或等于当前最大页(CurPgAhead)值(判定320)。如果当前自由页数小于或等于当前最大预读页,判定320就转至“是”分支325,于是在步骤330,断开VMM的顺序访问预读,以便应付临界存储器受限。但是,如果当前自由页数大于当前最大预读页,判定320就转至“否”分支335,于是在步骤340,接通VMM的顺序访问预读操作。注意,VMM的顺序访问预读过程可以根据前面的存储器分析期间出现的存储器状况在进入判定320前断开或接通。
在VMM的顺序访问预读操作接通时,确定是否存在存储器紧张状况(判定350)。判定350基于当前自由页数是否少于VMM所要求的最小自由空间(minfree)设置。如果存储器受限(即,当前自由空间<最小所要求的自由空间=,判定350就转至“是”355,应付存储器紧张状况。但是,如果存储器不受限,判定350转至“否”分支362,于是在步骤370,将当前最大页预读值(CurFgAhead)设置为等于用户/操作者设置的maxpgahead值。
回到判定350,如果存储器受限从而判定350转至“是”分支355,于是再确定用户设置的门限是否已设置为零(即,禁用动态改变maxpgahead值)。如果动态改变maxpgahead已经禁用,判定360转至“否”分支366,于是在步骤370,将当前最大页预读值(CurPgAhead)设置为等于用户/操作者所设置的maxpgahead值。但是,如果动态改变顺序访问预读值已经启用,判定360就转至“是”分支375,根据当前存储器状况动态地改变最大预读值。
动态改变最大预读值开始于步骤380,用下式计算移页(ShiftPg)值:
其中,minfree为最小所需自由页数,freelist为当前自由页数,threshold为开始动态改变最大顺序访问预读值的存储器紧张门限,integer为取整数。在步骤390,将当前最大页预读(CurPgAhead)设置为等于maxpgahead移动了从如上所述的ShiftPg算法得到的位。在这个实施例中,maxpgahead保持不变,而CurPgAhead为VMM的顺序访问预读过程所用的动态最大页预读值(例如,图1所示的顺序访问预读操作将用CurPgAhead设置而不是maxpgahead值来确定要预取的最大页数)。以下要详细说明的图4示出了一个表,详细列出了基于门限值、最小所需自由空间值(MinFree)和最大页预读值(maxPageAhead)的当前有效最大页预读值(CurPgAhead)。
在步骤395,用当前最大页预读(CurPgAhead)设置和在前面的步骤中设置的预读值执行VMM的顺序访问预读过程。周期性地(即,每隔一段时间),处理循环回检索当前自由表,按需要重新调整CurPgAhead设置及其他顺序访问预读设置。
图4为示出一个列有用图3所示的逻辑动态改变的例示顺序访问预读门限的表的示意图。在图4所示的例子中,最小所需自由空间(minfree)设置为100页,门限(threshold)设置为90(即minfree的90%),而最大顺序访问预读值(maxpageahead)设置为64。
表450用图3的算法完成,minfree、threshold和maxpgahead保持不变,分别为100、90和64:
在自由页数超过90时,所得到的ShiftPg值为0。将移位值(0)施加到maxpgahead(64)上,得到与maxpgahead相同的CurPgAhead(64)。在自由页数小于或等于90但大于80时,得到的ShiftPg值为1。maxpgahead(64)右移一位,得到CurPgAhead为32。
在自由页数小于或等于80但大于70时,得到的ShiftPg值为2。maxpgahead(64)右移2位,得到CurPgAhead为16。在自由页数小于或等于70但大于60时,得到的ShiftPg值为3。maxpgahead(64)右移3位,得到CurPgAhead为8。在自由页数小于或等于60但大于50时,得到的ShiftPg值为4。maxpgahead(64)右移4位,得到CurPgAhead为4。
在自由页数小于或等于50但大于40时,得到的ShiftPg值为5。maxpgahead(64)右移5位,得到CurPgAhead为2。最后,在自由页数小于或等于40时,得到的ShiftPg值为6。maxpgahead(64)右移6位,得到CurPgAhead为1(即,断开)。
图5例示了信息处理***501,它为一个执行在这里所说明的计算操作的计算机***的简化例子。计算机***501包括一个或多个耦接到主机总线502上的处理器500。一个两级(L2)高速缓存器504也耦接到主机总线502上。主机-PCI桥506与主存储器508耦接,包括对高速缓存器和主存储器的控制功能,提供处理PCI总线510、处理器500、L2高速缓存器504、主存储器508和主机总线502之间的传送的总线控制。主存储器508耦接到主机-PCI桥506和主机总线502上。仅由主处理机500使用的设备,诸如LAN卡530之类,都耦接到PCI总线510上。业务处理器接口和ISA访问通路512提供了一个在PCI总线510与PCI总线514之间的接口。这样,就将PCI总线514与PCI总线510隔离。诸如闪速存储器518之类的器件耦接到PCI总线514上。在一种实现中,闪速存储器518包括采用必要的处理器可执行码的BIOS码,用于各种低级***功能和***启动功能。
PCI总线514为各种包括例如闪速存储器518在内的由主处理器500和业务处理器516共享的器件提供一个接口。PCI-ISA桥535提供处理PCI总线514与ISA总线540之间的传送的总线控制、通用串行总线(USB)功能545、功率管理功能555,以及可以包括其他未示出的功能部件,诸如实时时钟脉冲(RTC)、DMA控制、中断支持和***管理总线支持。非易失性的RAM 520耦接到ISA总线540上。业务处理器516包括JTAG和12C总线522上,在初始化步骤期间与处理器500通信。JTAG/12C总线522还耦接到L2高速缓存器504、主机-PCI桥506和主存储器508上,提供处理器、业务处理器、L2高速缓存器、主机-PCI桥和主存储器之间的通信通路。业务处理器516还可以访问***电力资源减低信息处理设备501的动力消耗(power down)。
***设备和输入输出(I/O)设备可以与各个耦接到ISA总线540上的接口(例如,并行接口562、串行接口564、键盘接口568和鼠标接口570)连接。或者,也可以是许多I/O设备由一个耦接到ISA总线540上的超级I/O控制器(未示出)接纳。
为了将计算机***501与另一个计算机***相连接以通过网络拷贝文件,PCI总线510上接有LAN卡530。类似,为了将计算机***501连接到ISP以用电话线路连接接到互联网上,将调制调解器575连接到串行口564上和PCI-ISA桥535上。
虽然图5所示的计算机***能执行在这里所说明的过程,但这个计算机***只不过是计算机***的一个例子。本领域技术人员可以理解,许多其他的计算机***设计都能执行在这里所说明的过程。
本发明的优选实现之一是一个应用程序,即一个可以例如驻留在计算机的随机存取存储器内的代码模块的一组指令(程序代码)。在计算机需要前,这组指令可以存储在另一个计算机存储器内,例如存储在硬盘驱动器上或存储在诸如光盘(供最终在CD ROM内使用)或软盘(供最终在软盘驱动器内使用)内,或者通过互联网或其他计算机网络下载。因此,本发明可以实现为一个供计算机用的计算机程序产品。此外,虽然所说明的这些方法很方便在一个由软件有选择地激活或重新配置的通用计算机内实现,但一般熟悉该技术领域的人员清楚这样的方法也可以用构造成执行这些必需的方法步骤的硬件、固件或更为专用的设备实现。
虽然以上示出和说明了本发明的一些具体实现方式,但对于本领域技术人员来说根据在这里所说明的原理可以在不背离本发明的情况下作出的各种变动和修改是显而易见的,因此,所附权利要求书将所有在本发明的精神实质和范围内的变动和修改都包括在它们的专利保护范围内。此外,可以理解,本发明仅由所附权利要求书定义。熟悉该技术领域的人员可以理解,如果要指定一个所提出的权项的特征的具体数量,就会在这个权项内明确,在没有这样明确的情况下就没有这样的限制。作为有助于理解的非限制性例子,以下所附权利要求书中含有用“至少一个”和“一个或多个”的短语来引述权项的特征。然而,不应该将用这样的措词视为意味着用不定冠词“一个”引述一个权项的特征就将任何含有这样所引述的权项的特征限制成只含有一个这样的特征,即使是同一个权项包括引述短语“一个或多个”或“至少一个”和诸如“一个”之类的不定冠词;这也适用于在权项中使用定冠词的情况。
Claims (28)
1.一种用计算机实现管理存储器的方法,所述方法包括:
检测由虚拟存储器管理器管理的存储器是否受限;以及
响应该检测到存储器受限,动态改变顺序访问预读过程所用的设置,其中改变的设置适合节约顺序访问预读过程所用的存储器。
2.权利要求1的方法,其中所述改变进一步包括:
减小最大页预读值,其中所述最大页预读值确定顺序访问预读过程可读取的最大页数。
3.权利要求2的方法,所述方法还包括:
检索与虚拟存储器管理器当前管理的自由页帧数相对应的值;以及
计算自由页帧数与恒定的最小所需自由页数之差,其中所述最大页预读值根据所计算的差减小一个量。
4.权利要求2的方法,所述方法还包括:
减小最大页预读值后执行虚拟存储器管理器一段时间间隔;
确定所述时间间隔过后存储器受限是否缓解;以及
响应确定存储器受限已缓解,增大最大页预读值。
5.权利要求1的方法,其中所述改变进一步包括:
禁用顺序访问预读过程。
6.权利要求5的方法,所述方法还包括:
禁用顺序访问预读过程后执行虚拟存储器管理器一段时间间隔;
确定所述时间间隔过后存储器受限是否缓解;以及
响应确定存储器受限已缓解,启用顺序访问预读过程。
7.一种计算机实现的管理存储器页的方法,其中所述存储器包括多个已占用页和多个自由页,所述方法包括:
检索与当前自由页数相对应的自由表值;
确定自由表值是否小于预定的最小值;以及
响应确定自由表值小于预定的最小值,动态改变顺序访问预读过程所用的设置,其中改变的设置适合减少分配给顺序访问预读过程的自由页。
8.权利要求7的方法,其中所述改变进一步包括:
减小当前最大页预读值,所述当前最大页预读值确定顺序访问预读过程可读取的最大页数。
9.权利要求8的方法,其中所述减小进一步包括:
根据自由表值与预定最小值之差计算移位值;以及
对恒定的最大页预读值移位所述移位值,所述移位得到当前最大页预读值。
10.权利要求9的方法,其中所述计算进一步包括:
将自由表值与预定最小值之差除以预定最小值与预定调整门限之差,所述相除得到商和余数;以及
将移位值设置为所得到的商。
11.权利要求8的方法,所述方法还包括:
在所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
将后继自由表值与当前最大页预读值相比较;以及
响应后继自由表值小于当前最大页预读值的比较结果,禁用顺序访问预读过程。
12.权利要求8的方法,所述方法还包括:
所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
确定后继自由表值是否小于预定的最小值;
根据后继自由表值与预定最小值之差计算第二移位值;以及
对恒定的最大页预读值移位第二移位值,所述移位得到当前最大页预读值。
13.权利要求8的方法,所述方法还包括:
所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
确定后继自由表值是否大于预定的最小值;以及
响应确定后继自由表值大于预定的最小值,将当前最大预读值设置为等于恒定最大页预读值。
14.权利要求7的方法,其中所述改变进一步包括:
禁用顺序访问预读过程。
15.一种信息处理***,所述信息处理***包括:
一个或多个处理器;
可由处理器访问的存储器;
控制处理器的操作***;
包括在操作***内的虚拟存储器管理器,用来管理存储器的使用;
由操作***管理的、包括由虚拟存储器管理器使用的盘交换区的非易失存储区;
由操作***执行的顺序访问预读过程,用来预取顺序从存储在非易失存储区内的文件读出的数据;
虚拟存储器管理器使用的存储器节约软件模块,该软件模块用来:
检测由虚拟存储器管理器管理的存储器是否受限;以及
响应检测到存储器受限,动态改变顺序访问预读过程所用的设置,其中改变的设置适合节约顺序访问预读过程所用的存储器。
16.权利要求15的信息处理***,其中所述软件还用来:
减小最大页预读值,所述最大页预读值确定顺序访问预读过程可读取的最大页数。
17.权利要求16的信息处理***,其中所述软件还用来:
检索与虚拟存储器管理器当前管理的自由页帧数相对应的值;以及
计算自由页帧数与恒定的最小所需自由页数之差,所述最大页预读值根据所计算的差减小一个量。
18.权利要求16的信息处理***,其中所述软件还用来:
减小最大页预读值后执行虚拟存储器管理器一段时间间隔;
确定所述时间间隔过后存储器受限是否缓解;以及
响应确定存储器受限已缓解,增大最大页预读值。
19.权利要求15的信息处理***,其中所述软件还用来:
禁用顺序访问预读过程。
20.权利要求19的信息处理***,其中所述软件还用来:
禁用顺序访问预读过程后执行虚拟存储器管理器一段时间间隔;
确定所述时间间隔过后存储器受限是否缓解;以及
响应确定存储器受限已缓解,启用顺序访问预读过程。
21.一种信息处理***,所述信息处理***包括:
一个或多个处理器;
可由处理器访问的存储器;
控制处理器的操作***;
包括在操作***内的虚拟存储器管理器,用来管理存储器的使用;
由操作***管理的包括由虚拟存储器管理器使用的盘交换区的非易失存储区;
由操作***执行的顺序访问预读过程,用来预取顺序从存储在非易失存储区内的文件读出的数据;
虚拟存储器管理器使用的存储器节约软件模块,该软件模块用来:
检索与当前自由页数相对应的自由表值;
确定自由表值是否小于预定的最小值;以及
响应确定自由表值小于预定的最小值,动态改变顺序访问预读过程所用的设置,
改变的设置适合减少分配给顺序访问预读过程的自由页。
22.权利要求21的信息处理***,其中所述软件还用来:
减小当前最大页预读值,其中所述当前最大页预读值确定顺序访问预读过程可读取的最大页数。
23.权利要求22的信息处理***,其中所述减小进一步包括:
根据自由表值与预定最小值之差计算移位值;以及
对恒定的最大页预读值移位所述移位值,所述移位得到当前最大页预读值。
24.权利要求23的信息处理***,其中所述计算进一步包括:
将自由表值与预定最小值之差除以预定最小值与预定调整门限之差,所述相除得到商和余数;以及
将移位值设置为所得到的商。
25.权利要求22的信息处理***,所述信息处理***还包括:
所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
将后继自由表值与当前最大页预读值相比较;以及
响应后继自由表值小于当前最大页预读值的比较结果,禁用顺序访问预读过程。
26.权利要求22的信息处理***,所述信息处理***还包括:
所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
确定后继自由表值是否小于预定的最小值;以及
根据后继自由表值与预定最小值之差计算第二移位值;以及
对恒定的最大页预读值移位第二移位值,所述移位得到当前最大页预读值。
27.权利要求22的信息处理***,所述信息处理***还包括:
所述减小后执行虚拟存储器管理器一段时间间隔,其中所述虚拟存储器管理器管理存储器页,并且所述虚拟存储器管理器包括顺序访问预读过程;
检索与所述时间间隔过后可用的自由页数相对应的后继自由表值;
确定后继自由表值是否大于预定的最小值;以及
响应确定后继自由表值大于预定的最小值,将当前最大预读值设置为等于恒定最大页预读值。
28.权利要求27的信息处理***,其中所述改变进一步包括:
禁用顺序访问预读过程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/828,455 | 2004-04-20 | ||
US10/828,455 US7120753B2 (en) | 2004-04-20 | 2004-04-20 | System and method for dynamically adjusting read ahead values based upon memory usage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1707449A CN1707449A (zh) | 2005-12-14 |
CN100346318C true CN100346318C (zh) | 2007-10-31 |
Family
ID=35097664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100657692A Expired - Fee Related CN100346318C (zh) | 2004-04-20 | 2005-04-15 | 根据存储器占用动态调整预读值的***和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7120753B2 (zh) |
CN (1) | CN100346318C (zh) |
TW (1) | TWI354894B (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004977A1 (en) * | 2004-06-30 | 2006-01-05 | Joefon Jann | Autonomically tuning the virtual memory subsystem of a computer operating system |
US7552303B2 (en) * | 2004-12-14 | 2009-06-23 | International Business Machines Corporation | Memory pacing |
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US9201703B2 (en) | 2006-06-07 | 2015-12-01 | International Business Machines Corporation | Sharing kernel services among kernels |
US20090083391A1 (en) * | 2007-09-20 | 2009-03-26 | Oh Yang Jen-Hsueh | Automatic control system with network gateway and method for operating the same |
US8352940B2 (en) * | 2008-06-09 | 2013-01-08 | International Business Machines Corporation | Virtual cluster proxy to virtual I/O server manager interface |
TWI384365B (zh) * | 2009-01-19 | 2013-02-01 | Asustek Comp Inc | 虛擬記憶體的控制系統及控制方法 |
US8612374B1 (en) | 2009-11-23 | 2013-12-17 | F5 Networks, Inc. | Methods and systems for read ahead of remote data |
CN101976182A (zh) * | 2010-11-15 | 2011-02-16 | 记忆科技(深圳)有限公司 | 一种固态硬盘预读取的方法及其装置 |
US8886880B2 (en) | 2012-05-29 | 2014-11-11 | Dot Hill Systems Corporation | Write cache management method and apparatus |
US9684455B2 (en) | 2013-03-04 | 2017-06-20 | Seagate Technology Llc | Method and apparatus for sequential stream I/O processing |
US9552297B2 (en) | 2013-03-04 | 2017-01-24 | Dot Hill Systems Corporation | Method and apparatus for efficient cache read ahead |
US9053038B2 (en) | 2013-03-05 | 2015-06-09 | Dot Hill Systems Corporation | Method and apparatus for efficient read cache operation |
US8930619B2 (en) | 2012-05-29 | 2015-01-06 | Dot Hill Systems Corporation | Method and apparatus for efficiently destaging sequential I/O streams |
US20140223108A1 (en) * | 2013-02-07 | 2014-08-07 | International Business Machines Corporation | Hardware prefetch management for partitioned environments |
US9158687B2 (en) | 2013-03-04 | 2015-10-13 | Dot Hill Systems Corporation | Method and apparatus for processing fast asynchronous streams |
US9152563B2 (en) | 2013-03-04 | 2015-10-06 | Dot Hill Systems Corporation | Method and apparatus for processing slow infrequent streams |
US9465555B2 (en) | 2013-08-12 | 2016-10-11 | Seagate Technology Llc | Method and apparatus for efficient processing of disparate data storage commands |
US9235511B2 (en) * | 2013-05-01 | 2016-01-12 | Globalfoundries Inc. | Software performance by identifying and pre-loading data pages |
US9529609B2 (en) * | 2013-12-10 | 2016-12-27 | Vmware, Inc. | Tracking guest memory characteristics for memory scheduling |
US9547510B2 (en) * | 2013-12-10 | 2017-01-17 | Vmware, Inc. | Tracking guest memory characteristics for memory scheduling |
US20160098203A1 (en) * | 2014-12-18 | 2016-04-07 | Mediatek Inc. | Heterogeneous Swap Space With Dynamic Thresholds |
KR20160075174A (ko) * | 2014-12-19 | 2016-06-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 동작방법 |
KR20160104387A (ko) * | 2015-02-26 | 2016-09-05 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US20170116127A1 (en) * | 2015-10-22 | 2017-04-27 | Vormetric, Inc. | File system adaptive read ahead |
CN109471671B (zh) * | 2017-09-06 | 2023-03-24 | 武汉斗鱼网络科技有限公司 | 一种程序冷启动方法和*** |
US11855898B1 (en) | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
JP6838029B2 (ja) * | 2018-10-31 | 2021-03-03 | ファナック株式会社 | 数値制御装置 |
US11275691B2 (en) * | 2019-04-11 | 2022-03-15 | EMC IP Holding Company LLC | Intelligent control of cache |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408313B1 (en) * | 1998-12-16 | 2002-06-18 | Microsoft Corporation | Dynamic memory allocation based on free memory size |
US20030105940A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for reinforcing a prefetch chain |
CN1470019A (zh) * | 2000-08-21 | 2004-01-21 | ض� | 用于在一个分布式存储器、高速缓存相干的多处理器***中把有序的输入/输出事务流水线处理到相干存储器的方法和装置 |
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的***和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE36462E (en) * | 1986-01-16 | 1999-12-21 | International Business Machines Corporation | Method to control paging subsystem processing in virtual memory data processing system during execution of critical code sections |
US5606685A (en) * | 1993-12-29 | 1997-02-25 | Unisys Corporation | Computer workstation having demand-paged virtual memory and enhanced prefaulting |
US6167486A (en) * | 1996-11-18 | 2000-12-26 | Nec Electronics, Inc. | Parallel access virtual channel memory system with cacheable channels |
US7406547B2 (en) * | 2000-08-09 | 2008-07-29 | Seagate Technology Llc | Sequential vectored buffer management |
US7017025B1 (en) * | 2002-06-27 | 2006-03-21 | Mips Technologies, Inc. | Mechanism for proxy management of multiprocessor virtual memory |
US7336283B2 (en) * | 2002-10-24 | 2008-02-26 | Hewlett-Packard Development Company, L.P. | Efficient hardware A-buffer using three-dimensional allocation of fragment memory |
US20040268124A1 (en) * | 2003-06-27 | 2004-12-30 | Nokia Corporation, Espoo, Finland | Systems and methods for creating and maintaining a centralized key store |
-
2004
- 2004-04-20 US US10/828,455 patent/US7120753B2/en not_active Expired - Fee Related
-
2005
- 2005-04-14 TW TW094111852A patent/TWI354894B/zh not_active IP Right Cessation
- 2005-04-15 CN CNB2005100657692A patent/CN100346318C/zh not_active Expired - Fee Related
-
2006
- 2006-08-08 US US11/463,100 patent/US7318142B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408313B1 (en) * | 1998-12-16 | 2002-06-18 | Microsoft Corporation | Dynamic memory allocation based on free memory size |
CN1470019A (zh) * | 2000-08-21 | 2004-01-21 | ض� | 用于在一个分布式存储器、高速缓存相干的多处理器***中把有序的输入/输出事务流水线处理到相干存储器的方法和装置 |
CN1484788A (zh) * | 2000-12-29 | 2004-03-24 | 英特尔公司 | 根据未命中距离将数据预取到高速缓存器中的***和方法 |
US20030105940A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for reinforcing a prefetch chain |
Also Published As
Publication number | Publication date |
---|---|
US7318142B2 (en) | 2008-01-08 |
CN1707449A (zh) | 2005-12-14 |
TW200604809A (en) | 2006-02-01 |
US7120753B2 (en) | 2006-10-10 |
US20050235125A1 (en) | 2005-10-20 |
US20060288186A1 (en) | 2006-12-21 |
TWI354894B (en) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100346318C (zh) | 根据存储器占用动态调整预读值的***和方法 | |
CN100345124C (zh) | 利用共享专用高速缓存减少高速缓存失误率的方法和*** | |
US9235531B2 (en) | Multi-level buffer pool extensions | |
US8166326B2 (en) | Managing power consumption in a computer | |
CN100442249C (zh) | 用于高速缓存器顺序列表的动态尺寸确定的***和方法 | |
CN100555257C (zh) | 处理页面复制期间的dma操作的存储控制器和方法 | |
CA2511752C (en) | Method and apparatus for morphing memory compressed machines | |
US5895488A (en) | Cache flushing methods and apparatus | |
US7024512B1 (en) | Compression store free-space management | |
US20090055587A1 (en) | Adaptive Caching of Input / Output Data | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的***和方法 | |
CN1877548A (zh) | 用于管理页替换的方法和*** | |
JPH0775004B2 (ja) | メモリ制御方法 | |
US8019939B2 (en) | Detecting data mining processes to increase caching efficiency | |
US20050268052A1 (en) | System and method for improving performance of dynamic memory removals by reducing file cache size | |
US7143242B2 (en) | Dynamic priority external transaction system | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
JP3262519B2 (ja) | 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム | |
CN1286006C (zh) | 高速缓存***与管理高速缓存的方法 | |
US8214609B2 (en) | Data transference to virtual memory | |
US7080206B2 (en) | System and method for adaptively loading input data into a multi-dimensional clustering table | |
CN107408060B (zh) | 一种数据处理的方法及装置 | |
Baek et al. | Matrix-stripe-cache-based contiguity transform for fragmented writes in RAID-5 | |
US20090132780A1 (en) | Cache line reservations | |
CN117093508B (zh) | 一种内存资源管理方法、装置、电子设备及存储介质 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071031 Termination date: 20100415 |