内存管理的方法及其装置制造方法及图纸

技术编号:33065713 阅读:25 留言:0更新日期:2022-04-15 09:56
本申请提供了一种内存管理的方法及其装置,可以用于对物理主机、虚拟机或容器中的进程访问情况、各个cgroup的流量占用情况进行精细化管理。该方法包括:通过目标缓存页对应的第一记录表记录在所述目标缓存页中读写过目标数据的所有cgroup,及所述所有cgroup读取或写入所述目标数据的次数,可以提高cgroup的流量统计结果的准确率,此时,基于所述更新后的第一记录表对所述第一cgroup进行限流,能够使得所述第一cgroup的限流更加公平及准确。得所述第一cgroup的限流更加公平及准确。得所述第一cgroup的限流更加公平及准确。

【技术实现步骤摘要】
内存管理的方法及其装置


[0001]本申请涉及计算机应用
,并且更具体地,涉及一种内存管理的方法及其装置。

技术介绍

[0002]随着云技术的不断发展,为了节省资源和提升服务器利用率,往往会在云端的同一个服务器中运行多个租户的多个进程。这些进程会共享同一台服务器上的各种资源,但是资源的共享也会带来公平性的问题,此时,可以通过资源隔离对不同租户的不同进程对资源的使用情况进行检测和控制,以保证具有较高优先级的任务获得充足的资源,以及保证具有相同优先级的任务获得相同的资源。
[0003]其中,服务器上的存储资源的读写(input/output,I/O),即存储I/O可以分为直接I/O(direct I/O)和缓存I/O(buffered I/O),直接I/O指直接从存储设备上进行读写,而缓存I/O则利用内存作为存储的缓存,在读写数据时,数据先经过缓存,再返回给应用或写入存储设备。现有的Linux系统中,使用控制组(control group,cgroup)技术对缓存I/O进行限流(throttling)。
[0004]对于缓存I/O来说,需要对各个cgroup进行流量统计,并基于该流量统计结果对缓存I/O进行限流(throttling)。但是,目前cgroup的流量统计结果的准确率不高。

技术实现思路

[0005]本申请提供一种内存管理的方法及其装置,能够提高cgroup的流量统计结果的准确率,从而能够使得缓存I/O的限流更加公平及准确。
[0006]第一方面,提供了一种内存管理的方法,该方法包括:
[0007]获取第一控制组cgroup的读写请求,所述第一cgroup为多个cgroup中的一个,所述读写请求用于请求在目标缓存页中读取或写入目标数据;在基于所述读写请求进行读取或写入操作的情况下,根据所述读取或写入操作更新所述目标缓存页的第一记录表,得到更新后的第一记录表,所述读取或写入操作用于在目标缓存页中读取或写入所述目标数据,所述第一记录表包括第二cgroup及所述第二cgroup读取或写入所述目标数据的次数,所述第二cgroup为所述多个cgroup中在所述目标缓存页中读取过或写入过所述目标数据的cgroup;基于所述更新后的第一记录表中记录的所述第一cgroup读取或写入所述目标数据的次数指示对所述第一cgroup进行限流。
[0008]在本申请实施例中,所述更新后的第一记录表中记录了在所述目标缓存页中读写过所述目标数据的所有cgroup,所述所有cgroup包括所述第一cgroup及所述第二cgroup的合集,及所述所有cgroup读取或写入所述目标数据的次数,从而可以提高cgroup的流量统计结果的准确率,此时,基于所述更新后的第一记录表对所述第一cgroup进行限流,能够使得所述第一cgroup的限流更加公平及准确。
[0009]上述方案中第二cgroup为多个cgroup中在所述目标缓存页中读取过或写入过所
述目标数据的cgroup,因此,如果第一cgroup在本次访问之前访问过目标缓存页,则第二cgroup中可以包括第一cgroup,同样,如果本次访问为目标缓存页的首次访问,则第二cgroup可以为空。
[0010]本方案可以应用于物理主机、虚拟机或容器(例如,Docker)中,可以用于对物理主机、虚拟机或容器(例如,Docker)中的各个cgroup的数据访问情况以及流量占用情况进行精细化的管理。
[0011]本方案中的每个目标缓存页对应设置有一个记录表,记录表用于记录物理主机、虚拟机或容器(例如,Docker)中的各个cgroup对于目标缓存页的读取或者写入的数据(每个记录表只对应读取或者写入中的一个动作)。
[0012]通常,cgroup可以对应于一个或多个进程(或线程、系统日志及其他应用等),通过对cgroup的数据访问情况以及流量占用情况进行记录(或者说统计),可以实现对cgroup对应的一个或多个进程(或线程、系统日志及其他应用等)进行限流。
[0013]可选地,在所述根据所述读取或写入操作更新所述目标缓存页的第一记录表,得到更新后的第一记录表之前,所述方法还可以包括:判断所述第一cgroup是否被限流;在所述第一cgroup未被限流的情况下,基于所述读写请求进行所述读取或写入操作。
[0014]或者,也可以不判断所述第一cgroup是否被限流,直接基于所述读写请求进行所述读取或写入操作,本申请实施例中对此并不限定。
[0015]同时,在本申请实施例中,对所述读取或写入操作与更新所述第一记录表这两个动作之间的先后顺序也不限定。
[0016]例如,可以先基于所述读写请求进行所述读取或写入操作,然后再根据所述读取或写入操作更新所述第一记录表,得到所述更新后的第一记录表。
[0017]或者,也可以在基于所述读写请求进行所述读取或写入操作的情况下,先根据所述读取或写入操作更新所述第一记录表,得到所述更新后的第一记录表,然后再基于所述读写请求进行所述读取或写入操作。
[0018]或者,还可以在基于所述读写请求进行所述读取或写入操作的情况下,同时根据所述读取或写入操作更新所述第一记录表,以及基于所述读写请求进行所述读取或写入操作。
[0019]进一步地,所述对所述第一cgroup进行限流,可以是指:禁止所述第一cgroup在缓存(例如,这里的缓存可以指包括所述目标缓存页在内的所有缓存页)中进行读取或写入操作;或者,也可以是指限制所述第一cgroup在缓存(例如,这里的缓存可以指包括所述目标缓存页在内的所有缓存页)中进行读取或写入的速度。
[0020]例如,可以在操作系统的页缓存机制(page cache)中获取缓存中的每个缓存页的访问记录(例如,访问记录可以指示所有对所述每个缓存页访问过的进程及对应的记录),所述第一cgroup可以对应一个或多个进程,此时,可以结合所述访问记录确定该一个或多个进程对其他缓存页的读取次数,并根据所述更新后的第一记录表及所述对其他缓存页的读取,对所述第一cgroup进行限流。
[0021]另外,对所述第一cgroup进行限流可以指:只限流读取操作、或者只限流写入操作、或者读取操作和写入操作都限流,本申请实施例中对此并不限定。
[0022]需要说明的是,上述实施例仅为示例而非限定,具体的限流方法可以参照现有技
术,本申请实施例中对此并不限定。
[0023]结合第一方面,在第一方面的某些实现方式中,所述第一记录表还用于指示所述第二cgroup读取或写入的数据量,所述根据所述读写请求更新所述目标缓存页的第一记录表,得到更新后的第一记录表,包括:基于预设的策略,重新分配所述第二cgroup读取或写入的数据量;基于所述读写请求与重新分配后的所述第二cgroup读取或写入的数据量,更新所述第一记录表,得到所述更新后的第一记录表。
[0024]在本申请实施例中,基于预设的策略,在所述目标缓存页中读写过所述目标数据的所有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存管理的方法,其特征在于,包括:获取第一控制组cgroup的读写请求,所述第一cgroup为多个cgroup中的一个,所述读写请求用于请求在目标缓存页中读取或写入目标数据;在基于所述读写请求进行读取或写入操作的情况下,更新所述目标缓存页的第一记录表,得到更新后的第一记录表,所述读取或写入操作用于在目标缓存页中读取或写入所述目标数据,所述第一记录表包括第二cgroup及所述第二cgroup读取或写入所述目标数据的次数,所述第二cgroup为所述多个cgroup中在所述目标缓存页中读取过或写入过所述目标数据的cgroup;基于所述更新后的第一记录表中记录的所述第一cgroup读取或写入所述目标数据的次数指示对所述第一cgroup进行限流。2.根据权利要求1所述的方法,其特征在于,所述第一记录表还用于指示所述第二cgroup读取或写入的数据量,所述根据所述读取或写入操作更新所述目标缓存页的第一记录表,得到更新后的第一记录表,包括:基于预设的策略,重新分配所述第二cgroup读取或写入的数据量;基于所述读写请求与重新分配后的所述第二cgroup读取或写入的数据量,更新所述第一记录表,得到所述更新后的第一记录表。3.根据权利要求2所述的方法,其特征在于,所述基于预设的策略,重新分配所述第二cgroup读取或写入的数据量,包括:基于所述第一cgroup与所述第二cgroup的合集中的cgroup个数,重新分配所述合集中各cgroup读取或写入的数据量。4.根据权利要求2所述的方法,其特征在于,所述基于预设的策略,重新分配所述第二cgroup读取或写入的数据量,包括:基于所述更新后的第一记录表中所述第一cgroup与所述第二cgroup的合集中的各cgroup的读取或写入的次数,重新分配所述合集中各cgroup读取或写入的数据量。5.根据权利要求4所述的方法,其特征在于,所述基于所述更新后的第一记录表中记录的所述第一cgroup读取或写入所述目标数据的次数对所述第一cgroup进行限流,包括:基于所述更新后的第一记录表中记录的所述第一cgroup读取或写入的数据量,指示对所述第一cgroup进行限流。6.根据权利要求1至5中任一项所述的方法,其特征在于,在所述获取第一控制组cgroup请求在目标缓存页中读取所述目标数据的请求之后,所述方法还包括:在所述目标缓存页中不存在所述目标数据的情况下,初始化所述第一记录表;将所述目标数据从存储设备中读取到所述目标缓存页。7.根据权利要求1至5中任一项所述的方法,其特征在于,在所述获取第一控制组cgroup请求在目标缓存页中写入所述目标数据的请求之后,所述方法还包括:在所述目标缓存页中不存在所述目标数据的情况下,初始化所述第一记录表;将所述目标数据写入到所述目标缓存页。8.一种内存管理的装置,其特征在于,包括:获取单元,用于获取第一控制组cgroup的读写请求,所述第一cgroup为多个cgroup中的一个,所述读写请求用于请求在目标缓存页中读取或写入目标数据;
更新单元,用于在基...

【专利技术属性】
技术研发人员:陈晓黄凯耀李龙
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1