CN114253458A - 内存缺页异常的处理方法、装置、设备及存储介质 - Google Patents
内存缺页异常的处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114253458A CN114253458A CN202010998076.3A CN202010998076A CN114253458A CN 114253458 A CN114253458 A CN 114253458A CN 202010998076 A CN202010998076 A CN 202010998076A CN 114253458 A CN114253458 A CN 114253458A
- Authority
- CN
- China
- Prior art keywords
- information
- memory
- page
- prefetch
- missing
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 title claims abstract description 32
- 230000005856 abnormality Effects 0.000 claims description 44
- 238000005192 partition Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 208000000044 Amnesia Diseases 0.000 abstract description 5
- 231100000863 loss of memory Toxicity 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000003672 processing method Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- KDYFGRWQOYBRFD-UHFFFAOYSA-N succinic acid Chemical compound OC(=O)CCC(O)=O KDYFGRWQOYBRFD-UHFFFAOYSA-N 0.000 description 6
- 238000013136 deep learning model Methods 0.000 description 5
- 101150112439 SMAP gene Proteins 0.000 description 4
- 238000001816 cooling Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 101000794020 Homo sapiens Bromodomain-containing protein 8 Proteins 0.000 description 3
- 101001006782 Homo sapiens Kinesin-associated protein 3 Proteins 0.000 description 3
- 101000615355 Homo sapiens Small acidic protein Proteins 0.000 description 3
- WGKGADVPRVLHHZ-ZHRMCQFGSA-N N-[(1R,2R,3S)-2-hydroxy-3-phenoxazin-10-ylcyclohexyl]-4-(trifluoromethoxy)benzenesulfonamide Chemical compound O[C@H]1[C@@H](CCC[C@@H]1N1C2=CC=CC=C2OC2=C1C=CC=C2)NS(=O)(=O)C1=CC=C(OC(F)(F)F)C=C1 WGKGADVPRVLHHZ-ZHRMCQFGSA-N 0.000 description 3
- 102100021255 Small acidic protein Human genes 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
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)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种内存缺页异常的处理方法、装置、设备及存储介质,属于计算机技术领域。在本申请实施例中,由于历史内存访问信息能够表征历史访问内存的规律,因此,根据历史内存访问信息来预测预取信息,从而将预取信息对应的数据读取到内存中,并非盲目的预取连续的多个内存页地址的数据到内存中,也即本方案预取命中率更高,能够有效减少后续缺页异常的次数,有效降低访存时延,且本方案预取的数据更加有效,对内存资源的损耗较低,内存资源不会很紧张。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种内存缺页异常的处理方法、装置、设备及存储介质。
背景技术
内存包括多个连续的内存页,当处理器需要访问内存数据时,如果该内存数据不在内存包括的内存页中,则会发生缺页异常。
在相关技术中,磁盘包括SWAP分区,SWAP分区用于存储处理器不常访问的内存页上的数据,也即冷页面上的数据。当发生缺页异常时,处理器从SWAP分区读取对应的数据,并将读取的数据加载到内存中相应的内存页上。其中,为了加快缺页异常的处理效率,降低访存时延,在发生缺页异常时,处理器从当前访问的内存数据所在的内存页开始,从SWAP分区中预先读取连续的多个内存页上的数据,并加载到对应的内存页上,以备后续有连续的访问。
然而,在发生缺页异常时,盲目地将连续的多个内存页上的数据预先读取到内存中,在非顺序访问内存页的情况下,预先读取的数据中包括很多并非真正要访问的内存数据,这样会造成内存资源紧张,后续还会再次触发缺页异常,加大了访存时延。
发明内容
本申请实施例提供了一种内存缺页异常的处理方法、装置、设备及存储介质,能够有效减少缺页异常的次数,降低访存时延,减少对内存资源的损耗。所述技术方案如下:
第一方面,提供了一种内存缺页异常的处理方法,该方法包括:
确定目标内存页的信息,得到第一信息,目标内存页为本次发生缺页异常的内存页;根据历史内存访问信息,预测与第一信息对应的多个预取信息,历史内存访问信息用于表征历史访问内存的规律;将多个预取信息对应的数据读取到内存中相应的内存页上。
在本申请实施例中,由于历史内存访问信息能够表征历史访问内存的规律,因此,根据历史内存访问信息来预测预取信息,从而将预取信息对应的数据读取到内存中,并非盲目的预取连续的多个内存页地址的数据到内存中,也即本方案预取命中率更高,能够有效减少后续缺页异常的次数,有效降低访存时延,且本方案预取的数据更加有效,对内存资源的损耗较低,内存资源不会很紧张。
在本申请实施例中,如果计算机设备需要读取的内存数据不在内存包括的内存页中,则发生缺页异常,当发生缺页异常时,确定本次发生缺页异常的内存页的信息,也即确定目标内存页的信息,得到第一信息。
需要说明的是,在本申请实施例中,内存页的信息为能够标识内存页的任意一种信息,例如内存页的地址,内存页的编号等,本申请实施例以内存页的信息为内存页的地址为例,进行介绍。
示例性地,当发生缺页异常时,计算机设备将本次需要读取的内存数据的虚拟地址,转换为目标内存页的地址,得到第一地址。需要说明的是,第一地址为目标内存页的起始地址。
可选地,历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的。
可选地,计算机设备根据历史内存访问信息,预测与第一信息对应的多个预取信息,包括:根据历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与第一信息对应的多个预取信息。
可选地,历史访问内存信息包括序号、缺页信息与预取信息之间的对应关系,缺页信息是指发生缺页异常的内存页的信息,序号是通过对缺页信息进行哈希运算得到的。
基于此,计算机设备根据历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与第一信息对应的多个预取信息,包括:对第一信息进行哈希运算,得到第一序号;根据第一序号和第一信息,从历史访问内存信息中查找对应的多个预取信息。
示例性地,以第一信息为第一地址、预取信息为预取地址为例,缺页地址是历史访问内存信息中存储的触发缺页异常的内存页地址,历史访问内存信息能够存储多个序号以及对应的记录,每个序号对应的记录中能够存储多个缺页地址,每个缺页地址对应的记录中能够存储多个预取地址。
需要说明的是,计算机设备中配置有行数阈值(ROW),行数阈值用于指示关于内存页信息的哈希结果的最大值,也即用于限制序号的最大值
在本申请实施例中,计算机设备根据第一序号和第一信息,从历史访问内存信息中获取对应的多个预取信息时,历史访问内存信息中有可能会存储第一信息对应的多个预取信息,也有可能没有存储第一信息对应的多个预取信息。接下来对这两种情况分别进行说明。
历史访问内存信息中存储有第一信息对应的多个预取信息的情况:
计算机设备根据第一序号和第一信息,从历史访问内存信息中查找对应的多个预取信息,包括:从历史访问内存信息中查找第一序号和第一信息所在的记录;如果从历史访问内存信息中查找到第一序号和第一信息所在的记录,则从第一序号和第一信息所在的记录中查找对应的多个预取信息。
可选地,计算机设备从第一序号和第一信息所在的记录中查找对应的多个预取信息,包括:按照预取深度,从第一序号和第一信息所在的记录中查找对应的多个预取信息。也即是,计算机设备从第一序号和第一信息所在的记录中查找对应的预取信息后,将该记录中总数量不超过预取深度的多个预取信息作为查找到的多个预取信息。
需要说明的是,计算机设备中还配置有预取深度(prefetch deep,PD),预取深度用于指示每次获取的多个预取信息的最大数量。
历史访问内存信息中没有存储第一信息对应的多个预取信息的情况:
在本申请实施例中,计算机设备从历史访问内存信息中查找第一序号和第一信息所在的记录之后,还包括:如果从历史访问内存信息中未查找到第一序号和第一信息所在的记录,则根据第一序号和第一信息,更新历史访问内存信息。
可选地,计算机设备根据第一序号和第一信息,更新历史访问内存信息,包括:在历史访问内存信息未存储第一序号和第一信息的情况下,在历史访问内存信息中创建第一序号和第一信息所在的记录,以更新历史访问内存信息;在历史访问内存信息存储有第一序号,但未存储第一信息的情况下,在第一序号的记录中存储第一信息,以更新历史访问内存信息。
可选地,计算机设备在第一序号的记录中存储第一信息,包括:如果第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则在第一序号的记录中存储第一信息;如果第一序号的记录中存储的缺页信息的数量达到第一数量阈值,则删除第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在第一序号的记录中存储第一信息。
需要说明的是,在本申请实施例中,计算机设备中还配置有第一数量阈值(ASSOC),第一数量阈值用于指示同一个序号的记录中能够存储的缺页信息的最大数量。这样,如果第一序号的记录中存储的缺页信息的数量达到ASSOC,也即是第一序号对应的多个信息位置已存满,则计算机设备删除第一序号的记录中最早存储的缺页信息以及对应的预取信息,并将第一信息存储在第一序列对应的记录中,也即淘汰旧信息,将最新信息更新在历史访问内存信息中。
上述将第一信息存储在第一序号的记录中的方式可以理解为一种最近最少使用(least recently used,LRU)的方式,通过这种方式淘汰最早存储的缺页信息。
不管历史访问内存信息中是否存储有第一信息对应的多个预取信息,在计算机设备确定第一信息之后,还能够根据缺页队列,更新历史访问内存信息。
也即是,计算机设备从历史访问内存信息中查找与第一信息对应的多个预取信息之后,还包括:根据缺页队列,更新历史访问内存信息,缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息。需要说明的是,计算机设备中还存储有缺页队列(missqueue,MQ)。
可选地,计算机设备根据缺页队列,更新历史访问内存信息,包括:将第一信息存储在缺页队列中;获取缺页队列中位于第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息;将第一信息作为该一个或多个第二信息中每个第二信息对应的预取信息,存储至历史访问内存信息中。
可选地,计算机设备中还配置有缺页队列长度(MQ length,MQ_L),缺页队列长度用于指示缺页队列中能够存储的内存页信息的最大数量,以保证缺页队列中存储的内存页信息的数据时效性。
可选地,计算机设备将第一信息作为该一个或多个第二信息中每个第二信息对应的预取信息,存储至历史内存访问信息中,包括:根据第一信息与该一个或多个第二信息中每个第二信息在缺页队列中的位置关系,在历史内存访问信息中存储第一信息与每个第二信息的关联关系。
可选地,该一个或多个第二信息中的每个第二信息对应有一个或多个相关组,该一个或多个相关组的数量为第二数量阈值,每个相关组对应有一个或多个信息位置,每个相关组对应一个相关级别,每个相关组用于存储预取信息;计算机设备根据第一信息与该一个或多个第二信息中每个第二信息在缺页队列中的位置关系,在历史内存访问信息中存储第一信息与每个第二信息的关联关系,包括:从该一个或多个第二信息中选择一个第二信息,对于选择出的第二信息执行如下操作,直至对一个或多个第二信息中的每个第二信息均执行如下操作为止:根据第一信息与选择出的第二信息在缺页队列中的位置,确定第一信息与选择出的第二信息的相关级别,得到参考级别;将第一信息存储在目标相关组的第一个信息位置上,目标相关组为选择出的第二信息对应的相关级别为参考级别的相关组。
需要说明的是,缺页队列中存储的两个内存页信息的位置越近,在一定程度上表示这两个内存页信息的关联程度(相关程度)越高。
由于在将第一信息作为预取信息存储在历史访问内存信息中的目标相关组之前,目标相关组的第一个信息位置上可能已经存储有预取信息(也即存储有内存页信息),那么计算机设备需要先移动和/或删除相应第二信息包括的相关组中存储的预取信息后,将第一信息存储在目标相关组的第一个信息位置上。
可选地,在本申请实施例中,计算机设备中还配置有第三数量阈值(SUCC),第三数量阈值用于指示每个相关组中能够存储的预取信息的最大数量。该一个或多个信息位置的数量为第三数量阈值,该一个或多个相关组按照相关级别的顺序依次排列;计算机设备将第一信息存储在目标相关组的第一个信息位置上,包括:
如果目标相关组的第一个信息位置上未存储内存页信息,则计算机设备将第一信息存储在目标相关组的第一个信息位置上;
如果第一个信息位置上存储有内存页信息,且目标相关组存储的内存页信息的数量未达到第三数量阈值,则计算机设备将目标相关组中存储的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值,且目标相关组为选择出的第二信息对应的最后一个相关组,则计算机设备将目标相关组中的最后一个内存页信息删除,将其余内存页信息后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中存在空闲的信息位置,则计算机设备将目标相关组以及位于目标相关组之后的相关组中首个空闲的信息位置之前的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中不存在空闲的信息位置,则计算机设备将选择出的第二信息对应的最后一个相关组中的最后一个内存页信息删除,将目标相关组以及位于目标相关组之后的相关组中的其余内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上。
由上述可知,计算机设备通过一种顺次后移的方式,将第一信息存储在目标相关组的第一个信息位置上,可以将这种实现方式理解为通过最近最常使用(most recentlyused,MRU)的方式将第一信息插入每个第二信息对应的目标相关组中。
通过以上方式,计算机设备在每次发生缺页异常后,从存储的历史内存访问信息中获取预取信息,以及对历史访问内存信息进行更新,上述介绍的实现方式可以理解为,计算机设备通过一种预取算法来预测预取信息,也即计算机设备中配置有预取算法,计算机设备通过运行预取算法不断地更新历史访问内存信息,通过历史访问内存信息记录历史访问内存的规律。
可选地,计算机设备可以以任一种存储数据的方式来存储历史访问内存信息,例如以表格形式存储历史访问内存信息。可选地,表格形式的历史访问内存信息可以称为多级相关表(multi-level correlation table,MLCT)。
通过以上过程,获取本次缺页异常的内存页对应的多个预取信息,并更新历史内存访问信息(如多级相关表)。由于历史内存访问信息是根据历史访问内存时发生的缺页异常的内存页之间的先后关系逐渐建立起来的,从历史内存访问信息中获取的多个预取信息,很大概率也是历史访问第一信息对应的内存数据之后,需要继续访问的内存数据对应的内存页信息,也即是,本方案读取的多个预取信息对应的数据,很大概率就是处理器接下来要访问的内存数据,也即本方案更加精准地预读内存数据,能够避免造成严重的内存资源浪费,且能够降低再次发生缺页异常的概率,也即提高了预取命中率,有效降低了访存时延。
需要说明的是,计算机设备中应用的访存模式有多种,例如顺序访存模式、非顺序访存模式,非顺序访存模式包括跳读(strided)模式和混合(mixed)模式,本方案通过上述方法学习历史访问内存的规律建立历史访问内存信息,如MLCT,而非盲目的预取连续的内存页地址对应的数据到内存中,本方案对于顺序访存模式、跳读模式和混合模式均有良好的效果。
可选地,在本申请实施例中,计算机设备将该多个预取信息对应的数据读取到内存中相应的内存页上,包括:根据该多个预取信息,从指定存储空间中读取对应的数据到内存中相应的内存页上。
可选地,指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
需要说明的是,在计算机设备中设置指定存储空间,用于存储冷页面的数据,也即是存储未在内存的内存页上存储的数据。其中,XL-FLASH设备的读写速度快于磁盘的SWAP分区,且价格比内存条(如动态随机存取存储器(dynamic random access memory,DRAM))低,容量大,能够提供比内存多几倍的容量,对于计算机设备来说,可供访问的内存空间包括DRAM和XL-FLASH设备,也即通过增加XL-FLASH设备将可供访问的内存空间增加了几倍,也即是对用户可见的访存空间增加了很多。
另外,需要说明的是,关于远端存储器,例如远端的一个计算机设备包括的磁盘、XL-FLASH等存储设备,本设备如果要访问远端存储器的存储空间,可以通过网络访问,如通过高速的互联网访问远端存储器。
可选地,该方法还包括:根据第一时间段内内存中的内存页的访问时间和访问数量,确定内存中的冷页面;将冷页面上的数据从内存移动到指定存储空间中。也即是,除通过上述方法从指定存储空间中预取内存数据之外,处理器还能够结合扫描并淘汰内存中冷页面的方法,将内存中冷页面上的数据移动到指定存储空间中,也即淘汰内存中的冷页面。这样,能够将内存腾出更多的空间用于存放热度高的内存数据,提高内存的资源利用率。
可选地,该方法还包括:接收预取算法性能查询指令;显示预取算法性能信息,预取算法性能信息包括预取准确率和预取覆盖率;其中,预取准确率由预取总数量和预取命中数量确定,预取覆盖率由预取总数量和访问总数量确定,预取总数量是指第二时间段内获取的所有预取信息的总数量,预取命中数量是指第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,访问总数量是指第二时间段内被访问的所有内存页的总数量。
需要说明的是,预取准确率在一定程度上能够表征预取算法的准确度,预取覆盖率在一定程度上能够表征预取算法对于本设备运行的应用的有效程度。
可选地,计算机设备显示预取算法性能信息之后,还包括:接收预取参数调整指令,预取参数调整指令由关于预取算法性能信息的用户反馈确定;根据预取参数调整指令,更新历史访问内存信息。也即是,上述预取内存数据的方法可以理解为基于一种预取算法,用户可以配置预取算法包括的预取参数,如行数阈值、第一数量阈值、第二数量阈值、第三数量阈值、预取深度、缺页队列长度等,用户还能够调整计算机设备中配置的预取参数。以历史访问内存信息为MLCT为例,通常情况下,用户调整预取参数后对应的多级相关表越大,多级相关表能够记录的历史访存信息也就越多,在一定程度上预取算法的性能也就越好。
第二方面,提供了一种内存缺页异常的处理装置,所述内存缺页异常的处理装置具有实现上述第一方面中内存缺页异常的处理方法行为的功能。所述内存缺页异常的处理装置包括一个或多个模块,该一个或多个模块用于实现上述第一方面所提供的内存缺页异常的处理方法。
也即是,提供了一种内存缺页异常的处理装置,该装置包括:
第一确定模块,用于确定目标内存页的信息,得到第一信息,目标内存页为本次发生缺页异常的内存页;
预测模块,用于根据历史内存访问信息,预测与第一信息对应的多个预取信息,历史内存访问信息用于表征历史访问内存的规律;
读取模块,用于将该多个预取信息对应的数据读取到内存中相应的内存页上。
可选地,历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的;
预测模块包括:
获取单元,用于根据历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与第一信息对应的多个预取信息;
可选地,历史内存访问信息包括序号、缺页信息与预取信息之间的对应关系,缺页信息是指发生缺页异常的内存页的信息,序号是通过对缺页信息进行哈希运算得到的;
获取单元包括:
哈希子单元,用于对第一信息进行哈希运算,得到第一序号;
查找子单元,用于根据第一序号和第一信息,从历史内存访问信息中查找对应的多个预取信息。
可选地,查找子单元具体用于:
从历史内存访问信息中查找第一序号和第一信息所在的记录;
如果从历史内存访问信息中查找到第一序号和第一信息所在的记录,则从第一序号和第一信息所在的记录中查找对应的多个预取信息。
可选地,查找子单元具体用于:
按照预取深度,从第一序号和第一信息所在的记录中查找对应的多个预取信息。
可选地,该装置还包括:
第一更新模块,用于如果未获取到与第一信息对应的多个预取信息,则根据第一序号和第一信息,更新历史内存访问信息,第一序号是对第一信息进行哈希运算得到的。
可选地,第一更新模块包括:
第一更新单元,用于在历史内存访问信息未存储第一序号和第一信息的情况下,在历史内存访问信息中创建第一序号和第一信息所在的记录,以更新历史内存访问信息;
第二更新单元,用于在历史内存访问信息存储有第一序号,但未存储第一信息的情况下,在第一序号的记录中存储第一信息,以更新历史内存访问信息。
可选地,第二更新单元包括:
第一存储子单元,用于如果第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则在第一序号的记录中存储第一信息;
第二存储子单元,用于如果第一序号的记录中存储的缺页信息的数量达到第一数量阈值,则删除第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在第一序号的记录中存储第一信息。
可选地,该装置还包括:
第二更新模块,用于根据缺页队列,更新历史内存访问信息,缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息。
可选地,第二更新模块包括:
第一存储单元,用于将第一信息存储在缺页队列中;
获取单元,用于获取缺页队列中位于第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息;
第二存储单元,用于将第一信息作为该一个或多个第二信息中每个第二信息对应的预取信息,存储至历史内存访问信息中。
可选地,第二存储单元包括:
第三存储子单元,用于根据第一信息与该一个或多个第二信息中每个第二信息在缺页队列中的位置关系,在历史内存访问信息中存储第一信息与每个第二信息的关联关系。
可选地,该一个或多个第二信息中的每个第二信息对应有一个或多个相关组,该一个或多个相关组的数量为第二数量阈值,每个相关组对应有一个或多个信息位置,每个相关组对应一个相关级别,每个相关组用于存储预取信息;
第三存储子单元具体用于:
从该一个或多个第二信息中选择一个第二信息,对于选择出的第二信息执行如下操作,直至对该一个或多个第二信息中的每个第二信息均执行如下操作为止:
根据第一信息与选择出的第二信息在缺页队列中的位置,确定第一信息与选择出的第二信息的相关级别,得到参考级别;
将第一信息存储在目标相关组的第一个信息位置上,目标相关组为选择出的第二信息对应的相关级别为参考级别的相关组。
可选地,该一个或多个信息位置的数量为第三数量阈值,该一个或多个相关组按照相关级别的顺序依次排列;
第三存储子单元具体用于:
如果第一个信息位置上存储有内存页信息,且目标相关组存储的内存页信息的数量未达到第三数量阈值,则将目标相关组中存储的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值,且目标相关组为选择出的第二信息对应的最后一个相关组,则将目标相关组中的最后一个内存页信息删除,将其余内存页信息后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中存在空闲的信息位置,则将目标相关组以及位于目标相关组之后的相关组中首个空闲的信息位置之前的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中不存在空闲的信息位置,则将选择出的第二信息对应的最后一个相关组中的最后一个内存页信息删除,将目标相关组以及位于目标相关组之后的相关组中的其余内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上。
可选地,读取模块包括:
读取单元,用于根据该多个预取信息,从指定存储空间中读取对应的数据到内存中相应的内存页上。
可选地,该指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
可选地,该装置还包括:
第二确定模块,用于根据第一时间段内内存中的内存页的访问时间和访问数量,确定内存中的冷页面;
移动模块,用于将冷页面上的数据从内存移动到指定存储空间中。
可选地,该装置还包括:
第一接收模块,用于接收预取算法性能查询指令;
显示模块,用于显示预取算法性能信息,预取算法性能信息包括预取准确率和预取覆盖率;
其中,预取准确率由预取总数量和预取命中数量确定,预取覆盖率由预取总数量和访问总数量确定,预取总数量是指第二时间段内获取的所有预取信息的总数量,预取命中数量是指第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,访问总数量是指第二时间段内被访问的所有内存页的总数量。
可选地,该装置还包括:
第二接收模块,用于接收预取参数调整指令,预取参数调整指令由关于预取算法性能信息的用户反馈确定;
第三更新模块,用于根据预取参数调整指令,更新历史内存访问信息。
第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器用于存储执行上述第一方面所提供的内存缺页异常的处理方法的程序,以及存储用于实现上述第一方面所提供的内存缺页异常的处理方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的内存缺页异常的处理方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的内存缺页异常的处理方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案至少能够带来以下有益效果:
在本申请实施例中,由于历史内存访问信息能够表征历史访问内存的规律,因此,根据历史内存访问信息来预测预取信息,从而将预取信息对应的数据读取到内存中,并非盲目的预取连续的多个内存页地址的数据到内存中,也即本方案预取命中率更高,能够有效减少后续缺页异常的次数,有效降低访存时延,且本方案预取的数据更加有效,对内存资源的损耗较低,内存资源不会很紧张。
附图说明
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是本申请实施例提供的一种内存缺页异常的处理方法的流程图;
图3是本申请实施例提供的一种缺页队列的示意图;
图4是本申请实施例提供的一种从存储的多级相关表中获取预取地址的示意图;
图5是本申请实施例提供的另一种内存缺页异常的处理方法的流程图;
图6是本申请实施例提供的一种多级相关表的示意图;
图7是本申请实施例提供的又一种内存缺页异常的处理方法的流程图;
图8是本申请实施例提供的一种内存缺页异常的处理方法的示意图;
图9是本申请实施例提供的另一种内存缺页异常的处理方法的示意图;
图10是本申请实施例提供的一种内存缺页异常的处理装置的结构示意图;
图11是本申请实施例提供的另一种内存缺页异常的处理装置的结构示意图;
图12是本申请实施例提供的又一种内存缺页异常的处理装置的结构示意图;
图13是本申请实施例提供的又一种内存缺页异常的处理装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
请参考图1,图1是根据本申请实施例示出的一种计算机设备的结构示意图。该计算机设备包括一个或多个处理器101、通信总线102、存储器103以及一个或多个通信接口104。
处理器101为一个通用中央处理器(central processing unit,CPU)、网络处理器(NP)、微处理器、或者为一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。可选地,上述PLD为复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。在本申请实施例中,处理器101具有实现本申请实施例提供的内存缺页异常的处理方法的功能,具体实现方式参照图2至图9实施例中的详细介绍。
通信总线102用于在上述组件之间传送信息。可选地,通信总线102分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,存储器103为只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、电可擦可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、光盘(包括只读光盘(compact disc read-only memory,CD-ROM)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器103独立存在,并通过通信总线102与处理器101相连接,或者,存储器103与处理器101集成在一起。在本申请实施例中,存储器103包括内存和指定存储空间,指定存储空间如XL-FLASH设备的存储空间。
通信接口104使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口104包括有线通信接口,可选地,还包括无线通信接口。其中,有线通信接口例如以太网接口等。可选地,以太网接口为光接口、电接口或其组合。无线通信接口为无线局域网(wireless local area networks,WLAN)接口、蜂窝网络通信接口或其组合等。
可选地,在一些实施例中,计算机设备包括多个处理器,如图1中所示的处理器101和处理器105。这些处理器中的每一个为一个单核处理器,或者一个多核处理器。可选地,这里的处理器指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还包括输出设备106和输入设备107。输出设备106和处理器101通信,能够以多种方式来显示信息。例如,输出设备106为液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备107和处理器101通信,能够以多种方式接收用户的输入。例如,输入设备107是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器103还用于存储执行本申请方案的程序代码110,处理器101能够执行存储器103中存储的程序代码110。该程序代码110中包括一个或多个软件模块,该计算机设备能够通过处理器101以及存储器103中的程序代码110,来实现下文图2实施例提供的内存缺页异常的处理方法。示例性地,该程序代码110包括图10实施例所示的第一确定模块、预测模块和读取模块,处理器101通过第一确定模块、预测模块和读取模块,在内存发生缺页异常时,确定缺页预测的内存页的信息,预测预取信息,并预读内存数据到内存页上。
图2是本申请实施例提供的一种内存缺页异常的处理方法的流程图,该方法应用于计算机设备。请参考图2,该方法包括如下步骤。
步骤201:确定目标内存页的信息,得到第一信息,目标内存页为本次发生缺页异常的内存页。
在本申请实施例中,当计算机设备包括的处理器需要访问内存数据时,如果该内存数据不在内存包括的内存页中,则会发生缺页异常。
示例性地,当计算机设备的操作系统中运行的一个进程需要读取内存数据时,根据需要读取的内存数据的虚拟地址,从存储的内存的虚拟地址与物理地址的映射关系中,查找对应的物理地址,如果该映射关系中不存在对应的虚拟地址和物理地址,则表示需要读取的内存数据不在内存包括的内存页中,则操作系统会触发缺页异常。
当发生缺页异常时,确定本次发生缺页异常的内存页的信息,也即确定目标内存页的信息,得到第一信息。
需要说明的是,在本申请实施例中,内存页的信息可以为能够标识内存页的任意一种信息,例如内存页的地址,内存页的编号等,本申请实施例以内存页的信息为内存页的地址为例进行介绍。也即是,当发生缺页异常时,确定本次发生缺页异常的内存页的地址,也即确定目标内存页的地址,得到第一地址。
在本申请实施例中,计算机设备将本次需要读取的内存数据的虚拟地址,转换为目标内存页的地址,得到第一地址,第一信息即为第一地址。需要说明的是,第一地址为目标内存页的起始地址,起始地址为一个虚拟地址。
示例性地,假设内存的大小为100k,计算机设备按照每连续的4k将内存划分为连续的25个内存页,每个内存页对应一个内存页地址,每个内存页地址为对应的内存页的起始地址,例如,第一个内存页地址为0000,第二个内存页地址为0004,本次缺页异常的内存数据的虚拟地址为0011,那么用0011除以4得到的商乘以4,即得到本次缺页异常的内存页的起始地址为0008,也即第一地址为0008。
步骤202:根据历史内存访问信息,预测与第一信息对应的多个预取信息,历史内存访问信息用于表征历史访问内存的规律。
在本申请实施例中,计算机设备在得到本次发生缺页异常的内存页的信息之后,也即得到第一信息之后,根据历史内存访问信息,预测与第一信息对应的多个预取信息。其中,历史内存访问信息用于表征历史访问内存的规律。
示例性地,第一信息为第一地址,预取信息为预取地址,计算机设备根据历史内存访问信息,预测与第一地址对应的多个预取地址。
计算机设备根据历史内存访问信息,预测与第一信息对应的多个预取信息的实现方式有多种,接下来详细介绍其中的一种。
在本申请实施例中,历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的。计算机设备从存储的历史内存访问信息中获取与第一信息对应的多个预取信息。
可选地,在这种实现方式中,历史内存访问信息可以称为缺页关联信息。
在本申请实施例中,计算机设备根据历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与第一信息对应的多个预取信息。也即是,本申请实施例中的计算机设备中存储有该关联关系,计算机设备可以根据该关联关系,预测预取信息。
在本申请实施例中,历史内存访问信息包括序号、缺页信息和预取信息之间的对应关系,缺页信息是指发生缺页异常的内存页的信息,序号是通过对缺页信息进行哈希运算得到的。
基于此,计算机设备从存储的历史内存访问信息中获取与第一信息对应的多个预取信息的实现过程为:计算机设备对第一信息进行哈希运算,得到第一序号,根据第一序号和第一信息,从历史内存访问信息中查找对应的多个预取信息。
示例性地,以第一信息为第一地址、预取信息为预取地址为例,计算机设备对第一地址进行哈希运算,得到第一序号,根据第一序号和第一地址,从历史内存访问信息中查找对应的多个预取地址。其中,缺页地址是历史内存访问信息中存储的触发缺页异常的内存页的地址,历史内存访问信息能够存储多个序号以及对应的记录,每个序号对应的记录中能够存储多个缺页地址,每个缺页地址对应的记录中能够存储多个预取地址。
示例性地,假设内存包括100个内存页,也即有100个内存页地址,假设哈希运算的参数为10,那么对内存页地址进行哈希运算之后,最多能够得到10个序号,每个序号对应的记录中最多存储10个内存页地址,这样,历史内存访问信息能够存储10个序号对应的记录,每个序号对应的记录最多存储10个缺页地址。假设第一地址为0024,计算机设备对第一地址进行哈希运算之后,得到第一序号为4,那么计算机设备根据第一序号4以及第一地址0024,从存储的历史内存访问信息中查找对应的多个预取地址。
需要说明的是,计算机设备中配置有行数阈值(ROW),行数阈值用于指示关于内存页信息(如地址)的哈希结果的最大值,也即用于限制序号的最大值,示例性地,行数阈值为10,那么序号可以为0-9(或者1-10等),也即序号的最大值为9(或者10等)。
在本申请实施例中,计算机设备根据第一序号和第一信息,从历史内存访问信息中查找对应的多个预取信息时,历史内存访问信息中有可能会存储第一信息对应的多个预取信息,也有可能没有存储第一信息对应的多个预取信息。接下来对这两种情况分别进行说明。
历史内存访问信息中存储有第一信息对应的多个预取信息的情况:
计算机设备从历史内存访问信息中查找第一序号和第一信息所在的记录,如果从历史内存访问信息中查找到第一序号和第一信息所在的记录,则从第一序号和第一信息所在的记录中查找对应的多个预取信息。
示例性地,计算机设备从历史内存访问信息中查找第一序号和第一地址所在的记录,如果从历史内存访问信息中查找到第一序号和第一地址所在的记录,则从第一序号和第一地址所在的记录中查找对应的多个预取地址。
在一些实施例中,计算机设备从第一序号和第一信息所在的记录中查找对应的预取信息后,将该记录中所有的预取信息作为获取到的多个预取信息。例如,预取信息为预取地址,计算机设备将查找到的所有预取地址作为获取到的多个预取地址。
在另一些实施例中,计算机设备按照预取深度,从第一序号和第一信息所在的记录中查找对应的多个预取信息。也即是,计算机设备从第一序号和第一信息所在的记录中查找对应的预取信息后,将该记录中总数量不超过预取深度的多个预取信息作为获取到的多个预取信息。例如,计算机设备将查找到的记录中总数量不超过预取深度的多个预取地址作为获取到的多个预取地址。
需要说明的是,计算机设备中还配置有预取深度(PD),预取深度用于指示每次获取的多个预取信息(如地址)的最大数量。如果第一序号和第一信息所在的记录中的预取信息的总数量不超过PD,则计算机设备将该记录中的所有预取信息均作为获取到的多个预取信息。如果第一序号和第一信息所在的记录中的预取信息的数量超过预取深度,则计算机设备将该记录中PD个预取信息作为查找到的多个预取信息,例如,计算机设备从该记录中随机选择PD个预取信息,或者,计算机设备按照预取信息的存储时间顺序或位置顺序等方式选择PD个预取信息。
历史内存访问信息中没有存储第一信息对应的多个预取信息的情况:
在本申请实施例中,如果未获取到与第一信息对应的多个预取信息,则计算机设备根据第一序号和第一信息,更新历史内存访问信息,其中,第一序号是对第一信息进行哈希运算得到的。
示例性地,计算机设备从历史内存访问信息中查找第一序号和第一地址所在的记录,如果从历史内存访问信息中未查找到第一序号和第一地址所在的记录,则计算机设备根据第一序号和第一地址,更新历史内存访问信息。
其中,在历史内存访问信息未存储第一序号和第一信息的情况下,计算机设备在历史内存访问信息中创建第一序号和第一信息所在的记录,以更新历史内存访问信息。在历史内存访问信息存储有第一序号,但未存储第一信息的情况下,计算机设备在第一序号的记录中存储第一信息,以更新历史内存访问信息。
示例性地,以内存页的信息为内存页的地址为例,计算机设备在第一次根据一个触发缺页异常的内存页的地址,查找预取地址时,历史内存访问信息中未存储任何信息,计算机设备将本次缺页异常的第一地址、以及对第一地址哈希运算得到的第一序号存储在历史内存访问信息中,以更新历史内存访问信息。随着计算机设备不断根据每次缺页异常的第一地址和第一序号对历史内存访问信息的更新,历史内存访问信息中不断增加新的序号和对应的缺页地址。
其中,计算机设备在第一序号的记录中存储第一信息的一种实现方式为:如果第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则计算机设备在第一序号的记录中存储第一信息;如果第一序号的记录中存储的缺页信息的数量达到第一数量阈值,则计算机设备删除第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在第一序号的记录中存储第一信息。
需要说明的是,在本申请实施例中,计算机设备中还配置有第一数量阈值(ASSOC),第一数量阈值用于指示同一个序号的记录中能够存储的缺页信息(如地址)的最大数量。这样,如果第一序号的记录中存储的缺页信息的数量达到ASSOC,则计算机设备删除第一序号的记录中最早存储的缺页信息以及对应的预取信息,并将第一信息存储在第一序号的记录中,也即淘汰旧信息,将最新信息更新在历史内存访问信息中。
示例性地,假设内存包括100个内存页,也即有100个内存页地址,假设行数阈值ROW为10,那么对内存页地址进行哈希运算之后,最多能够得到10个序号,每个序号的记录中最多对应存储10个内存页地址,这样,历史内存访问信息能够存储10个序号以及对应的记录,每个序号的记录中最多存储10个缺页地址。假设第一数量阈值为4,也即每个序号最多对应存储4个缺页地址,第一序号的记录中已经存储有4个缺页地址,那么计算机设备将这4个缺页地址中最早存储的缺页地址以及对应的预取地址删除,再将第一地址存储在第一序号对应的记录中。
需要说明的是,第一数量阈值ASSOC的值可以小于每个序号最多对应存储的内存页地址的数量,例如,在上述示例中,每个序号最多对应存储10个内存页地址,但第一数量阈值设置为4,小于10,这样,计算机设备通过对内存页地址的哈希运算,以及设置第一数量阈值较小,以减小存储的数据量,仅在历史内存访问信息中存储相对较新的信息,在保证预取准确率的同时,加快从历史内存访问信息中获取预取信息的速率。
上述将第一信息存储在第一序号的记录中的方式可以理解为一种LRU的方式,通过这种方式淘汰最早存储的缺页信息。
不管历史内存访问信息中是否存储有第一信息对应的多个预取信息,在计算机设备确定第一信息之后,还能够根据缺页队列,更新历史内存访问信息。
需要说明的是,在本申请实施例中,计算机设备中还存储有缺页队列,缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息,也即按照时间顺序存储历史访问内存时触发缺页异常的内存页的信息。
在本申请实施例中,计算机设备根据缺页队列MQ,更新历史内存访问信息的实现方式包括如下几个步骤:
(1)将第一信息存储在缺页队列中。
在本申请实施例中,计算机设备在缺页队列中存储第一信息的实现方式有多种,接下来介绍其中的两种实现方式。
方式1,计算机设备将第一信息(如地址)存储在缺页队列的队尾。在这种存储方式中,可选地,计算机设备每隔一个时间周期删除缺页队列中的过期数据,例如将存储时间距离当前时间超过时间阈值的内存页信息删除,或者,保留缺页队列中存储时间较近的指定数量的内存页信息,而将缺页队列中存储时间较早的其他内存页信息删除,以在节省存储空间的同时,保证缺页队列中存储的内存页信息的数据时效性。
在方式1中,最新存储的第一信息(如地址)总是位于缺页队列的队尾。
方式2,计算机设备中还配置有缺页队列长度MQ_L,缺页队列长度用于指示缺页队列中能够存储的内存页信息(如地址)的最大数量。在这种存储方式中,计算机设备从第一次在MQ中记录内存页信息时开始计数,每次计数后得到的值作为缺页总数量,也即计算机设备累计缺页次数,得到缺页总数量。计算机设备在本次得到第一信息,并计数得到的缺页总数量后,计算缺页总数量除以缺页队列长度得到一个余数,根据该余数确定第一信息在缺页队列中的存储位置,将第一信息存储在该存储位置上。
示例性地,假设缺页队列长度为128,也即缺页队列中最多存储128个发生缺页异常的内存页的信息,缺页队列的存储位置包括0-127(或者1-128)。
假设计算机设备得到本次缺页异常的第一地址对应的缺页总数量为36,此时缺页队列还未存满,计算机设备用36除以128,得到余数36,那么计算机设备根据该余数确定第一信息的存储位置为35(或者36),将第一信息存储在缺页队列中的该存储位置上。
假设计算机设备得到本次缺页异常的第一信息对应的缺页总数量为139,此时缺页队列已经存满,计算机设备用139除以128,得到余数11,那么计算机设备根据该余数确定第一信息的存储位置为10(或者11),将第一信息存储在缺页队列中的该存储位置上,也即将该存储位置上之前存储的内存页信息覆盖掉。
在方式2中,以循环存储的方式在缺页队列中存储第一信息(如地址),最新存储的第一信息并不一定位于缺页队列的队尾。
由上述可知,在计算机设备中删除缺页队列中的过期数据,或者还配置有缺页队列长度的存储方式中,能够在节省存储空间的同时,保证缺页队列中存储的内存页信息的数据时效性。
(2)获取缺页队列中位于第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息。
需要说明的是,在本申请实施例中,计算机设备中还配置有第二数量阈值(LEVEL),第二数量阈值用于指示从缺页队列中获取的第二信息的最大数量。
由前述可知,计算机设备在缺页队列中存储第一信息的实现方式有多种,相应地,计算机设备从缺页队列中获取第二信息的实现方式也有多种,接下来介绍与上述在缺页队列中存储第一信息的方式1和方式2分别对应的两种实现方式。
假设计算机设备按照上述方式1在缺页队列中存储第一信息,也即总是将第一信息存储在缺页队列的队尾,那么计算机设备直接获取缺页队列中第一信息之前数量不超过第二数量阈值的内存页信息,即得到该一个或多个第二信息。
例如,以内存页信息为内存页地址为例,缺页队列中当前存储的内存页地址包括m1、m2、m3、m4、m5,第一地址为m5,第二数量阈值为3,那么计算机设备获取m2、m3和m4作为获取的3个第二地址。
假设计算机设备按照上述方式2在缺页队列中存储第一信息,也即第一信息不一定存储在缺页队列的队尾,在这种情况下,如果缺页队列中第一信息之前的内存页信息的数量不少于第二数量阈值,则计算机设备直接获取缺页队列中第一信息之前数量不超过第二数量阈值的内存页信息,即得到该一个或多个第二信息。如果缺页队列中第一信息之前的内存页信息的数量少于第二数量阈值,且缺页队列存满的情况下,计算机设备获取缺页队列中第一信息之前的内存页信息,以及获取从队尾往前的部分内存页信息,得到数量为第二数量阈值的一个或多个第二信息。也即是,在计算机设备通过循环存储的方式在缺页队列中存储第一信息时,计算机设备也通过往前循环的方式获取第二信息。
例如,以内存页信息为内存页地址为例,缺页队列中当前存储的内存页地址包括m1、m2、m3、m4、m5、m6、m7、m8,第一地址为m2,第二数量阈值为3,那么计算机设备获取m1、m8和m7作为获取的3个第二地址,这样在缺页队列中存储有除第一地址之外不少于第二数量阈值的内存页地址的情况下,保证获取到数量为第二数量阈值的一个或多个第二地址。
(3)将第一信息作为该一个或多个第二信息中每个第二信息对应的预取信息,存储在历史内存访问信息中。
在本申请实施例中,计算机设备根据第一信息与该一个或多个第二信息中每个第二信息在缺页队列中的位置关系,在历史内存访问信息中存储第一信息与每个第二信息的关联关系。
可选地,在本申请实施例中,该一个或多个第二信息中的每个第二信息对应有一个或多个相关组,该一个或多个相关组的数量为第二数量阈值,每个相关组对应有一个或多个信息位置,每个相关组对应一个相关级别,每个相关组用于存储预取信息。基于此,计算机设备从该一个或多个第二信息中选择一个第二信息,对于选择出的第二信息执行如下操作,直至对该一个或多个第二信息中的每个第二信息均执行如下操作为止:根据第一信息与选择出的第二信息在缺页队列中的位置,确定第一信息与选择出的第二信息的相关级别,得到参考级别,将第一信息存储在目标相关组的第一个信息位置上,其中,目标相关组为选择出的第二信息对应的相关级别为参考级别的相关组。
需要说明的是,缺页队列中存储的两个内存页信息(如地址)的位置越近,在一定程度上表示这两个内存页信息的关联程度(相关程度)越高。基于此,计算机设备根据第一信息与每个第二信息在缺页队列中的位置,确定第一信息与相应第二信息的相关级别,得到参考级别,将第一信息存储在历史内存访问信息中相应第二信息对应的目标相关组中的第一个信息位置上。
示例性地,以内存页信息为内存页地址、信息位置为地址位置为例,假设缺页队列包括m1、m2、m3、m4、m5、m6、m7、m8,第一地址为m4,第二数量阈值为3,m1、m2和m3为获取的3个第二地址,每个第二地址对应3个相关组,那么计算机设备根据m1和m4在缺页队列中的位置,确定m4与m1的相关级别为3,将m4存储在m1对应的第三个相关组中的第一个地址位置上;根据m2和m4在缺页队列中的位置,确定m4与m2的相关级别为2,将m4存储在m2对应的第二个相关组中的第一个地址位置上;根据m3和m4在缺页队列中的位置,确定m4与m3的相关级别为1,将m4存储在m1对应的第一个相关组中的第一个地址位置上。
可选地,为了快速确定该一个或多个第二信息在历史内存访问信息中的位置,计算机设备对每个第二信息进行哈希运算,得到相应第二信息对应的序号,从历史内存访问信息中查找对应的序号,在从对应的序号的记录中存储的缺页信息中查找相应第二信息。
由于在将第一信息作为预取信息存储在历史内存访问信息中的目标相关组之前,目标相关组的第一个信息位置上可能已经存储有预取信息(也即存储有内存页信息),那么计算机设备需要先移动和/或删除相应第二信息包括的相关组中存储的预取信息后,将第一信息存储在目标相关组的第一个信息位置上。
可选地,每个相关组对应的一个或多个信息位置的数量为第三数量阈值,该一个或多个相关组按照相关级别的顺序依次排列。也即是,在本申请实施例中,计算机设备中还配置有第三数量阈值(SUCC),第三数量阈值用于指示每个相关组中能够存储的预取信息(如地址)的最大数量。基于此,计算机设备将第一信息存储在目标相关组的第一个信息位置上包括多种情况:
情况1,如果目标相关组的第一个信息位置上未存储内存页信息,则计算机设备将第一信息存储在目标相关组的第一个信息位置上。
情况2,如果目标相关组的第一个信息位置上存储有内存页信息,且目标相关组存储的内存页信息的数量未达到第三数量阈值,则计算机设备将目标相关组中存储的每个内存页信息均后移一个信息位置后,将第一信息存储在目标相关组的第一个信息位置上。
情况3,如果目标相关组存储的内存页信息的数量达到第三数量阈值,且目标相关组为选择出的第二信息对应的最后一个相关组,则将目标相关组中的最后一个内存页信息删除,将目标相关组中其余内存页信息后移一个信息位置后,将第一信息存储在目标相关组的第一个信息位置上。
情况4,如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中存在空闲的信息位置,则将目标相关组以及位于目标相关组之后的相关组中首个空闲的信息位置之前的每个内存页信息均后移一个信息位置后,将第一信息存储在目标相关组的第一个信息位置上。
情况5,如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中不存在空闲的信息位置,则将选择出的第二信息对应的最后一个相关组中的最后一个内存页信息删除,将目标相关组以及位于目标相关组之后的相关组中的其余内存页信息均后移一个信息位置后,将第一信息存储在目标相关组的第一个信息位置上。
由上述可知,计算机设备通过一种顺次后移的方式,将第一信息存储在目标相关组的第一个信息位置上,可以将这种实现方式理解为通过MRU的方式将第一信息插入每个第二信息对应的目标相关组中。
可选地,计算机设备中配置一个第三数量阈值,或者,配置多个第三数量阈值,每个相关组对应一个第三数量阈值,这样,能够更加灵活地配置每个相关组中最多能够存储的预取信息的数量,例如配置相关程度较高(如相关级别为一级)的相关组对应的第三数量阈值较大,配置相关程度较低(如相关级别为三级)的相关组对应的第三数量阈值较小,这样可以在一定程度上提高预取准确率。
通过以上方式,计算机设备在每次发生缺页异常后,从存储的历史内存访问信息中获取预取信息,以及对历史内存访问信息进行更新,上述介绍的实现方式可以理解为,计算机设备通过一种预取算法来预测预取信息(如地址),也即计算机设备中配置有预取算法,计算机设备通过运行预取算法不断地更新历史内存访问信息,通过历史内存访问信息记录历史访问内存的规律。
可选地,计算机设备中配置有预取算法(可以理解为软件模块),配置的预取算法包括预取参数,预取参数包括上述介绍的行数阈值(ROW)、第一数量阈值(ASSOC)、第二数量阈值(LEVEL)、第三数量阈值(SUCC)、预取深度(PD)和缺页队列长度(MQ_L),其中,第一数量阈值、预取深度和缺页队列长度可选择配置或者不配置。在不配置第一数量阈值的情况下,每个序号能够存储最多的缺页信息(如地址),在不配置预取深度的情况下,将第一序号和第一信息的记录中的所有预取信息作为获取到的预取信息,在不配置缺页队列长度的情况下,计算机设备将第一信息存储在缺页队列的队尾。
以上介绍的关于计算机设备通过存储的历史内存访问信息中预测预取信息的实现方式,可选地,计算机设备可以以任一种存储数据的方式来存储历史内存访问信息,例如以表格形式存储历史内存访问信息。接下来介绍以表格形式存储历史内存访问信息,以及以内存页信息为内存页地址为例,再次对以上过程进行解释说明,可选地,表格形式的历史内存访问信息可以称为多级相关表MLCT,接下来以MLCT、且内存页的信息为内存页的地址为例进行介绍。
假设计算机设备种配置有预取算法,预取算法包括预取参数,预取参数包括行数阈值、第一数量阈值、第二数量阈值、第三数量阈值、预取深度和缺页队列长度,计算机设备根据缺页队列更新存储的MLCT。
在本申请实施例中,用户可以通过计算机设备配置预取算法,包括配置预取参数,其中,
ROW:R,关于内存页地址的哈希结果的最大值,也即用于限制序号的最大值;
ASSOC:同一个哈希结果对应的tags(T)中,能够记录的内存页地址的最大数量,也即同一个序号的记录中存储的内存页地址的最大数量;
LEVEL:LEV,每一个tag对应的内存页地址对应的相关组的数量;
SUCC:每个相关组中能够存储的内存页地址的最大数量;
PD:每次获取的多个预取地址的最大数量;
MQ_L:缺页队列长度。
示例性地,用户在计算机设备中输入命令行insmod smap_prefetch.ko ROW=4ASSOC=4LEVEL=2SUCC=3PD=6MQ_L=128,其中,insmod表示加载模块,smap_prefetch.ko为预取算法模块,计算机设备中的处理器根据该命令行加载预取算法模块,并将预取参数传递到预取算法模块。
参见图3,对缺页队列(MQ)、第三数量阈值(SUCC)进行解释说明。在图3中,MQ中按照时间顺序存储每次缺页异常的内存页的地址,包括A、B、C、D、E、F、G、H、I,假设本次发生缺页异常的第一地址为E,第三数量阈值为3,那么获取MQ中的B、C和D得到3个第二地址,其中,E与B的相关级别为3,E与C的相关级别为2,E与D的相关级别为1,可以理解为E是B的三级后继(level 3successor,L3 SUCCE),E是C的二级后继(level 2successor,L2 SUCCE),E是D的一级后继(level 1successor,L1 SUCCE),那么将第一地址E存储在B的三级相关组中,将E存储在C的二级相关组中,将E存储在D的一级相关组中,得到存储有B、C和D以及对应的预取地址的多级相关表。
参见图4,对预取深度(PD)进行解释,图4所示的多级相关表中存储有第一地址E以及对应的预取地址,E对应的一级相关组(level 1group,L1G)中存储有A和C,二级相关组(level 2group,L2G)中存储有B和D,三级相关组中存储有H,假设预取深度为3,那么计算机设备获取A、C和B作为预取地址。
参见图5,计算机设备根据以下步骤来处理缺页异常。
1、当触发缺页异常时,确定缺失的内存数据的虚拟地址va,根据该虚拟地址va,确定本次缺页异常的内存页的起始地址,得到第一地址vap。
示例性地,假设内存的大小为100k,按照每连续的4k将内存划分为连续的25个内存页,每个内存页对应一个内存页地址,每个内存页地址为对应的内存页的起始地址,例如,第一个内存页地址为0000,第二个内存页地址为0004,本次缺页异常的内存数据的虚拟地址为0011,那么用0011除以4得到的商乘以4,即得到本次缺页异常的内存页的起始地址为0008,也即第一地址为0008。
2、对第一地址vap进行哈希运算,得到第一序号rp。
示例性地,假设预取参数包括的行数阈值ROW为10,序号从0开始,哈希运算能够得到序号的最大值为9,第一地址为0008,根据哈希运算用0008除以10得到的商为0,将0作为第一序号。
3、从多级相关表(MLCT)中查找第一序号rp,如果查找到第一序号rp,则从第一序号rp对应的tags中查找第一地址vap,如果查找到第一地址vap,则计算机设备根据预取深度PD,获取对应的多个预取地址。其中tags对应的列用于存储缺页地址。
如果未查找到第一序号rp,则计算机设备在MLCT中增加第一序号rp,并将第一地址vap增加在第一序号rp对应的一个tag中;
如果查找到第一序号rp,但未查找到vap,则计算机设备采用LRU的方式将第一地址vap存储在第一序号rp对应的一个tag中。
其中,采用LRU方式在第一序号中存储第一地址vap的方式为:如果该第一序号rp对应的tags中记录的内存页地址的数量达到第一数量阈值(ASSOC),则计算机设备将该tags中存储时间最早的内存页地址删除后,将第一地址vap增加在tags中;如果该第一序号rp对应的tags中记录的内存页地址的数量未达到第一数量阈值,则计算机设备直接将第一地址vap增加在tags中。
4、如果获取到多个预取地址,则从指定存储空间中将对应的数据读取到内存中。
5、将第一地址vap存储在缺页队列MQ中,作为MQ中的mp(配置有缺页队列长度,以循环方式存储)。
6、根据第二数量阈值(LEVEL,理解为几级后继),获取MQ中位于第一地址vap之前的不超过LEVEL个的内存页地址mi,假设levels=3,且MQ中有存储时间在第一地址vap之前的大于或等于3个内存页地址,则获取MQ中位于第一地址vap之前的3个内存页地址,按时间顺序依次为m1、m2、m3。
7、对每个mi进行哈希运算,得到对应的序号ri,从MLCT中分别找到每个mi对应的ri的位置,并根据每个mi与mp在MQ中的位置,找到对应的相关组(相关level),采用MRU的方式将mp(也即第一地址vap)存储在对应的相关组(目标相关组)中。
其中,采用MRU的方式在相关组中存储第一地址vapage,可以理解为顺次后移的方式,具体实现方式参照前述实施例,这里不再赘述。
图6是本申请实施例示出的一个示例性的MLCT,在图6中,ROW(R)所在的列用于存储序号,ASSOC所在的列用于存储每个TAG(T)的序号,ASSOC这列为可选的,TAG所在的列存储每个序号对应的缺页地址,L1所在的列用于存储缺页地址(VA)对应的一级后继的预取地址,L2所在的列用于存储缺页地址对应的二级后继的预取地址(PVA)。
通过以上过程,获取本次缺页异常的内存页对应的多个预取地址,并更新多级相关表。由于多级相关表是根据历史访问内存时发生的缺页异常的内存页之间的先后关系逐渐建立起来的,从多级相关表中获取的多个预取地址,很大概率也是历史访问第一地址对应的内存数据之后,需要继续访问的内存数据对应的内存页地址,也即是,本方案读取的多个预取地址对应的数据,很大概率就是处理器接下来要访问的内存数据,也即本方案更加精准地预读内存数据,能够避免造成严重的内存资源浪费,且能够降低再次发生缺页异常的概率,也即提高了预取命中率,有效降低了访存时延。
需要说明的是,计算机设备中应用的访存模式有多种,例如顺序访存模式、非顺序访存模式,非顺序访存模式包括跳读(strided)模式和混合(mixed)模式,本方案通过预取算法学习历史访问内存的规律建立MLCT,而非盲目的预取连续的内存页地址对应的数据到内存中,本方案对于顺序访存模式、跳读模式和混合模式均有良好的效果。
可选地,除以上介绍的通过存储历史内存访问信息(如MLCT)来预测预取信息之外,在其他一些实施例中,计算机设备基于马尔可夫模型来预测第一信息对应的预取信息。例如,计算机设备根据历史内存访问信息构建马尔可夫模型,历史内存访问信息包括按照时间顺序排列的历史访问的内存页信息(如地址),或者按照时间顺序排列的缺页异常的内存页信息,计算机设备根据马尔可夫模型计算内存页信息的测量概率以及内存页信息之间的转移概率,之后根据测量概率和转移概率计算第一信息转移到其他内存页信息的概率,将计算得到的最大概率对应的内存页信息作为一个预取信息。可选地,在预测得到一个预取信息之后,计算机设备继续将该预取信息作为第一信息,继续通过马尔可夫模型预测下一个概率最大的预取信息,得到第二个预取信息,以此类推,直至得到数量为预取深度的多个预取信息。
可选地,在另一些实施例中,计算机设备通过深度学习模型预测第一信息对应的预取信息,如通过人工智能(artificialnbsp intelligence,AI)模型预测预取信息。其中,历史内存访问信息包括按照时间顺序排列的历史访问的内存页信息(如地址),深度学习模型根据历史内存访问信息训练得到,例如,计算机设备将历史访问的一个内存页信息作为样本输入,将访问该内存页之后继续访问的数量为预取深度的多个内存页信息作为样本期望输出,得到一个训练样本,通过这种方式得到多个训练样本,每个训练样本包括一个样本输入和一个样本期望输出,计算机设备将训练样本输入初始模型,训练得到深度学习模型。计算机设备在得到本次发生缺页异常的内存页信息,也即得到第一信息之后,将第一信息输入深度学习模型,输出多个预取信息。可选地,计算机设备通过在线获取训练样本,在线训练的方式逐渐训练更新深度学习模型,或者计算机设备获取一定量的训练样本之后,通过离线训练的方式训练得到深度学习模型。
步骤203:将该多个预取信息对应的数据读取到内存中相应的内存页上。
在本申请实施例中,计算机设备在预测得到多个预取信息(如地址)之后,将该多个预取信息对应的数据读取到内存中相应的内存页上。
需要说明的是,以预取信息为预取地址为例,预取地址为虚拟地址,该多个预取地址对应的数据可能有部分已经在内存中相应的内存页上,计算机设备根据存储的内存的虚拟地址与物理地址的映射关系,判断该多个预取地址对应的数据是否已在相应的内存页上,将不在内存页上的数据读取到相应内存页上。
在本申请实施例中,计算机设备根据该多个预取信息,从指定存储空间中读取对应的数据到内存中相应的内存页上。
可选地,指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
需要说明的是,在计算机设备中设置指定存储空间,用于存储冷页面的数据,也即是存储未在内存的内存页上存储的数据。其中,XL-FLASH设备的读写速度快于磁盘的SWAP分区,且价格比内存条(如DRAM)低,容量大,能够提供比内存多几倍的容量,对于计算机设备来说,可供访问的内存空间包括DRAM和XL-FLASH设备,也即通过增加XL-FLASH设备将可供访问的内存空间增加了几倍,也即是对用户可见的访存空间增加了很多。
另外,需要说明的是,关于远端存储器,例如远端的一个计算机设备包括的磁盘、XL-FLASH等存储设备,本设备如果要访问远端存储器的存储空间,可以通过网络访问,如通过高速的互联网访问远端存储器。
可选地,指定内存空间包括SWAP分区、XL-FLASH设备和远端存储器中的一个或多个的存储空间。
可选地,计算机设备根据第一时间段内内存中的内存页的访问时间和访问数量,确定内存中的冷页面,并将冷页面上的数据从内存移动到指定存储空间中。也即是,除上述通过预取算法从指定存储空间中预取内存数据之外,处理器还能够结合扫描并淘汰内存中冷页面的方法,将内存中冷页面上的数据移动到指定存储空间中,也即淘汰内存中的冷页面。这样,能够将内存腾出更多的空间用于存放热度高的内存数据,提高内存的资源利用率。
在本申请实施例中,计算机设备获取第一时间段内内存中的内存页的访问时间和访问数量,根据该段时间内内存中的内存页的访问时间和访问数量,确定内存中的冷页面。
示例性地,内存中每个内存页的访问数量对应权重w1,该段时间内内存中每个内存页的各个访问时间距离当前时间的时长的平均值为第一时长,第一时长对应权重w2,处理器计算内存中每个内存页的访问数量与权重w1的乘积加上第一时长与权重w2的乘积,得到相应内存页对应的访存统计值,处理器将内存中对应的访存统计值小于统计阈值的内存页确定为冷页面,或者处理器将内存中各个内存页对应的访问统计值从小到大排序,将排序靠后的指定比例的访问统计值对应的内存页确定为冷页面。
可选地,计算机设备周期性地扫描和淘汰冷页面,第一时间段为本次扫描之前的一段时间,第一时间段的时长可以大于、等于或小于扫描周期。
需要说明的是,扫描确定冷页面的策略可以有多种,每种策略以将访问数量越少,且访问时间越早的内存页确定为冷页面为目的,上述介绍的策略仅为一种示例。
可选地,计算机设备淘汰冷页面时,将内存中冷页面上的数据压缩后存储在指定存储空间中,预读内存数据时,从指定存储空间中将预取的内存数据解压之后读取到内存中。这样,通过数据压缩,节省指定存储空间的数据存储量,可以将更多的冷页面从内存中淘汰到指定存储空间中,这样,内存中能够存放更多的热度较高的内存数据,进一步提高内存的资源利用率。
参见图7,计算机设备结合预取算法以及内存页面扫描,来预取内存数据以及淘汰内存数据,其中,计算机设备通过页面扫描模块扫描内存中的冷页面,并将冷页面的数据压缩后存储到指定存储空间中,计算机设备通过预取算法从指定存储空间中预取内存数据,其中通过内核压缩模块从指定存储空间中解压相应数据后读取到内存中(如DRAM),相当于是读取热页面数据。
可选地,计算机设备还能够接收预取算法性能查询指令,并显示预取算法性能信息,预取算法性能信息包括预取准确率和预取覆盖率。其中,预取准确率由预取总数量和预取命中数量确定,预取覆盖率由预取总数量和访问总数量确定,预取总数量是指第二时间段内获取的所有预取信息的总数量,预取命中数量是指第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,访问总数量是指第二时间段内被访问的所有内存页的总数量。
可选地,第二时间段是指计算机设备从运行预取算法开始至接收到预取算法性能查询指令的一段时间,或者,第二时间段为接收到预取算法性能信息查询的时刻之前的指定时长的一段时间。
需要说明的是,预取准确率在一定程度上能够表征预取算法的准确度,预取覆盖率在一定程度上能够表征预取算法对于本设备运行的应用的有效程度。
示例性地,用户通过在计算机设备中输入/sys/kernel/mm/smap_prefetch/prefetch_stats或/sys/kernel/mm/smap_prefetch_module/module_stats这样的命令行,获取预取算法性能信息,包括预取准确率、预取覆盖率、预取总数量、预取命中数量等。如果预取准确率较低,用户可以通过在计算机设备中输入命令行,调整预取参数,例如增大LEVEL、增大ASSOC或增大SUCC等,计算机设备根据调整后的预取参数更新历史内存访问信息(如MLCT),以在历史内存访问信息中记录更多的历史访问的内存页信息的关联关系。
也即是,计算机设备在显示预取算法性能信息之后,接收预取参数调整指令,预取参数调整指令由关于预取算法性能信息的用户反馈确定,计算机设备根据预取参数调整指令,更新历史内存访问信息。
在本申请实施例中,用户可以通过计算机设备查询预取算法性能信息,计算机设备在接收到预取算法性能查询指令之后显示预取算法性能信息,例如显示预取准确率和预取覆盖率,可选地,还可以显示预取总数量、预取命中数量等,用户可以选择根据预取准确率和预取覆盖率,通过计算机设备调整预取参数。以历史内存访问信息为MLCT为例,通常情况下,用户调整预取参数后对应的多级相关表越大,多级相关表能够记录的历史访问的内存页信息的关联关系也就越多,在一定程度上预取算法的性能也就越好。
接下来以计算机设备中的软硬件模块对本申请实施例提供的内存缺页异常的处理方法进行示例性地说明。
参见图8,计算机设备包括处理器(CPU)、内存以及指定存储空间(以XL-FLASH为例),将本方法理解为通过SMAP抽象三层模型实现,SMAP包括感知层、决策层和物理层,SMAP可以理解包括为本申请实施例提供的所有方法相应的功能。其中,计算机设备通过处理器和统计内存(主存)中的冷热页面,例如通过应用(application,APP)、操作系统(operaingsystem,OS)或虚拟机(如Hyper-v)统计内存冷热页面,也即通过软件层面的感知层内存冷热。计算机设备通过处理器运行预取算法和内存淘汰算法等,来预取或者淘汰内存页,也即通过软件以及硬件层面的决策层来预取或者淘汰内存页。计算机设备通过内存硬件模块执行介质的压缩与解压等,也即通过物理层的介质压缩提高存取速率以及节省存储空间。
参见图9,以用户层面以及计算机设备中操作系统的内核层面为例,对本申请实施例提供的内存缺页异常的处理方法作示例性说明。在图9中,用户通过命令行等形式配置预取算法以及其他相关的算法(如扫描冷页面的内存淘汰算法),在操作系统的内核空间中,运行算法以实现内存页的数据预取,以及内存中冷页面的淘汰。
综上所述,在本申请实施例中,由于历史内存访问信息能够表征历史访问内存的规律,因此,根据历史内存访问信息来预测预取信息,从而将预取信息对应的数据读取到内存中,并非盲目的预取连续的多个内存页地址的数据到内存中,也即本方案预取命中率更高,能够有效减少后续缺页异常的次数,有效降低访存时延,且本方案预取的数据更加有效,对内存资源的损耗较低,内存资源不会很紧张。
图10是本申请实施例提供的一种内存缺页异常的处理装置1000的结构示意图,该内存缺页异常的处理装置1000可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为图1所示的计算机设备。参见图10,该装置1000包括:第一确定模块1001、预测模块1002和读取模块1003。
第一确定模块1001,用于确定目标内存页的信息,得到第一信息,目标内存页为本次发生缺页异常的内存页;具体实现方式参照前述图2实施例中步骤201的详细介绍,这里不再赘述。
预测模块1002,用于根据历史内存访问信息,预测与第一信息对应的多个预取信息,历史内存访问信息用于表征历史访问内存的规律;具体实现方式参照前述图2实施例中步骤202的详细介绍,这里不再赘述。
读取模块1003,用于将该多个预取信息对应的数据读取到内存中相应的内存页上。具体实现方式参照前述图2实施例中步骤203的详细介绍,这里不再赘述。
可选地,历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的;
预测模块1002包括:
获取单元,用于根据历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与第一信息对应的多个预取信息;
可选地,历史内存访问信息包括序号、缺页信息与预取信息之间的对应关系,缺页信息是指发生缺页异常的内存页的信息,序号是通过对缺页信息进行哈希运算得到的;
获取单元包括:
哈希子单元,用于对第一信息进行哈希运算,得到第一序号;
查找子单元,用于根据第一序号和第一信息,从历史内存访问信息中查找对应的多个预取信息。
可选地,查找子单元具体用于:
从历史内存访问信息中查找第一序号和第一信息所在的记录;
如果从历史内存访问信息中查找到第一序号和第一信息所在的记录,则从第一序号和第一信息所在的记录中查找对应的多个预取信息。
可选地,查找子单元具体用于:
按照预取深度,从第一序号和第一信息所在的记录中查找对应的多个预取信息。
可选地,该装置还包括:
第一更新模块,用于如果未获取到与第一信息对应的多个预取信息,则根据第一序号和第一信息,更新历史内存访问信息,第一序号是对第一信息进行哈希运算得到的。
可选地,第一更新模块包括:
第一更新单元,用于在历史内存访问信息未存储第一序号和第一信息的情况下,在历史内存访问信息中创建第一序号和第一信息所在的记录,以更新历史内存访问信息;
第二更新单元,用于在历史内存访问信息存储有第一序号,但未存储第一信息的情况下,在第一序号的记录中存储第一信息,以更新历史内存访问信息。
可选地,第二更新单元包括:
第一存储子单元,用于如果第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则在第一序号的记录中存储第一信息;
第二存储子单元,用于如果第一序号的记录中存储的缺页信息的数量达到第一数量阈值,则删除第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在第一序号的记录中存储第一信息。
可选地,该装置还包括:
第二更新模块,用于根据缺页队列,更新历史内存访问信息,缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息。
可选地,第二更新模块包括:
第一存储单元,用于将第一信息存储在缺页队列中;
获取单元,用于获取缺页队列中位于第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息;
第二存储单元,用于将第一信息作为该一个或多个第二信息中每个第二信息对应的预取信息,存储至历史内存访问信息中。
可选地,第二存储单元包括:
第三存储子单元,用于根据第一信息与该一个或多个第二信息中每个第二信息在缺页队列中的位置关系,在历史内存访问信息中存储第一信息与每个第二信息的关联关系。
可选地,该一个或多个第二信息中的每个第二信息对应有一个或多个相关组,该一个或多个相关组的数量为第二数量阈值,每个相关组对应有一个或多个信息位置,每个相关组对应一个相关级别,每个相关组用于存储预取信息;
第三存储子单元具体用于:
从该一个或多个第二信息中选择一个第二信息,对于选择出的第二信息执行如下操作,直至对该一个或多个第二信息中的每个第二信息均执行如下操作为止:
根据第一信息与选择出的第二信息在缺页队列中的位置,确定第一信息与选择出的第二信息的相关级别,得到参考级别;
将第一信息存储在目标相关组的第一个信息位置上,目标相关组为选择出的第二信息对应的相关级别为参考级别的相关组。
可选地,该一个或多个信息位置的数量为第三数量阈值,该一个或多个相关组按照相关级别的顺序依次排列;
第三存储子单元具体用于:
如果第一个信息位置上存储有内存页信息,且目标相关组存储的内存页信息的数量未达到第三数量阈值,则将目标相关组中存储的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值,且目标相关组为选择出的第二信息对应的最后一个相关组,则将目标相关组中的最后一个内存页信息删除,将其余内存页信息后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中存在空闲的信息位置,则将目标相关组以及位于目标相关组之后的相关组中首个空闲的信息位置之前的每个内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上;
如果目标相关组存储的内存页信息的数量达到第三数量阈值、目标相关组不是选择出的第二信息对应的最后一个相关组,且选择出的第二信息对应的相关组中位于目标相关组之后的相关组中不存在空闲的信息位置,则将选择出的第二信息对应的最后一个相关组中的最后一个内存页信息删除,将目标相关组以及位于目标相关组之后的相关组中的其余内存页信息均后移一个信息位置后,将第一信息存储在第一个信息位置上。
可选地,读取模块1003包括:
读取单元,用于根据该多个预取信息,从指定存储空间中读取对应的数据到内存中相应的内存页上。
可选地,该指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
可选地,参见图11,该装置1000还包括:
第二确定模块1004,用于根据第一时间段内内存中的内存页的访问时间和访问数量,确定内存中的冷页面;具体实现方式参照前述图2实施例中步骤203的详细介绍,这里不再赘述。
移动模块1005,用于将冷页面上的数据从内存移动到指定存储空间中。
可选地,参见图12,该装置1000还包括:
第一接收模块1006,用于接收预取算法性能查询指令;
显示模块1007,用于显示预取算法性能信息,预取算法性能信息包括预取准确率和预取覆盖率;
其中,预取准确率由预取总数量和预取命中数量确定,预取覆盖率由预取总数量和访问总数量确定,预取总数量是指第二时间段内获取的所有预取信息的总数量,预取命中数量是指第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,访问总数量是指第二时间段内被访问的所有内存页的总数量。
可选地,参见图13,该装置1000还包括:
第二接收模块1008,用于接收预取参数调整指令,预取参数调整指令由关于预取算法性能信息的用户反馈确定;
第三更新模块1009,用于根据预取参数调整指令,更新历史内存访问信息。
在本申请实施例中,由于历史内存访问信息能够表征历史访问内存的规律,因此,根据历史内存访问信息来预测预取信息,从而将预取信息对应的数据读取到内存中,并非盲目的预取连续的多个内存页地址的数据到内存中,也即本方案预取命中率更高,能够有效减少后续缺页异常的次数,有效降低访存时延,且本方案预取的数据更加有效,对内存资源的损耗较低,内存资源不会很紧张。
需要说明的是:上述实施例提供的内存缺页异常的处理装置在内存缺页异常的处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存缺页异常的处理装置与内存缺页异常的处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))或半导体介质(例如:固态硬盘(solid state disk,SSD))等。值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (32)
1.一种内存缺页异常的处理方法,其特征在于,所述方法包括:
确定目标内存页的信息,得到第一信息,所述目标内存页为本次发生缺页异常的内存页;
根据历史内存访问信息,预测与所述第一信息对应的多个预取信息,所述历史内存访问信息用于表征历史访问内存的规律;
将所述多个预取信息对应的数据读取到所述内存中相应的内存页上。
2.如权利要求1所述的方法,其特征在于,所述历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的。
3.如权利要求1或2所述的方法,其特征在于,所述根据历史内存访问信息,预测与所述第一信息对应的多个预取信息,包括:
根据所述历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与所述第一信息对应的多个预取信息。
4.如权利要求3所述的方法,其特征在于,所述历史内存访问信息包括序号、缺页信息与预取信息之间的对应关系,所述缺页信息是指发生缺页异常的内存页的信息,所述序号是通过对所述缺页信息进行哈希运算得到的。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
如果未获取到与所述第一信息对应的多个预取信息,则根据第一序号和所述第一信息,更新所述历史内存访问信息,所述第一序号是对所述第一信息进行哈希运算得到的。
6.如权利要求5所述的方法,其特征在于,所述根据第一序号和所述第一信息更新所述历史内存访问信息,包括:
在所述历史内存访问信息未存储所述第一序号和所述第一信息的情况下,在所述历史内存访问信息中创建所述第一序号和所述第一信息所在的记录,以更新所述历史内存访问信息;
在所述历史内存访问信息存储有所述第一序号,但未存储所述第一信息的情况下,在所述第一序号的记录中存储所述第一信息,以更新所述历史内存访问信息。
7.如权利要求6所述的方法,其特征在于,所述在所述第一序号的记录中存储所述第一信息,包括:
如果所述第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则在所述第一序号的记录中存储所述第一信息;
如果所述第一序号的记录中存储的缺页信息的数量达到所述第一数量阈值,则删除所述第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在所述第一序号的记录中存储所述第一信息。
8.如权利要求1-7任一所述的方法,其特征在于,所述方法还包括:
根据缺页队列,更新所述历史内存访问信息,所述缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息。
9.如权利要求8所述的方法,其特征在于,所述根据缺页队列,更新所述历史内存访问信息,包括:
将所述第一信息存储在所述缺页队列中;
获取所述缺页队列中位于所述第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息;
将所述第一信息作为所述一个或多个第二信息中每个第二信息对应的预取信息,存储至所述历史内存访问信息中。
10.如权利要求9所述的方法,其特征在于,所述将所述第一信息作为所述一个或多个第二信息中每个第二信息对应的预取信息,存储至所述历史内存访问信息中,包括:
根据所述第一信息与所述一个或多个第二信息中每个第二信息在所述缺页队列中的位置关系,在所述历史内存访问信息中存储所述第一信息与每个第二信息的关联关系。
11.如权利要求1-10任一所述的方法,其特征在于,所述将所述多个预取信息对应的数据读取到所述内存中相应的内存页上,包括:
根据所述多个预取信息,从指定存储空间中读取对应的数据到所述内存中相应的内存页上。
12.如权利要求11所述的方法,其特征在于,所述指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
13.如权利要求11或12所述的方法,其特征在于,所述方法还包括:
根据第一时间段内所述内存中的内存页的访问时间和访问数量,确定所述内存中的冷页面;
将所述冷页面上的数据从所述内存移动到所述指定存储空间中。
14.如权利要求1-13任一所述的方法,其特征在于,所述方法还包括:
接收预取算法性能查询指令;
显示预取算法性能信息,所述预取算法性能信息包括预取准确率和预取覆盖率;
其中,所述预取准确率由预取总数量和预取命中数量确定,所述预取覆盖率由预取总数量和访问总数量确定,所述预取总数量是指第二时间段内获取的所有预取信息的总数量,所述预取命中数量是指所述第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,所述访问总数量是指所述第二时间段内被访问的所有内存页的总数量。
15.如权利要求14所述的方法,其特征在于,所述显示预取算法性能信息之后,还包括:
接收预取参数调整指令,所述预取参数调整指令由关于所述预取算法性能信息的用户反馈确定;
根据所述预取参数调整指令,更新所述历史内存访问信息。
16.一种内存缺页异常的处理装置,其特征在于,所述装置包括:
第一确定模块,用于确定目标内存页的信息,得到第一信息,所述目标内存页为本次发生缺页异常的内存页;
预测模块,用于根据历史内存访问信息,预测与所述第一信息对应的多个预取信息,所述历史内存访问信息用于表征历史访问内存的规律;
读取模块,用于将所述多个预取信息对应的数据读取到所述内存中相应的内存页上。
17.如权利要求16所述的装置,其特征在于,所述历史内存访问信息是根据历史访问内存时发生缺页异常的内存页之间的先后关系确定的。
18.如权利要求16或17所述的装置,其特征在于,所述预测模块包括:
获取单元,用于根据所述历史内存访问信息中发生缺页异常的内存页的信息与预取信息之间的关联关系,获取与所述第一信息对应的多个预取信息。
19.如权利要求18所述的装置,其特征在于,所述历史内存访问信息包括序号、缺页信息与预取信息之间的对应关系,所述缺页信息是指发生缺页异常的内存页的信息,所述序号是通过对所述缺页信息进行哈希运算得到的。
20.如权利要求19所述的装置,其特征在于,所述装置还包括:
第一更新模块,用于如果未获取到与所述第一信息对应的多个预取信息,则根据第一序号和所述第一信息,更新所述历史内存访问信息,所述第一序号是对所述第一信息进行哈希运算得到的。
21.如权利要求20所述的装置,其特征在于,所述第一更新模块包括:
第一更新单元,用于在所述历史内存访问信息未存储所述第一序号和所述第一信息的情况下,在所述历史内存访问信息中创建所述第一序号和所述第一信息所在的记录,以更新所述历史内存访问信息;
第二更新单元,用于在所述历史内存访问信息存储有所述第一序号,但未存储所述第一信息的情况下,在所述第一序号的记录中存储所述第一信息,以更新所述历史内存访问信息。
22.如权利要求21所述的装置,其特征在于,所述第二更新单元包括:
第一存储子单元,用于如果所述第一序号的记录中存储的缺页信息的数量未达到第一数量阈值,则在所述第一序号的记录中存储所述第一信息;
第二存储子单元,用于如果所述第一序号的记录中存储的缺页信息的数量达到所述第一数量阈值,则删除所述第一序号的记录中存储时间最早的缺页信息以及对应的预取信息,在所述第一序号的记录中存储所述第一信息。
23.如权利要求16-22任一所述的装置,其特征在于,所述装置还包括:
第二更新模块,用于根据缺页队列,更新所述历史内存访问信息,所述缺页队列用于按照时间顺序存储发生缺页异常的内存页的信息。
24.如权利要求23所述的装置,其特征在于,所述第二更新模块包括:
第一存储单元,用于将所述第一信息存储在所述缺页队列中;
获取单元,用于获取所述缺页队列中位于所述第一信息之前且数量不超过第二数量阈值的内存页信息,得到一个或多个第二信息;
第二存储单元,用于将所述第一信息作为所述一个或多个第二信息中每个第二信息对应的预取信息,存储至所述历史内存访问信息中。
25.如权利要求24所述的装置,其特征在于,所述第二存储单元包括:
第三存储子单元,用于根据所述第一信息与所述一个或多个第二信息中每个第二信息在所述缺页队列中的位置关系,在所述历史内存访问信息中存储所述第一信息与每个第二信息的关联关系。
26.如权利要求16-25任一所述的装置,其特征在于,所述读取模块包括:
读取单元,用于根据所述多个预取信息,从指定存储空间中读取对应的数据到所述内存中相应的内存页上。
27.如权利要求26所述的装置,其特征在于,所述指定存储空间为本设备包括的磁盘上划分的SWAP分区的存储空间,或者本设备包括的XL-FLASH存储器的存储空间,或者远端存储器的存储空间。
28.如权利要求26或27所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于根据第一时间段内所述内存中的内存页的访问时间和访问数量,确定所述内存中的冷页面;
移动模块,用于将所述冷页面上的数据从所述内存移动到所述指定存储空间中。
29.如权利要求16-28任一所述的装置,其特征在于,所述装置还包括:
第一接收模块,用于接收预取算法性能查询指令;
显示模块,用于显示预取算法性能信息,所述预取算法性能信息包括预取准确率和预取覆盖率;
其中,所述预取准确率由预取总数量和预取命中数量确定,所述预取覆盖率由预取总数量和访问总数量确定,所述预取总数量是指第二时间段内获取的所有预取信息的总数量,所述预取命中数量是指所述第二时间段内获取的所有预取信息对应的内存页中被访问的内存页的总数量,所述访问总数量是指所述第二时间段内被访问的所有内存页的总数量。
30.如权利要求29所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收预取参数调整指令,所述预取参数调整指令由关于所述预取算法性能信息的用户反馈确定;
第三更新模块,用于根据所述预取参数调整指令,更新所述历史内存访问信息。
31.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;
所述存储器,用于存储权利要求1-15任一所述的方法所涉及的计算机程序;
所述处理器,用于执行所述计算机程序实现权利要求1-15任一所述的方法。
32.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-15任一所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010998076.3A CN114253458B (zh) | 2020-09-21 | 2020-09-21 | 内存缺页异常的处理方法、装置、设备及存储介质 |
PCT/CN2021/117898 WO2022057749A1 (zh) | 2020-09-21 | 2021-09-13 | 内存缺页异常的处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010998076.3A CN114253458B (zh) | 2020-09-21 | 2020-09-21 | 内存缺页异常的处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114253458A true CN114253458A (zh) | 2022-03-29 |
CN114253458B CN114253458B (zh) | 2024-04-26 |
Family
ID=80776448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010998076.3A Active CN114253458B (zh) | 2020-09-21 | 2020-09-21 | 内存缺页异常的处理方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114253458B (zh) |
WO (1) | WO2022057749A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931693A (zh) * | 2024-03-22 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 一种内存管理方法及内存管理单元 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130565B (zh) * | 2023-10-25 | 2024-02-06 | 苏州元脑智能科技有限公司 | 数据处理方法、装置、磁盘阵列卡及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133780A (zh) * | 2013-05-02 | 2014-11-05 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
WO2015043376A1 (zh) * | 2013-09-26 | 2015-04-02 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
CN105095094A (zh) * | 2014-05-06 | 2015-11-25 | 华为技术有限公司 | 内存管理方法和设备 |
KR20180072345A (ko) * | 2016-12-21 | 2018-06-29 | 연세대학교 산학협력단 | 페이지의 프리페칭 방법 및 장치 |
CN111143243A (zh) * | 2019-12-19 | 2020-05-12 | 上海交通大学 | 一种基于nvm混合内存的缓存预取方法及系统 |
CN111427804A (zh) * | 2020-03-12 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种减少缺页中断次数的方法、存储介质及智能终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737399B (zh) * | 2018-07-20 | 2023-09-05 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN110795363B (zh) * | 2019-08-26 | 2023-05-23 | 北京大学深圳研究生院 | 一种存储介质的热页预测方法和页面调度方法 |
CN110955495B (zh) * | 2019-11-26 | 2022-08-05 | 网易(杭州)网络有限公司 | 虚拟化内存的管理方法、装置和存储介质 |
-
2020
- 2020-09-21 CN CN202010998076.3A patent/CN114253458B/zh active Active
-
2021
- 2021-09-13 WO PCT/CN2021/117898 patent/WO2022057749A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133780A (zh) * | 2013-05-02 | 2014-11-05 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
WO2015043376A1 (zh) * | 2013-09-26 | 2015-04-02 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
CN105095094A (zh) * | 2014-05-06 | 2015-11-25 | 华为技术有限公司 | 内存管理方法和设备 |
KR20180072345A (ko) * | 2016-12-21 | 2018-06-29 | 연세대학교 산학협력단 | 페이지의 프리페칭 방법 및 장치 |
CN111143243A (zh) * | 2019-12-19 | 2020-05-12 | 上海交通大学 | 一种基于nvm混合内存的缓存预取方法及系统 |
CN111427804A (zh) * | 2020-03-12 | 2020-07-17 | 深圳震有科技股份有限公司 | 一种减少缺页中断次数的方法、存储介质及智能终端 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931693A (zh) * | 2024-03-22 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 一种内存管理方法及内存管理单元 |
Also Published As
Publication number | Publication date |
---|---|
CN114253458B (zh) | 2024-04-26 |
WO2022057749A1 (zh) | 2022-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5305389A (en) | Predictive cache system | |
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
KR102147356B1 (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
US11093410B2 (en) | Cache management method, storage system and computer program product | |
CN112667528A (zh) | 一种数据预取的方法及相关设备 | |
WO2022057749A1 (zh) | 内存缺页异常的处理方法、装置、设备及存储介质 | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
WO2017005761A1 (en) | Method for managing a distributed cache | |
CN117235088B (zh) | 一种存储系统的缓存更新方法、装置、设备、介质及平台 | |
CN116931838A (zh) | 一种固态盘缓存管理方法、系统、电子设备及存储介质 | |
CN107370807A (zh) | 基于透明服务平台数据访问的服务端及其缓存优化方法 | |
CN107273310A (zh) | 一种多媒体数据的读取方法、装置、介质及设备 | |
US9851925B2 (en) | Data allocation control apparatus and data allocation control method | |
US10067678B1 (en) | Probabilistic eviction of partial aggregation results from constrained results storage | |
CN116089477A (zh) | 分布式训练方法及系统 | |
CN112231241B (zh) | 一种数据读取方法和装置、计算机可读存储介质 | |
US11899642B2 (en) | System and method using hash table with a set of frequently-accessed buckets and a set of less frequently-accessed buckets | |
US20160004441A1 (en) | Access control method for accessing data in storage and disk drive | |
US11841799B2 (en) | Graph neural network accelerator with attribute caching | |
CN112015924A (zh) | 流媒体缓存方法及其装置、计算机可存储介质 | |
CN116467353B (zh) | 一种基于lru差异化的自适应调节的缓存方法及系统 | |
CN117687936A (zh) | 提高缓存命中率的方法、装置、设备及存储介质 | |
CN111050195B (zh) | 流媒体缓存方法、装置及计算机可读存储介质 | |
CN106407242B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |