CN118034901A - 内存管理方法、装置和相关设备 - Google Patents
内存管理方法、装置和相关设备 Download PDFInfo
- Publication number
- CN118034901A CN118034901A CN202211415701.2A CN202211415701A CN118034901A CN 118034901 A CN118034901 A CN 118034901A CN 202211415701 A CN202211415701 A CN 202211415701A CN 118034901 A CN118034901 A CN 118034901A
- Authority
- CN
- China
- Prior art keywords
- memory
- performance
- performance parameter
- service
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 811
- 238000007726 management method Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 818
- 230000008569 process Effects 0.000 claims abstract description 781
- 230000005012 migration Effects 0.000 claims description 104
- 238000013508 migration Methods 0.000 claims description 104
- 230000035945 sensitivity Effects 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 13
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000000875 corresponding effect Effects 0.000 description 77
- 238000004891 communication Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000001276 controlling effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
一种内存管理方法、装置和相关设备,涉及计算机领域。该方法适用于包括第一内存和第二内存的混合内存系统,其中,第一内存的性能高于第二内存的性能。该方法包括:获取混合内存系统中运行的进程的性能参数集合,性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;根据性能参数集合确定不满足服务质量要求的第一进程,服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程;分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。有利于使第一进程满足服务质量要求,提升用户体验。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种内存管理方法、装置和相关设备。
背景技术
混合内存技术作为提高计算机整体性能的重要手段之一,近年来受到了广泛关注。混合内存系统通常包括多种性能不同的内存。
当混合内存系统中存在两个以上的进程同时运行时,往往根据业务需求为进程分配内存空间,此时,部分进程可能会同时关联不同内存的存储空间。由于不同内存介质的性能的差异会影响进程处理效率,因此,进程关联的高性能的内存的存储空间越大,该进程的服务性能也就越好。但是,进程在运行过程中并非持续使用内存中的所有数据,当被频繁访问的数据位于低性能的内存中时,高性能的内存无法充分发挥其性能优势,导致进程不能满足服务质量要求,并且影响了整个系统的性能。另一方面,对于其他进程而言,高性能的内存空间持续被部分进程占用,这就导致其他进程能够借助上述高性能进程提升读写效率的机会减少,一定程度上也影响了整个系统的处理效率和性能。因此,如何提供一种满足高性能需求的混合内存系统中内存管理方法成为亟待解决的技术问题。
发明内容
本申请提供了一种内存管理方法、装置和相关设备,以提高混合内存系统的性能。
第一方面,提供了一种内存管理方法。该方法适用于包括第一内存和第二内存的混合内存系统,第一内存的性能高于第二内存的性能。该方法包括:获取混合内存系统中运行的进程的性能参数集合,该性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;根据该性能参数集合确定不满足服务质量要求的第一进程,该服务质量要求用于指示第一进程的性能需求,这里,第一进程为所述混合内存系统中运行的进程中的一个进程;分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
当混合内存系统中同时运行两个以上进程时,获取运行的进程的性能参数集合,即获取运行的各个进程关联的性能参数。由于每个性能参数用于指示关联进程的服务性能,所以可以根据进程关联的性能参数和服务质量要求,确定出不满足服务质量要求的第一进程,再分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。由上述方法可知,本申请可根据进程关联的性能参数,确定出不满足服务质量要求的进程,进而调整该进程关联的高性能的内存的存储空间的大小。实现了一种动态内存分配方法,可以结合进程的当前服务性能动态调整其关联的高性能内存的存储空间的大小,以在充分利用高性能内存的存储空间的情况下,使混合内存系统中运行的多个进程均能够满足服务质量要求,提高多用户的用户体验。另一方面,由于可根据进程的当前服务性能动态调整进程关联的不同内存的大小,对高性能内存而言,也提升了其使用效率。
作为一种可能的实现方式,根据性能参数集合确定不满足服务质量要求的第一进程,包括:将该性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,该第一能参数小于服务等级协议(service level agreement,SLA)中规定的第一性能参数阈值;或者,将该性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,该第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,该第三性能参数所指示的服务性能和该性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;或者,相同优先级的两个进程的性能参数所指示的服务性能相同。
在本申请中,通过根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,来分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。在一些示例中,通过一次数据迁移,即可使得第一进程满足服务质量要求。在另一些示例中,需要通过两次以上的数据迁移才能使第一进程满足服务质量要求。通过数据迁移的方式,使得第一进程运行所需的总存储空间大小中,第一内存的存储空间和第二内存的存储空间的占比发生了变化,从而可以使得第一进程的性能参数发生变化。
对于每一次根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,可以采用以下方式实现:当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移的数据量,按照确定出的待迁移的数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小;或者,当第一进程关联的性能参数指示第一进程的服务性能高于服务质量要求指示的性能需求时,确定待迁移的数据量,按照确定出的待迁移的数据量将第一进程的部分数据从第一内存迁移至所述第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
作为另一种可能的实现方式,将所述第一进程的部分数据从第二内存迁移至第一内存,包括:将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,这里,第一目标内存页和非第一目标内存页均与第一进程关联。根据第二内存中第一进程相关的内存页的热度来选择需要迁移的数据,将第二内存中热度较高的内存页中的数据迁移至第一内存,有利于减小第一进程的内存访问时延,进一步提升第一进程的服务性能。
作为另一种可能的实现方式,将第一进程的部分数据从第一内存迁移至第二内存,包括:将第一内存中第二目标内存页中的数据迁移至所述第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,这里,第二目标内存页和非第二目标内存页均与第一进程关联。根据第一内存中第一进程相关的内存页的热度来选择需要迁移的数据,将第一内存中热度较低的内存页中的数据迁移至第二内存,避免对第一进程的内存访问时延的影响过大,有利于进一步提升第一进程的服务性能。
当需要通过两次以上的数据迁移才能使第一进程满足服务质量要求时,在第X次根据所第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,如果第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求,则进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。这样,可以在每次数据迁移对提升第一进程的服务性能有帮助的情况下,再进行下一次数据迁移。
作为另一种可能的实现方式,待迁移的数据量根据第一进程关联的性能参数所指示的服务性能和服务质量要求所指示的性能需求之间的差距确定。该差距越大,则待迁移的数据量越大;该差距越小,则待迁移的数据量越小。由于迁移的数据量越大,第一进程关联的第一内存的存储空间大小和第一进程关联的第二内存的存储空间大小变化越快,而第一进程的性能参数的变化也越快,这样,可以快速调整第一进程的服务性能,提高效率。
作为另一种可能的实现方式,待迁移的数据量为设定值。每次迁移固定的数据量,实现方式简单,有利于简化算法流程。
作为另一种可能的实现方式,待迁移的数据量根据第一进程的敏感度确定,第一进程的敏感度用于指示第一进程的指令执行速度随第一进程关联的第一内存的存储空间大小变化的敏感程度。例如,当第一进程的敏感度大于敏感度阈值时,表示第一进程的应用类型为敏感型应用,当第一进程的敏感度小于或者等于敏感度阈值时,表示第一进程的应用类型为非敏感型应用,敏感型应用对应的待迁移的数据量大于非敏感型应用的待迁移的数据量。
当需要增大第一进程关联的第一内存的存储空间大小,而第一内存中已经不存在空闲内存页,或者,第一内存中的空闲内存页对应的存储空间的大小小于第一进程待增大的第一内存的存储空间大小时,在将第一进程的部分数据从第二内存迁移至第一内存之前,需要先将第二进程的部分数据从第一内存迁移至第二内存,该第二进程为该混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。这里,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度。敏感度越大,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越高;反之,敏感度越小,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越低。
可选地,该方法还包括:根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移。根据内存页的热度信息进行数据迁移容易使进程出现不满足服务质量的情况,因此,在根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移之后,尤其需要根据进程的性能参数和服务质量要求来确定进程是否满足服务质量要求。
作为另一种可能的实现方式,在为第一进程分配第一内存的存储空间和第二内存的存储空间之后,可以获取混合内存系统中运行的进程的性能参数集合。根据获取到的性能参数集合确定是否存在不满足服务质量要求的进程。如果存在不满足服务质量要求的进程,则先根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移。在根据混合内存系统中内存页的热度信息,控制第一内存和第二内存之间的数据迁移之后,再次获取混合内存系统中运行的进程的性能参数集合。根据再次获取到的性能参数集合确定是否存在不满足服务质量要求的进程。对于不满足服务质量要求的第一进程,再按照前述方式分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。这样,可以先保证第一进程关联的数据中,热度较高的数据均位于第一内存中,在此基础上再调整第一进程关联的第一内存的存储空间的大小和第二内存关联的存储空间的大小,调整效率更高,有利于快速将第一进程满足服务质量要求。
第二方面,提供了一种内存管理装置。该装置适用于包括第一内存和第二内存的混合内存系统,第一内存的性能高于第二内存的性能。该装置包括:获取模块、确定模块和调整模块。其中,获取模块用于获取该混合内存系统中运行的进程的性能参数集合,该性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;确定模块用于根据性能参数集合和服务质量要求确定不满足该服务质量要求的第一进程,该服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程;调整模块用于分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
可选地,确定模块用于采用如下方式中的任一种确定第一进程:将性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,第一能参数小于SLA中规定的第一性能参数阈值;或者,将性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,第三性能参数所指示的服务性能和性能参数集合中第四性能参数所指示的服务性能之间的优劣关系,不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
可选地,调整模块用于根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,直至第一进程满足服务质量要求。
作为另一种可能的实现方式,调整模块用于当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
例如,调整模块用于将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联。
作为另一种可能的实现方式,调整模块用于当第一进程关联的性能参数指示第一进程的服务性能超过服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,调整模块用于将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,第二目标内存页和非第二目标内存页均与第一进程关联。
可选地,调整模块用于采用以下方式中的任一种确定待迁移数据量:根据第一进程关联的性能参数所指示的服务性能和服务质量要求所指示的性能需求之间的差距确定待迁移数据量;或者,将设定值作为待迁移数据量。
可选地,调整模块还用于在将第一进程的部分数据从第二内存迁移至第一内存之前,将第二进程的部分数据从第一内存迁移至第二内存,第二进程为混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。
可选地,当调整模块需要执行两次以上根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移时,调整模块,用于在第X次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,当第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求时,进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。
作为另一种可能的实现方式,性能参数集合包括至少一种性能参数,至少一种性能参数选自:指令执行速度相关参数、内存访问时延和访存带宽。其中,指令执行速度相关参数可以为每周期指令数(instruction per cycle,IPC)或者每指令周期数(cycles perinstruction,CPI)。其中,IPC和访存带宽与服务性能正相关;CPI和内存访问时延与服务性能负相关。
作为另一种可能的实现方式,第一内存包括动态随机存取存储器(DynamicRandom Access Memory,DRAM),第二内存包括存储级存储器(Storage Class Memory,SCM)。
第三方面,提供了一种内存管理系统,所述内存管理系统包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以使得所述内存管理系统实现第一方面的任一种可能的实施方式的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算机设备执行时,使得计算机设备执行第一方面的任一种可能的实施方式的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述第一方面的任一种可能的实施方式的方法。
第六方面,提供了一种芯片,包括处理器和供电电路,供电电路用于对处理器进行供电,处理器用于实现上述第一方面的任一种可能的实施方式中的方法。
第七方面,提供另一种芯片,包括:输入接口、输出接口、处理器和存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述处理器用于执行所述存储器中的至少一条程序代码,当所述至少一条程序代码被执行时,所述处理器用于执行上述第一方面的任一种可能的实施方式中的方法。
附图说明
图1是本申请提供的一种应用场景的结构示意图;
图2是本申请提供的一种内存管理方法的流程示意图;
图3是本申请提供的内存管理方法中另一种调整第一进程关联的内存的存储空间大小的流程示意图;
图4是本申请提供的一种内存管理装置的结构示意图;
图5是本申请提供的一种计算机设备的结构示意图。
具体实施方式
为了解决混合内存系统中运行的进程不满足服务质量要求的问题,本申请提出一种内存管理方法,先根据混合内存系统中运行的各个进程的性能参数集合和服务质量要求确定出不满足服务质量要求的第一进程,然后再分别调整第一进程关联不同性能的内存的存储空间的大小,以使第一进程满足服务质量要求。
图1是本申请提供的一种应用场景的结构示意图。本申请提供的内存管理方法适用于混合内存系统。该混合内存系统是指包含有混合内存的计算机系统,可以实现为如服务器或者台式计算机等。
在硬件层面,如图1所示,该混合内存系统至少包括处理器101、内存102和控制器103。
其中,处理器101是中央处理器(central processing unit,CPU),用于处理来自混合内存系统外部的数据,或者混合内存系统内部生成的数据。处理器101包括至少一个核(core)1011和缓存1012。图1中所示的处理器101包括两个核1011。缓存1012是位于处理器的核1011与内存102之间的一层高速缓存结构。示例性地,缓存1012包括第一级数据缓存(L1 data cache,L1 D-cache)(即图1中的L1-D)、第一级指令缓存(L1 instructioncache,L1 I-cache)(即图1中的L1-I)、第二级缓存(L2 cache)(即图1中的L2)以及最后一级缓存(last level cache,LLC)(也可以称为第三级缓存)。其中,第一级数据缓存、第一级指令缓存和第二级缓存均为对应的核1011的私有缓存,而LLC为多个核1011之间的共享缓存,用于降低核间通信的开销。
处理器101用于从缓存1012中获取频繁使用的数据进行处理,或者也可以直接从内存102中获取数据进行处理。缓存1012用于存储从内存102中预取到的数据,以备处理器101获取,减少处理器101从内存102中获取数据的时延。
内存102是指处理器101可交换数据的存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存102包括至少两种性能不同的存储介质。例如,内存102包括第一内存1021和第二内存1022,第一内存1021的性能高于第二内存1022的性能。在本申请实施例中,内存的性能可以从存取速度和/或访问时延等方面进行考量。除了第一内存1021和第二内存1022之外,内存102还可以包括性能与第一内存和第二内存均不同的第三内存(图未示)。本实施例不对内存的数量和类型进行限定,只要包括至少两种性能不同的内存即可。
举例来说,第一内存1021可以是DRAM,第二内存1022可以是SCM。DRAM是一种半导体存储器,与大部分RAM一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,SCM能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。其中,SCM的类型包括但不限于铁电随机存取内存(Ferroelectric random access memory,FeRAM)、磁随机存取内存(magnetoresistive random access memory,MRAM)、阻变随机存取内存(PRAM)、纳米管随机存取内存(nano random access memory,NRAM)和相变随机存取内存(phase changerandom access memory,PCM)等等。
这里,DRAM和SCM在本实施例中只是示例性的说明,可替代地,第一内存1021还可以是双列直插式存储器模块或双线存储器模块(Dual In-line Memory Module,DIMM),即由动态随机存取存储器(DRAM)组成的模块,第二内存1022还可以是固态硬盘(Solid StateDisk,SSD)等。
内存102还可以包括其他RAM,例如静态随机存取存储器(Static Random AccessMemory,SRAM)等。此外,内存102除了可以包括RAM,还可以包括只读存储器(Read OnlyMemory,ROM)。对于ROM,举例来说,可以是可编程只读存储器(Programmable Read OnlyMemory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。
为了便于描述,以下将以第一内存1021为DRAM,第二内存1022为SCM为例进行说明。
此外,可对内存102进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
在本申请实施例中,内存102可以通过计算快速链接(compute express link,CXL)接口等一致性接口与处理器101连接。
控制器103也可以被称为内存控制器,用于控制对内存102的读或写,控制器103还可以根据处理器101的数据迁移指令在各个内存之间进行数据迁移。值得说明的是,控制器103除了如图1所示为处理器101以外的独立器件外,也可以作为处理器101中一部分。
如图1所示,控制器103可以包括存储模块1031、页表映射模块1032、统计模块1033、迁移模块1034、仲裁模块1035、第一内存控制器1036和第二内存控制器1037。其中,存储模块1031用于存储事务队列、页表以及页表统计信息。事务队列包括来自处理器101的多个第一内存访问请求,该第一内存访问请求可以是读请求或者写请求。第一内存访问请求中携带有全局地址,该全局地址是基于逻辑地址转换得到的。页表映射模块1032用于查询页表,以获得第一内存访问请求中全局地址对应的介质地址;以及将第一内存访问请求中的全局地址替换为介质地址后,发送给仲裁模块1035。
在本申请实施例中,逻辑地址是指应用可见的地址,也可以称为虚拟地址;全局地址是指将不同类型的存储介质进行统一编址而得到的地址,便于操作系统为进程直接分配资源;介质地址是存储介质的物理地址,指数据要被写入的具体位置。
统计模块1033用于根据事务队列中第一内存访问请求对应的全局地址,对页表的热度进行统计,得到页表的热度信息。这里,页表的热度信息包括每个页表的热度。通常,一个页表对应多个介质地址。页表的热度可以根据页表所包含的所有介质地址的访问记录确定。例如,可以将一个页表中包含的所有介质地址的被访问次数之和,作为该页表的热度。
统计模块1033还用于将该页表统计信息发送给处理器101。处理器101根据页表的热度信息以及数据迁移策略,生成数据迁移指令,并将数据迁移指令发送给控制器103。数据迁移指令用于指示将源内存的数据迁移至目的内存。例如,将第一内存中的数据迁移至第二内存,或者,将第二内存中的数据迁移至第一内存。
该控制器103中的迁移模块1034用于将数据迁移指令转换为第二内存访问指令。并将第二内存访问指令发送给仲裁模块1035。迁移模块1034还用于根据数据迁移指令修改页表中全局地址与介质地址之间的映射关系,以使数据迁移指令相关的全局地址映射到新的介质地址。
仲裁模块1035用于将不同内存对应的内存访问指令发送给对应的内存控制器,并且控制内存访问指令的执行顺序。例如,将第一内存的读写请求发送给第一内存控制器1036,将对第二内存的读写请求发送给第二内存控制器1037。第一内存控制器1036用于控制对第一内存的读和写,第二内存控制器1037用于控制对第二内存的读和写。
可选地,该控制器103中的各个模块可以采用集成电路芯片实现,例如,可以采用现场可编程门阵列(field programmable gate array,FPGA)实现。由于该控制器103主要用于控制第一内存和第二内存中的数据的迁移,所以也可以被称为迁移装置。
该混合内存系统还可以包括硬盘等其他存储设备,本申请实施例对此不做限制。
接下来,基于图1所示的混合内存的系统架构,结合图2详细解释本申请提供的内存管理方法。图2是本申请提供的一种内存管理方法的流程示意图。该方法可以由前述混合内存系统中的处理器101(例如处理器101中的迁移后台进程)执行,也可以由控制器103执行,下文中以由处理器101执行为例进行示例性说明。如图2所示,该方法包括以下过程。
步骤201:处理器获取第一进程的内存分配信息。
第一进程的内存分配信息用于指示第一进程对应的第一内存的存储空间大小和第二内存的存储空间大小。步骤201可以在处理器获取到第一进程的内存分配请求时执行。该内存分配请求用于请求为第一进程分配内存空间。示例性地,内存分配请求可以包括请求的总存储空间大小。
在一些示例中,第一进程的内存分配信息包括为第一进程所属的用户指定的设定比例,该设定比例用于指示在进程请求的总存储空间大小中,第一内存的存储空间大小所占的比例和第二内存的存储空间大小所占的比例。例如,对于进程A,请求的总存储空间大小为XG,假设为进程A所属用户指定的设定比例的q%,则进程A对应的第一内存的的存储空间大小为X*q%G,进程A对应的第二内存的的存储空间大小为X*(1-q)%G。
在一些示例中,为所有用户指定的设定比例可以相同。在另一些示例中,为不同用户指定的设定比例可以不同。例如,优先级高的用户对应的设定比例比优先级低的用户对应的设定比例大。
在另一些示例中,默认将进程请求的总存储空间均从第一内存或第二内存中分配。
步骤202:处理器根据内存分配信息为第一进程分配内存。
该步骤202包括:处理器确定第一内存中的空闲内存页对应的存储空间大小是否大于或者等于内存分配信息所指示的第一内存的存储空间大小。如果第一内存中存在空闲内存页,且空闲内存页的存储空间大小大于或者等于该内存分配信息所指示的第一内存的存储空间大小,则直接从第一内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。如果第一内存中空闲内存页的存储空间大小小于内存分配信息所指示的第一内存的存储空间大小,甚至第一内存中不存在空闲内存页,则需要先对第一内存中已被占用的内存页中的数据进行迁移,然后再从第一内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。
这里,对需要迁移的数据的选取方式不做限制,可以根据正在运行的进程数量、正在运行的进程关联的第一内存的存储空间大小以及正在运行的进程所属用户的优先级等进行选取。在本申请实施例中,混合内存系统中除了运行有第一进程之外,还同时运行有至少一个其他进程。这里,同时运行是指由同混合内存系统中的一个CPU运行,例如,由混合内存系统的同一个CPU的同一个核运行,或者由混合内存系统的同一个CPU的不同的核运行;或者是指由混合内存系统中的不同CPU运行。
例如,可以将内存分配信息所指示的第一内存的存储空间大小按照正在运行的进程数量均分,得到每个进程需要迁移的数据量;然后按照每个进程需要迁移的数据量,将对应进程的热度较低的数据从第一内存迁移至第二内存中。又例如,可以先从正在运行的进程中,确定优先级比第一进程所属用户的优先级低的用户进程;然后,将内存分配信息所指示的第一内存的存储空间大小按照确定出的进程数量均分,得到每个优先级低的用户进程需要迁移的数据量;最后按照每个进程需要迁移的数据量,将对应进程的热度较低的数据从第一内存迁移至第二内存中。
该步骤202还包括:处理器确定第二内存中空闲内存页对应的存储空间大小是否大于或者等于内存分配信息所指示的第二内存的存储空间大小。如果第二内存中存在空闲内存页,且空闲内存页对应的存储空间大小大于内存分配信息所指示的第二内存的大小,则从第二内存的空闲内存页中划分出对应大小的存储空间分配给第一进程。
由于第二内存的容量较大,所以通常不会存在存储空间不足的情况,直接从第二内存的空闲内存页中划分出内存分配信息所指示的第二内存的存储空间大小即可。
可选地,处理器可以先为第一进程分配第一内存,再为第一进程分配第二内存;或者,处理器可以先为第一进程分配第二内存,再为第一进程分配第一内存,本申请对此不作限制。
这里,将第一内存的存储空间分配给第一进程,是指将第一进程关联的数据存储到对应的第一内存的存储空间中,并将存储数据后的存储空间的介质地址和全局地址之间的映射关系保存到页表中。将第二内存的存储空间分配给第一进程,是指将第一进程关联的数据存储到对应的第二内存的存储空间中,并将存储数据后的存储空间的介质地址和全局地址之间的映射关系保存到页表中。这样,第一进程可以基于分配到的内存正常运行。
该内存分配信息可以根据第一进程的标识(PID)与内存分配信息之间的映射关系确定。例如,处理器可以先根据第一进程的PID确定第一进程所属的用户,然后在用户的签约信息中获取该用户的内存分配信息。该签约信息可以保存在混合内存系统本地或者从其他外部服务器获取。
步骤203:获取混合内存系统中运行的进程的性能参数集合。
混合内存系统中,除了运行前述第一进程之外,还运行有至少一个其他进程。性能参数集合包括同时运行的多个进程关联的性能参数。每个性能参数用于指示关联进程的服务性能。
示例性地,性能参数集合中包括至少一种性能参数,该至少一种性能参数选自指令执行速度相关参数、内存访问时延和访存带宽。可选地,指令执行速度相关参数可以为IPC或者CPI。IPC表示每个时钟周期执行的计算机指令条数。CPI表示每条计算机指令执行所需的平均时钟周期数。
CPI越小,表示服务性能越好;反之CPI越大,表示服务性能越差。IPC越大,表示服务性能越好;反之,IPC越小,表示服务性能越差。内存访问时延越小,表示服务性能越好;反之,内存访问时延越大,表示服务性能越差。访存带宽越大,表示服务性能越好;反之,访存带宽越小,表示服务性能越差。
下面对这几种性能参数的获取方式分别进行说明。
在本申请实施例中,可以利用英特尔(Intel)的Xeon CPU的资源调配技术(resource director technology,RDT)等等周期性获取IPC。CPI为IPC的导数,可以基于IPC计算。
访存带宽可以采用以下方式获取:首先,获取单位时间内,第一进程在缓存中的未命中(miss)次数和每次未命中对应的需要访问的数据大小(例如字节数);然后,根据缓存的未命中次数和每次未命中对应的需要访问的数据大小计算第一进程的访存带宽。例如,第一进程在缓存中的未命中次数与每次未命中对应的需要访问的数据大小的乘积与单位时间的比值,即为第一进程对应的访存带宽。这里,在缓存中未命中,表示需要访问内存获得对应的数据,因此,在缓存中未命中的次数即内存访问指令的数量。获取单位时间内缓存的未命中(miss)次数可以通过性能分析工具实现,例如,Linux系统的perf等。每次未命中对应的需要访问的数据大小与计算机架构相关,例如,对于X86系统,每次未命中对应的需要访问的数据大小为64字节。
内存访问时延可以采用以下方式获取:首先,统计不同时延范围内,第一进程的内存访问指令的数量,时延范围可以采用时钟周期数量表示,例如0~a1、a1~a2……,其中,a1,a2……为整数,表示时钟周期的数量;然后根据各个时延范围内第一进程的内存访问指令的数量,确定第一进程的内存访问时延。这里,对确定第一进程的内存访问时延的计算公式不做限制。不同时延范围内,第一进程的内存访问指令的数量可以通过性能分析工具统计,例如,Linux系统的perf等。
步骤204:根据步骤203中获取到的性能参数集合,确定混合内存系统中是否存在不满足服务质量要求的进程。如果混合内存系统中不存在不满足服务质量要求的进程,则退出当前流程。如果混合内存系统中存在不满足服务质量要求的进程,则执行步骤205。
其中,服务质量要求用于指示对应进程的性能需求。
下面先对第一进程是否满足服务质量要求的判断方式进行说明,其他进程是否满足服务质量要求的判断方式与第一进程是否满足服务质量要求的判断方式相同,下文将不再重复描述。并且,下面将以第一进程不满足服务质量要求为例展开说明,当其他进程不满足服务质量要求时,可以参照针对第一进程的处理方式进行处理。
在一些示例中,服务质量要求可以包括相对质量要求。相对质量要求用于指示两个进程的服务性能之间的优劣关系需要满足优先级条件。这里,优先级条件包括:高优先级用户对应的进程的服务性能比低优先级用户对应的进程的服务性能好;相同优先级用户对应的进程的服务性能对应的服务性能相同。当第一进程的服务性能与另一进程的服务性能之间的优劣关系不满足该优先级条件时,第一进程不满足该相对质量要求。当第一进程的服务性能与另一进程的服务性能之间的优劣关系满足该优先级条件时,表示第一进程满足该相对质量要求。
这里,以第一进程和第二进程的服务性能之间的优劣关系满足优先级条件为例,进行说明,第一进程和第二进程的服务性能之间的优劣关系满足优先级条件主要包括以下三种情况:
情况1,第一进程所属用户的优先级低于第二进程所属用户的优先级,第一进程的服务性能比第二进程的服务性能差。
情况2,第一进程所属用户的优先级高于第二进程所属用户的优先级,第一进程的服务性能比第二进程的服务性能好。
情况3,第一进程所属用户的优先级与第二进程所属用户的优先级相同,第一进程的服务性能与第二进程的服务性能相同。
在本申请实施例中,可以根据第一进程关联的性能参数和第二进程关联的性能参数之间的关系,确定第一进程的服务性能和第二进程的服务性能之间的优劣关系。这里,第一进程关联的性能参数和第二进程关联的性能参数是同种性能参数。
在一种可能的实施方式中,服务质量要求将性能参数变化范围划分为多个区间。当第一进程关联的性能参数和第二进程关联的性能参数位于同一个区间时,表示第一进程的服务性能和第二进程的服务性能相同。如果性能参数越大,服务性能越好,则当第一进程关联的性能参数所在的区间中的任一值均大于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数所在的区间中的任一值均小于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能差。如果性能参数越小,服务性能越好,则当第一进程关联的性能参数所在的区间中的任一值均小于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数所在的区间中的任一值均大于第二进程关联的参数所在的区间中的任一值时,表示第一进程的服务性能比第二进程的服务性能差。
在另一种可能的实施方式中,当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于或者等于第一设定值时,表示第一进程的服务性能与第二进程的服务性能相同。该第一设定值可以设置地较小,例如,可以等于0等。如果性能参数越大,服务性能越好,则当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数大时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数与第二进程的关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数小时,表示第一进程的服务性能比第二进程的服务性能差。如果性能参数越小,服务性能越好,则当第一进程关联的性能参数与第二进程关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数小时,表示第一进程的服务性能比第二进程的服务性能好;而当第一进程关联的性能参数与第二进程的关联的性能参数之间的差值大于第一设定值、且第一进程关联的性能参数比第二进程关联的性能参数大时,表示第一进程的服务性能比第二进程的服务性能差。
在另一些示例中,服务质量要求可以包括绝对质量要求,绝对质量要求用于指示进程的服务性能需要满足SLA规定的性能参数指标。
当服务质量要求为绝对质量要求时,可以根据第一进程的性能参数和SLA规定的性能参数阈值之间的关系,确定第一进程的服务性能是否满足服务质量要求。
当第一进程的性能参数大于或者等于SLA规定的第一性能参数阈值时,表示第一进程满足服务质量要求。当第一进程的性能参数小于SLA规定的第一性能参数阈值时,表示第一进程不满足服务质量要求。
当第一进程的性能参数小于或者等于SLA规定的第二性能参数阈值时,表示第一进程满足服务质量要求。当第一进程的性能参数大于SLA规定的第二性能参数阈值时,表示第一进程不满足服务质量要求。
这里第一性能参数阈值可以是性能参数上限,例如,内存访问时延的上限值或者IPC上限值。第二性能参数阈值可以是性能参数下限,例如,访存带宽下限值或者CPI下限值。
例如,当第一进程的内存访问时延大于SLA规定的内存访问时延上限时,确定第一进程不满足服务质量要求;而当第一进程的内存访问时延小于或者等于SLA规定的内存访问时延上限时,确定第一进程满足服务质量要求。
又例如,当第一进程的访存带宽小于SLA规定的访存带宽下限时,确定第一进程不满足服务质量要求;而当第一进程的访存带宽大于或者等于SLA规定的访存带宽下限时,确定第一进程满足服务质量要求。
再例如,当第一进程的IPC小于SLA规定的IPC下限时,确定第一进程不满足服务质量要求;而当第一进程的IPC大于或者等于SLA规定的IPC下限时,确定第一进程满足服务质量要求。
在一些示例中,不同的用户优先级对应的性能参数指标的取值不同。例如,优先级较高的用户的内存访问时延上限小于优先级较低的用户的内存访问时延上限。又例如,优先级较高的用户的访存带宽下限大于优先级较低的用户的访存带宽下限。再例如,优先级较高的用户的IPC下限大于优先级较低的用户的IPC下限。
在本申请实施例中,用户优先级可以是预先设置的。示例性地,用户优先级可以从用户签约信息中获取,用户签约信息可以存储在本地或者存储在其他服务器中。
在又一些示例中,服务质量要求包括前述相对质量要求和绝对质量要求。这种情况下,第一进程的服务性能与其他服务性能之间的优劣关系满足优先级条件,且第一进程的性能参数满足SLA规定的性能参数阈值时,表示第一进程满足服务质量要求。或者,第一进程性能参数满足SLA规定的性能参数阈值时,表示第一进程满足服务质量要求。
步骤205:处理器获取第一内存中内存页的热度信息和第二内存中内存页的热度信息。
第一内存中内存页的热度信息用于指示第一内存所包含的每个内存页中数据的访问热度。第二内存中内存页的热度信息用于指示第二内存所包含的每个内存页中数据的访问热度。下文将内存页中数据的访问热度称为内存页的热度。
内存页的热度表示该内存页在未来一段时间内被频繁访问的可能性。内存页的热度越高,则被频繁访问的可能性越大。反之,内存页的热度越低,则被频繁访问的可能性越小。可以使用内存页的历史访问信息来预测该内存页在未来被频繁访问的可能性,即衡量该内存页的热度。
在一些示例中,历史访问信息包括内存页的最近一次访问时间和在一个统计周期内存页的访问次数中的至少一种。其中,最近一次访问时间是指截止到当前时间为止,内存页的最后一次被访问的时间,或者说预设时间段内的最后一次被访问时间。一个统计周期内内存页的访问次数等于该统计周期内,内存页中各个全局地址的访问次数之和。统计周期的长度可以根据实际需要设置,本申请实施例对此不做限制。
步骤206:根据第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移。
其中,在第一内存和第二内存之间进行数据迁移,包括将第一内存中冷内存页中的数据迁移至第二内存中,或者,将第二内存中热内存页中的数据迁移至第一内存中。
在一些示例中,可以采用最近最少使用(Least recently used,LRU)算法或者最不经常使用(least frequently used,LFU)算法等将第一内存中冷内存页中的数据迁移至第二内存中。其中,LRU算法是指优先淘汰或者置换出第一内存中最长时间未被使用的内存页,即预设一定的时长,将第一内存中最近在预设时长内未被访问的内存页作为冷内存页,并将第一内存中冷内存页中的数据迁移至第二内存中。LFU算法指的是淘汰或者置换第一内存中一定时期内(即前述统计周期)访问次数最少的内存页,即预设一定的时长和访问次数,将第一内存中最近在预设时长内访问次数未超过第一预设访问次数的内存页作为冷内存页,并将第一内存中冷内存页中的数据迁移至第二内存中。
类似的,可以将第二内存中最近在预设时长内访问次数超过第二预设访问次数的内存页作为热内存页,并将第二内存中热内存页中的数据迁移至第一内存中。
实际应用中,不同进程对应的第一预设访问次数可以相同或者不同,不同进程对应的第二预设访问次数可以相同或者不同。同一进程对应的第一预设访问次数小于第二预设访问次数。
需要说明的是,本申请对内存页的热度的统计方式不做限制。
当在第一内存和第二内存之间进行数据迁移时,不更改该数据的全局地址,而是将待迁移数据从源端的内存传输到目的端的内存后,将该数据的全局地址与新的介质地址之间建立映射关系,并将该映射关系保存在页表中。
可选地,当第一进程不满足服务质量要求时,可以仅针对第一进程的数据,根据第一进程关联的第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移。对于满足服务质量要求的进程的数据,不在第一内存和第二内存之间进行数据迁移,以避免大量数据迁移占用系统资源。
步骤207:获取混合内存系统中运行的进程的性能参数集合。
在步骤206之后,各个进程关联的内存页中热度较高的内存页被迁移至第一内存中,使得各个进程关联的性能参数发生变化,所以需要再次获取混合内存系统中运行的进程的性能参数集合,以便判断各个进程是否满足服务质量要求。
步骤208:根据步骤207中获取到的性能参数集合,确定混合内存系统中第一进程不满足服务质量要求。
步骤208的实现方式参见步骤204。
需要说明的是,为了便于描述,步骤204和步骤208中均以第一进程为不满足服务质量要求的进程为例进行说明。实际应用中,不同次确定出来的不满足服务质量要求的进程可以不是同一进程。每个进程都按照第一进程相同的方式进行调整,在此省略详细描述。
步骤209:比较第一进程关联的性能参数和服务质量要求。
当第一进程的性能参数指示第一进程的服务性能低于服务质量要求所指示的性能需求时,执行步骤210a~213a;当第一进程的性能参数指示第一进程的服务性能高于服务质量要求所指示的性能需求时,执行步骤210b~212b(参见图3)。当第一进程的性能参数指示第一进程的服务性能等于服务质量要求所指示的性能需求时,退出当前流程。
其中,第一进程的性能参数指示第一进程的服务性能低于服务质量要求所指示的性能需求和第一进程的性能参数指示第一进程的服务性能高于服务质量要求所指示的性能需求均表示第一进程的服务性能不满足服务质量要求。
步骤210a:确定第一进程对应的待迁移的数据量的大小。
在一些示例中,待迁移的数据量为设定值。该设定值为一个内存页的存储空间大小的整数倍。每次迁移固定的数据量,实现方式简单,有利于简化算法流程。
在另一些示例中,待迁移的数据量可以根据第一进程的性能参数和服务质量要求所指示的性能需求之间的差距确定。该差距越大,则待迁移的数据量越大;该差距越小,则待迁移的数据量越小。由于迁移的数据量越大,第一进程关联的第一内存的存储空间大小和第一进程关联的第二内存的存储空间大小变化越快,而第一进程的性能参数的变化也越快,这样,可以快速调整第一进程的服务性能,提高效率。
可选地,当服务质量要求包括绝对质量要求时,待迁移的数据量可以根据第一进程关联的性能参数与第一进程所属用户对应的性能参数指标之间的差值确定。例如,第一进程关联的性能参数与第一进程所属用户对应的性能参数指标之间的差值越大,则待迁移的数据量越大。
差值与待迁移的数据量之间的关系可以预先保存。该关系可以包括多个差值的取值区间以及每个取值区间对应的数据量。不同的差值的取值范围对应不同的迁移量。
例如,待迁移的数据量可以根据第一进程关联的访存时延与第一进程所属的用户对应的访存时延上限之间的差值,或者,根据第一进程的访存带宽与第一进程所属的用户对应的访存带宽下限之间的差值确定,或者根据第一进程的IPC与第一进程所属的用户对应的IPC下限之间的差值确定。第一进程的访存时延与第一进程所属的用户对应的访存时延上限之间的差值或者第一进程的访存带宽与第一进程所属的用户对应的访存带宽下限之间的差值,或者第一进程的IPC与第一进程所属的用户对应的IPC下限之间的差值越大,则对应的迁移的数据量越大。
可选地,当服务质量要求包括相对质量要求时,待迁移的数据量可以根据第一进程关联的性能参数与目标优先级下的所有进程的性能参数的平均值之间的差值确定。目标优先级为第一进程所属用户对应的优先级。例如,第一进程关联的性能参数与平均值之间的差值越大,则待迁移的数据量越大。
在又一些示例中,待迁移的数据量可以根据第一进程对应的应用类型确定。这里,应用类型包括敏感型应用和非敏感型应用。敏感型应用对应的迁移的数据量大于非敏感型应用对应的迁移的数据量。且敏感型应用的敏感度越高,则对应的迁移的数据量越大。
当数据的迁移量根据第一进程对应的应用类型确定时,该方法还可以包括:根据任一次数据迁移(可以是根据服务质量要求和性能参数进行的数据迁移,也可以是根据内存页的热度进行的数据迁移)的数据迁移量和数据迁移前后第一进程的IPC变化量,确定第一进程的应用类型。其中,数据迁移前后第一进程的IPC变化量等于数据迁移后第一进程的IPC减去数据迁移前第一进程的IPC。
根据任一次数据迁移的数据迁移量和数据迁移前后第一进程的IPC变化量,可以包括:首先,根据任一次数据迁移的数据迁移量和数据迁移前后第一进程的IPC变化量,计算第一进程的敏感度;根据第一进程的敏感度和敏感度阈值,确定第一进程的应用类型。这里,敏感度表示进程的指令执行速度随进程关联的第一内存的存储空间大小变化的敏感程度。当敏感度大于或等于敏感度阈值时,确定第一进程为敏感型应用。当敏感度小于敏感度阈值时,确定第一进程为非敏感型应用。敏感阈值可以根据实际需要设置。
示例性地,敏感度可以采用以下方式计算:第一步、将数据迁移的迁移量除以单位迁移量,得到比值,单位迁移量为内存页的存储空间大小的整数倍,可以根据实际需要设置;第二步、采用数据迁移前后第一进程的IPC变化量除以该比值,得到敏感度,即单位迁移量对应的IPC变化量。
由于进程关联的第一内存的存储空间大小的变化,会使承载该进程的CPU核的内存访问时延变化,所以单位迁移量对应的IPC变化量可以间接反应时延变化对IPC变化的影响程度。
步骤211a:处理器确定第一内存中空闲内存页对应的存储空间大小是否大于或者等于待迁移的数据量的大小。如果第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小,则执行步骤212a~213a;如果第一内存中空闲内存页对应的存储空间大小大于或者等于待迁移的数据量的大小,则直接执行步骤213a。
步骤212a:处理器指示将第二进程的部分数据从第一内存迁移至第二内存。
如果第一内存中空闲内存页不足,表示第一内存中的内存页被其他进程占用。因此,需要先将被其他进程占用的内存页中的数据的一部分迁移至第二内存中,使得第一内存中空闲内存页对应的存储空间增大,直至第一内存中空闲内存页对应的存储空间大于或者等于待迁移的数据量的大小。
下面对在第一内存中的空闲内存页不足的情况下,如何确定第二进程的方式进行举例说明。第二进程可以根据进程所属用户的优先级、进程的敏感度以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系中的至少一种因素来选择。
根据单一因素确定第二进程的方式包括以下三种:
第一种、根据进程所属用户的优先级来确定第二进程。例如,将所属用户的优先级低于第一进程所属用户的优先级的进程作为第二进程,即第二进程所属用户的优先级低于第一进程所属用户的优先级。
第二种、根据进程的敏感度来确定第二进程。例如,将敏感度小于敏感度阈值的进程作为第二进程,即第二进程的敏感度小于敏感度阈值。这里,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度。敏感度越大,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越高;反之,敏感度越小,第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度越低。
第三种、根据进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系来确定第二进程。例如,将性能参数所指示的服务性能高于服务质量要求所指示的性能需求的进程,作为第二进程。即第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求的进程。
在一些示例中,当第一进程不满足绝对质量要求时,优先选择服务性能高于服务质量要求所指示的性能需求的进程作为第二进程。
在另一些示例中,当第一进程不满足相对质量要求时,优先选择目标优先级下,服务性能高于服务质量要求所指示的性能需求的进程作为第二进程。即对于与服务性能正相关的性能参数,优先选择性能参数高于目标优先级下各个进程的性能参数平均值的其他进程;而对于与服务性能负相关的性能参数,优先选择性能参数低于目标优先级下各个进程的性能参数平均值的其他进程。
根据至少两种因素确定第二进程的情况包括以下几种:
当根据进程所属用户的优先级和进程的敏感度确定第二进程时,可以优先选择优先级比第一进程所属用户的优先级低的用户的进程且敏感度小于敏感度阈值的进程作为第二进程;当不存在优先级比第一进程所属用户的优先级低的用户的进程且敏感度小于敏感度阈值的进程时,选择优先级比第一进程所属用户的优先级低的用户的进程但敏感度大于或者等于敏感度阈值的进程作为第二进程。这样,可以优先保证高优先级用户的进程的服务质量,并且尽量降低对低优先级用户的服务质量的影响。
当根据进程的敏感度、以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系确定第二进程时,优先选择服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程作为第二进程;如果不存在选择服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程,则选择非敏感型应用对应的进程作为第二进程。对于非敏感型应用对应的进程而言,虽然内存访问时延增大了,但是其指令执行速度变化量较小,因此,将这种进程作为第二进程,将第二进程关联的第一内存的存储空间减小,对其服务性能影响较小。这样,可以尽量降低对第二进程的服务质量的影响。
当根据进程所属用户的优先级、进程的敏感度以及进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系确定第二进程时,优先考虑进程所属用户的优先级,然后考虑进程的敏感度,最后考虑进程的性能参数所指示的服务性能与服务质量要求所指示的性能需求之间的关系。例如,可以优先选择优先级比第一进程所属用户的优先级低的进程中,服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程作为第二进程。如果优先级比第一进程所属用户的优先级低的进程中,不存在服务性能高于服务质量要求所指示的性能需求且非敏感型应用对应的进程,则选择优先级比第一进程所属用户的优先级低的进程中,非敏感型应用对应的进程作为第二进程。如果优先级比第一进程所属用户的优先级低的进程中,不存在非敏感型应用对应的进程,则选择优先级比第一进程所属用户的优先级低的进程中,服务性能高于服务质量要求所指示的性能需求的进程作为第二进程。如果不存在比第一进程所属用户的优先级低的进程,则从优先级与第一进程所属用户的优先级相同的用户的进程中选择第二进程。选择方式与从优先级比第一进程所属用户的优先级低的用户的进程中选择第二进程的方式相同。这样,可以优先保证高优先级用户的进程的服务质量,并且尽量降低对低优先级用户的服务质量的影响。
在步骤212a中,处理器向内存控制器发送数据迁移指令,该数据迁移指令用于指示将第二进程关联的第一内存的存储空间中的数据迁移至第二内存中。
步骤213a:处理器按照步骤210a中确定出的待迁移数据量,指示将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
实现时,处理器可以向内存控制器发送第一数据迁移指令,该第一数据迁移指令用于指示将第一进程关联的第一内存的存储空间中的数据迁移至第二内存中。这样即可减小第一进程关联的第一内存的存储空间的大小并增大第一进程关联的第二内存的存储空间的大小。
示例性地,可以将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联,即非第一目标内存页为第二内存中除了第一目标内存页之外的属于第一进程的内存页。第一目标内存页对应的数据量等于前述待迁移数据量。通过将第二内存中第一进程关联的热度较高的内存页中的数据迁移至第一内存中,可以增大第一进程关联的第一内存的存储空间的大小并减小第一进程关联的第二内存的存储空间的大小,从而提高第一进程的服务性能。
实际应用中,可以将第二内存中第一进程关联的内存页按照热度从高到低的顺序进行排序,将前N个内存页作为第一目标内存页(即热内存页)。其中,N为设定值。
对于每个进程而言,分配到的内存空间的全局地址是一定的,因此,进程标识(process identification,PID)与全局地址之间存在映射关系,根据进程标识与全局地址之间的映射关系可以确定第一进程对应的全局地址,根据第一进程对应的全局地址所对应的内存类型以及热度信息,即可实现将第二内存中第一进程关联的内存页按照热度从高到低的顺序进行排序。
步骤210b:处理器确定第一进程对应的待迁移的数据量的大小。
该步骤210b的实现方式可以参见步骤210a,在此省略详细描述。
步骤211b:处理器确定第二内存中空闲内存页对应的存储空间大小是否大于或者等于待迁移的数据量的大小。
如果第二内存中空闲内存页对应的存储空间大小大于或者等于待迁移的数据量的大小,直接执行步骤212b。
如果第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小,则表示混合内存系统的容量可能不足,可以退出当前流程。可选地,当第一内存中空闲内存页对应的存储空间大小小于待迁移的数据量的大小时,可以输出提示信息,该提示信息用于提醒用户混合内存系统的容量可能不足。
步骤212b:处理器按照步骤210b中确定出的待迁移数据量,指示将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,可以将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,这里,第二目标内存页和非第二目标内存页均与第一进程关联,非第二目标内存页为第一内存中除了第二目标内存页之外的属于第一进程的内存页。第二目标内存页对应的数据量等于前述待迁移数据量。通过将第一内存中第一进程关联的热度较低的内存页中的数据迁移至第二内存中,可以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小,从而降低第一进程的服务性能。
实际应用中,可以将第一内存中第一进程关联的内存页按照热度从低到高的顺序进行排序,将前M个内存页作为第二目标内存页(即冷内存页)。其中,M为设定值。
实现时,处理器可以向内存控制器发送第二数据迁移指令。其中,该第二数据迁移指令用于指示将第一进程关联的第二内存的存储空间中的数据迁移至第一内存中,这样即可增大第一进程关联的第一内存的存储空间的大小并减小第一进程关联的第二内存的存储空间的大小。
当第一进程关联的第一内存的存储空间减小时,第一进程释放的这部分第一内存的存储空间可以与至少一个其他进程关联;或者,第一进程释放的这部分第一内存的存储空间暂时处于空闲状态,其他进程关联的第一内存的存储空间不发生变化。
通过该步骤209~步骤213a或者步骤209~步骤212b可以通过根据第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移,来实现分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。在根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小发生变化。由于第一进程关联的第一内存的存储空间越大,第一内存中能够存储的第一进程的被频繁访问的数据的数据量越大,这样,第一进程能够充分利用高性能的第一内存提高处理效率,从而提供更好的服务质量。
其中,第一进程关联的第一内存的存储空间的大小,是指第一进程的数据在第一内存中占用的存储空间的大小;第一进程关联的第二内存的存储空间的大小,是指第一进程的数据在第二内存中占用的存储空间的大小。
在一些示例中,通过根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行一次数据迁移,即可使第一进程满足服务质量要求,然后退出当前流程。在另一些示例中,在第一次根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移后,第一进程可能仍然不满足服务质量要求,需要根据数据迁移后第一进程关联的性能参数和服务质量要求,再次在第一内存和第二内存之间进行数据迁移……直至第一进程满足服务质量要求。
在一种可能的实施方中,在每次根据第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移之后,根据数据迁移后的第一进程关联的性能参数,确定第一进程是否满足服务质量要求。如果数据迁移后,第一进程不满足服务质量要求,且第一进程关联的性能参数指示的服务性能比本次数据迁移前第一进程关联的性能参数对应的服务性能更加接近服务质量要求指示的性能需求时,再次根据第一进程关联的性能参数和服务质量要求在第一内存和第二内存之间进行数据迁移之后。而如果数据迁移后,第一进程不满足服务质量要求,且第一进程关联的性能参数指示的服务性能与本次数据前一次第一进程关联的性能参数指示的服务性能相比,与服务质量要求所指示的性能需求之间的差距增大或者不变时,退出当前流程。
其中,数据迁移后第一进程关联的性能参数对应的服务性能比数据迁移前第一进程的性能参数对应的服务性能更加接近性能需求,表示调整第一进程关联的第一内存的存储空间的大小的方式是有效的,但是仍然未能达到服务质量要求,因此,可以按照相同的方式继续调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。而数据迁移后第一进程关联的性能参数对应的服务性能与数据迁移前第一进程的性能参数对应的服务性能相比,与服务质量要求指示的性能需求之间的差距增大或者不变,表示继续调整第一进程关联的第一内存的存储空间的大小对服务质量的提升没有显著的效果,则无需执行数据迁移,以节省存储系统的控制资源。
在本申请实施例中,当混合内存系统中同时运行两个以上进程时,获取运行的进程的性能参数集合,即获取运行的各个进程关联的性能参数。由于每个性能参数用于指示关联进程的服务性能,所以可以根据进程关联的性能参数和服务质量要求,确定出不满足服务质量要求的第一进程,再分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。由上述方法可知,本申请可根据进程关联的性能参数,确定出不满足服务质量要求的进程,进而调整该进程关联的高性能的内存的存储空间的大小。实现了一种动态内存分配方法,可以结合进程的当前服务性能动态调整其关联的高性能内存的存储空间的大小,以在充分利用高性能内存的存储空间的情况下,使混合内存系统中运行的多个进程均能够满足服务质量要求,提高多用户的用户体验。另一方面,由于可根据进程的当前服务性能动态调整进程关联的不同内存的大小,对高性能内存而言,也提升了其使用效率。
在图2所示实施例中,在确定第一进程不满足服务质量要求时,先根据第一内存中内存页的热度信息和第二内存中内存页的热度信息,在第一内存和第二内存之间进行数据迁移(参见上述步骤205-步骤206),这样,可以先保证第一进程关联的数据中,热度较高的数据均位于第一内存中,在此基础上再调整第一进程关联的第一内存的存储空间的大小和第二内存关联的存储空间的大小,调整效率更高,有利于快速将第一进程满足服务质量要求。可替代地,在其他实施例中,也可以不执行205-208,而直接执行步骤209及后续步骤。
图4是本申请提供的一种内存管理装置的结构示意图。该装置适用于前述混合内存系统。如图4所示,该装置300包括:获取模块301、确定模块302和调整模块303。其中,获取模块301用于获取混合内存系统中运行的进程的性能参数集合,性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能。确定模块302用于根据性能参数集合确定不满足服务质量要求的第一进程,服务质量要求用于指示第一进程的性能需求,第一进程为混合内存系统中运行的进程中的一个进程。调整模块303用于分别调整第一进程关联的第一内存的存储空间的大小和第一进程关联的第二内存的存储空间的大小。
可选地,确定模块302用于采用如下方式中的任一种确定第一进程:将性能参数集合中的第一性能参数所关联的进程确定为第一进程,其中,第一能参数小于SLA中规定的第一性能参数阈值;或者,将性能参数集合中的第二性能参数所关联的进程确定为第一进程,其中,第二性能参数大于SLA中规定的第二性能参数阈值;或者,将性能参数集合中的第三性能参数所关联的进程确定为第一进程,其中,第三性能参数所指示的服务性能和性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,该优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,第一优先级高于第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
可选地,调整模块303用于根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,直至第一进程满足服务质量要求。
在一些示例中,调整模块303用于当第一进程关联的性能参数指示第一进程的服务性能低于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第二内存迁移至第一内存,以增大第一进程关联的第一内存的存储空间的大小,并减小第一进程关联的第二内存的存储空间的大小。
例如,调整模块303用于将第二内存中第一目标内存页中的数据迁移至第一内存中,第一目标内存页的热度高于第二内存中非第一目标内存页的热度,第一目标内存页和非第一目标内存页均与第一进程关联。
在另一些示例中,调整模块303用于当第一进程关联的性能参数指示第一进程的服务性能高于服务质量要求指示的性能需求时,确定待迁移数据量,按照待迁移数据量将第一进程的部分数据从第一内存迁移至第二内存,以减小第一进程关联的第一内存的存储空间的大小,并增大第一进程关联的第二内存的存储空间的大小。
例如,调整模块303用于将第一内存中第二目标内存页中的数据迁移至第二内存中,第二目标内存页的热度低于第一内存中非第二目标内存页的热度,第二目标内存页和非第二目标内存页均与第一进程关联。
可选地,调整模块303用于采用以下方式中的任一种确定待迁移数据量:根据第一进程关联的性能参数所指示的服务性能和服务质量要求所指示的性能需求之间的差距确定待迁移数据量;或者,将设定值作为待迁移数据量。
可选地,调整模块303还用于在将第一进程的部分数据从第二内存迁移至第一内存之前,将第二进程的部分数据从第一内存迁移至第二内存,第二进程为混合内存系统中运行的进程中的另一个进程,且第二进程满足以下条件中的至少一项:第二进程的优先级低于第一进程的优先级;第二进程的敏感度小于敏感度阈值,第二进程的敏感度用于指示第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;第二进程的性能参数所指示的服务性能高于服务质量要求所指示的性能需求。
可选地,当调整模块303需要执行两次以上根据第一进程关联的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移时,调整模块303用于在第X次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移之后,当第一进程的性能参数指示的服务性能比第X次数据迁移之前更接近服务质量要求所指示的性能需求时,进行第X+1次根据第一进程的性能参数和服务质量要求,在第一内存和第二内存之间进行数据迁移,其中,X为正整数。
需要说明的是:上述实施例提供的内存管理装置进行内存管理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存管理装置与内存管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是个人计算机,手机,或者通信设备等)或处理器(processor)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例中还提供了一种内存管理系统,该内存管理系统可以为计算机设备。图5示例性的提供了计算机设备400的一种可能的架构图。
如图5所示,计算机设备400包括存储器401、处理器402、通信接口403和总线404。其中,存储器401、处理器402和通信接口403通过总线404实现彼此之间的通信连接。
存储器401可以是ROM,静态存储设备,动态存储设备或者RAM。存储器401可以存储程序,当存储器401中存储的程序被处理器402执行时,处理器402和通信接口403用于执行设备访问方法。存储器401还可以存储数据集合,例如:存储器401中的一部分存储资源被划分成一个数据存储模块,用于存储IO请求对应的数据等。
处理器402可以采用通用的CPU,微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路。
处理器402还可以是一种集成电路芯片,具有信号处理能力。在实现过程中,本申请的信号处理装置的部分或全部功能可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402还可以是通用处理器、数字信号处理器(digitalsignal drocessing,DSP)、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请上述实施例中的公开的各方法。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成本申请实施例的内存管理装置的部分功能。
通信接口403使用例如但不限于收发器一类的收发模块,来实现计算机设备400与其他设备或通信网络之间的通信。
总线404可包括在计算机设备400各个部件(例如,存储器401、处理器402、通信接口403)之间传送信息的通路。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
本申请实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中存储的计算机指令被计算机设备执行时,使得计算机设备执行上述所提供的内存管理方法。
本申请实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得计算机设备执行上述所提供的内存管理方法。
本申请实施例中,还提供了一种芯片,该芯片包括处理器和供电电路,供电电路用于对处理器进行供电,处理器用于执行图2所示的内存管理方法。
在一些示例中,该芯片还包括存储器,存储器中存储有计算机指令,处理器用于执行存储器中存储的计算机指令,以实现图2所示的内存管理方法。这里存储器至少包括前述第一内存和第二内存。
在另一些示例中,该芯片还可以包括控制器(例如图1中的控制器103),该控制器用于在处理器的控制下,在第一内存和第二内存之间进行数据迁移。
在又一些示例中,该芯片中的处理器既用于实现图2所示的内存管理方法,又用于控制第一内存和第二内存之间的数据迁移,即将图1中处理器101和控制器103集成在一起,采用FPGA或者其他可编程逻辑器件实现。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开专利申请说明书以及权利要求书中使用的“第一”、“第二”、“第三”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”等类似的词语意指出现在“包括”前面的元件或者物件涵盖出现在“包括”后面列举的元件或者物件及其等同,并不排除其他元件或者物件。本申请实施例中所述的“数据”为广义的数据,既可以是应用程序的指令代码,也可以是应用程序运行所使用的数据。本申请实施例所涉及的多个,是指两个或者更多个。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种内存管理方法,其特征在于,所述方法适用于混合内存系统,所述混合内存系统包括第一内存和第二内存,所述第一内存的性能高于所述第二内存的性能;所述方法包括:
获取所述混合内存系统中运行的进程的性能参数集合,所述性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;
根据所述性能参数集合确定不满足服务质量要求的第一进程,所述服务质量要求用于指示所述第一进程的性能需求,所述第一进程为所述混合内存系统中运行的进程中的一个进程;
分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小。
2.根据权利要求1所述的方法,其特征在于,所述根据所述性能参数集合确定不满足服务质量要求的第一进程,包括:
将所述性能参数集合中的第一性能参数所关联的进程确定为所述第一进程,其中,所述第一性能参数小于服务等级协议SLA中规定的第一性能参数阈值;或者,
将所述性能参数集合中的第二性能参数所关联的进程确定为所述第一进程,其中,所述第二性能参数大于服务等级协议SLA中规定的第二性能参数阈值;或者,
将所述性能参数集合中的第三性能参数所关联的进程确定为所述第一进程,其中,所述第三性能参数所指示的服务性能和所述性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,所述优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,所述第一优先级高于所述第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
3.根据权利要求1或2所述的方法,其特征在于,所述分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小,包括:
根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,直至所述第一进程满足所述服务质量要求。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,包括:
当所述第一进程关联的性能参数指示所述第一进程的服务性能低于所述服务质量要求指示的性能需求时,确定待迁移数据量,按照所述待迁移数据量将所述第一进程的部分数据从所述第二内存迁移至所述第一内存,以增大所述第一进程关联的所述第一内存的存储空间的大小,并减小所述第一进程关联的所述第二内存的存储空间的大小;或者,
当所述第一进程关联的性能参数指示所述第一进程的服务性能高于所述服务质量要求指示的性能需求时,确定待迁移数据量,按照所述待迁移数据量将所述第一进程的部分数据从所述第一内存迁移至所述第二内存,以减小所述第一进程关联的第一内存的存储空间的大小,并增大所述第一进程关联的第二内存的存储空间的大小。
5.根据权利要求4所述的方法,其特征在于,所述确定待迁移数据量,包括:
根据所述第一进程关联的性能参数所指示的服务性能和所述服务质量要求所指示的性能需求之间的差距确定所述待迁移数据量;或者,
将设定值作为所述待迁移数据量;或者,
根据所述第一进程的敏感度确定所述待迁移数据量,所述第一进程的敏感度用于指示所述第一进程的指令执行速度随第一进程关联的第一内存的存储空间大小变化的敏感程度。
6.根据权利要求4或5所述的方法,其特征在于,所述根据所述第一进程关联的性能参数和所述服务质量要求,在所述第一内存和所述第二内存之间进行数据迁移,还包括:
在所述按照所述待迁移数据量将所述第一进程的部分数据从所述第二内存迁移至所述第一内存之前,将第二进程的部分数据从所述第一内存迁移至所述第二内存,所述第二进程为所述混合内存系统中运行的进程中的另一个进程,且所述第二进程满足以下条件中的至少一项:
所述第二进程的优先级低于所述第一进程的优先级;
所述第二进程的敏感度小于敏感度阈值,所述第二进程的敏感度用于指示所述第二进程的指令执行速度随第二进程关联的第一内存的存储空间大小变化的敏感程度;
所述第二进程的性能参数所指示的服务性能高于所述服务质量要求所指示的性能需求。
7.一种内存管理装置,其特征在于,所述装置适用于混合内存系统,所述混合内存系统包括第一内存和第二内存,所述第一内存的性能高于所述第二内存的性能;
所述装置包括:
获取模块,用于获取所述混合内存系统中运行的进程的性能参数集合,所述性能参数集合包括两个以上进程关联的性能参数,每个性能参数用于指示关联进程的服务性能;
确定模块,用于根据所述性能参数集合确定不满足服务质量要求的第一进程,所述服务质量要求用于指示所述第一进程的性能需求,所述第一进程为所述混合内存系统中运行的进程中的一个进程;
调整模块,用于分别调整所述第一进程关联的所述第一内存的存储空间的大小和所述第一进程关联的所述第二内存的存储空间的大小。
8.根据权利要求7所述的装置,其特征在于,所述确定模块用于采用如下方式中的任一种确定所述第一进程:
将所述性能参数集合中的第一性能参数所关联的进程确定为所述第一进程,其中,所述第一性能参数小于服务等级协议SLA中规定的第一性能参数阈值;或者,
将所述性能参数集合中的第二性能参数所关联的进程确定为所述第一进程,其中,所述第二性能参数大于服务等级协议SLA中规定的第二性能参数阈值;或者,
将所述性能参数集合中的第三性能参数所关联的进程确定为所述第一进程,其中,所述第三性能参数所指示的服务性能和所述性能参数集合中第四性能参数所指示的服务性能之间的优劣关系不满足优先级条件,所述优先级条件包括:第一优先级的进程的性能参数所指示的服务性能优于第二优先级的进程的性能参数所指示的服务性能,其中,所述第一优先级高于所述第二优先级;以及相同优先级的两个进程的性能参数所指示的服务性能相同。
9.一种芯片,其特征在于,所述芯片包括处理器和供电电路,所述供电电路用于对所述处理器进行供电,所述处理器用于实现如权利要求1至6任一项所述的方法。
10.一种内存管理系统,其特征在于,包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以实现如权利要求1至6任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211415701.2A CN118034901A (zh) | 2022-11-11 | 2022-11-11 | 内存管理方法、装置和相关设备 |
PCT/CN2023/104186 WO2024098795A1 (zh) | 2022-11-11 | 2023-06-29 | 内存管理方法、装置和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211415701.2A CN118034901A (zh) | 2022-11-11 | 2022-11-11 | 内存管理方法、装置和相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118034901A true CN118034901A (zh) | 2024-05-14 |
Family
ID=90995541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211415701.2A Pending CN118034901A (zh) | 2022-11-11 | 2022-11-11 | 内存管理方法、装置和相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118034901A (zh) |
WO (1) | WO2024098795A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055407B (zh) * | 2016-05-25 | 2020-02-07 | 努比亚技术有限公司 | 进程资源调整装置及方法 |
CN111198759B (zh) * | 2018-11-16 | 2024-04-19 | 深圳市优必选科技有限公司 | 一种内存优化方法、系统、终端设备及可读存储介质 |
CN114519013A (zh) * | 2020-10-30 | 2022-05-20 | 北京金山云网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114816216A (zh) * | 2021-01-19 | 2022-07-29 | 华为技术有限公司 | 一种容量调整的方法以及相关装置 |
CN113505084B (zh) * | 2021-06-24 | 2023-09-12 | 中国科学院计算技术研究所 | 基于访存和性能建模的内存资源动态调控方法及系统 |
-
2022
- 2022-11-11 CN CN202211415701.2A patent/CN118034901A/zh active Pending
-
2023
- 2023-06-29 WO PCT/CN2023/104186 patent/WO2024098795A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024098795A1 (zh) | 2024-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11966581B2 (en) | Data management scheme in virtualized hyperscale environments | |
US11048442B2 (en) | Scalable in-memory object storage system using hybrid memory devices | |
US9513692B2 (en) | Heterogenous memory access | |
US9354989B1 (en) | Region based admission/eviction control in hybrid aggregates | |
US8996844B1 (en) | Apparatus and method for accessing non-overlapping portions of memory according to respective orders of dimensions | |
US9772958B2 (en) | Methods and apparatus to control generation of memory access requests | |
EP2972915A1 (en) | Systems and methods for memory system management based on thermal information of a memory system | |
US8572321B2 (en) | Apparatus and method for segmented cache utilization | |
Bock et al. | Concurrent migration of multiple pages in software-managed hybrid main memory | |
EP4300308A1 (en) | Method and device for achieving memory sharing control, computer device, and system | |
CN102346682A (zh) | 信息处理装置及信息处理方法 | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
CN108139983B (zh) | 用于在多级系统存储器中固定存储器页面的方法和设备 | |
WO2016082519A1 (zh) | 一种异构存储优化方法及装置 | |
CN111639037B (zh) | 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 | |
US20200278804A1 (en) | Managing memory system quality of service (qos) | |
US10684964B1 (en) | System and method for reducing read latency in storage devices | |
CN115080262A (zh) | 实现内存共享控制的方法、设备、计算机设备和系统 | |
US20230115296A1 (en) | System and Method for Centralized Management of Workload and Parallel Service of Prioritized Requests | |
EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level | |
WO2023051359A1 (zh) | 控制内存带宽的方法、装置、处理器及计算设备 | |
WO2024098795A1 (zh) | 内存管理方法、装置和相关设备 | |
US20230367713A1 (en) | In-kernel cache request queuing for distributed cache | |
CN111183414A (zh) | 基于服务级别协议的高速缓存方法和系统 | |
US11644991B2 (en) | Storage device and control method |
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 |