本发明涉及内存管理,具体的说是一种实现动态精细化操作系统内存合并管理的方法及装置。
背景技术:
1、在现代操作系统中,多个进程同时运行,每个进程都需要分配一定的内存空间来存储其代码和数据。然而,许多进程可能会使用相同或相似的数据,这导致了内存资源的浪费。在虚拟化环境中,这一问题更加突出。多个虚拟机通常可能会运行相同的操作系统和相同的基础应用程序,因而会产生大量重复的内存页。对这些内存页面进行合并,并在修改页面时使用写时复制(copy on write)来实现已合并内存的管理可以节省大量的内存资源。
2、近年来,一些基于内核的内存合并技术,如linux内核中的kernel samepagemerging(ksm),实现了通过扫描和合并相同的内存页来解决这一问题。然而,ksm内存合并技术在使用灵活便捷和对内存的动态精细管理方面存在操作复杂和效率低下的问题。
技术实现思路
1、现有的ksm内存合并技术依赖于用户态守护进程主动调用madvise或prctl系统调用来通知内核哪些内存可以被扫描和尝试合并,这种方法需要开发者在应用程序中进行额外的编码工作,并且可能导致遗漏一些内存区域,未能充分利用内存资源。基于此,本发明提出一种实现动态精细化操作系统内存合并管理的方法及装置,来高效便捷、动态精细的管理操作系统内存合并机制,提高内存利用率和系统性能。
2、第一方面,本发明提供一种实现动态精细化操作系统内存合并管理的方法,解决上述技术问题采用的技术方案如下:
3、一种实现动态精细化操作系统内存合并管理的方法,其包括如下步骤:
4、设计一个内核模块,来创建并监控proc文件系统下的文件,通过读写所述文件实现对进程级内存合并的增删改查功能;
5、设计一个用户态守护进程,来动态调整系统整体内存合并参数和进程级内存合并状态。
6、可选的,设计内核模块的具体过程如下:
7、在内核模块的初始化函数中,在proc文件系统下创建ksm_proc文件夹,并在ksm_proc文件夹中创建ksm_process_pid_control文件和ksm_process_run文件,用于用户态守护进程与内核模块之间的通信;
8、在内核模块中注册对应文件的读写函数,所注册函数在用户写入或读取文件时被调用,同时,使用copy_from_user和copy_to_user函数来在用户空间和内核空间之间传输数据;
9、在写文件操作对应的函数中,实现对输入内容识别进程id是否合法、是否重入操作的检测及处理,若输入的pid为正整数,则实现开启对应进程内存合并的功能,若输入的pid为负整数,则实现关闭对应进程内存合并的功能;
10、在读文件操作对应的函数中,实现根据当前内核空间保存的已开启内存合并的进程列表结合进程当前的存在状态处理并返回进程id列表的功能。
11、可选的,通过用户态守护进程动态调整系统整体内存合并参数,具体实现过程如下:
12、启动用户态守护进程,周期性扫描和记录系统整体内存负载;
13、基于内存负载的预设阈值,判断是否启动操作系统内存合并机制:
14、a1)当内存负载不超过预设阈值m时,不启动操作系统内存合并机制;
15、a2)当内存负载超过预设阈值m时,启动操作系统内存合并机制;
16、操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量:
17、b1)若空余内存持续低于预设阈值n,则扩大每周期扫描范围并缩短周期间等待时间,
18、b2)若空余内存持续高于预设阈值n,则缩小每周期扫描范围并延长周期间等待时间。
19、优选的,操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量时,记录时间窗口内进程的内存合并情况历史数据,其中被扫描进程的范围是系统全部用户态守护进程或通过预设关键字指定。
20、进一步可选的,通过用户态守护进程来动态调整进程级内存合并状态,具体实现过程如下:
21、启动用户态守护进程,周期性扫描和记录系统整体内存负载,以及各进程的内存使用情况;
22、用户态守护进程通过读取proc文件系统或调用相应api获取系统的内存使用数据;
23、当内存负载超过预设阈值m时,启动操作系统内存合并机制,动态调整内存合并参数:
24、当空余内存持续低于预设阈值n时,扩大每周期扫描范围并缩短周期间等待时间,同时,计算每个被扫描进程时间窗口内的内存合并效率,将所有合并效率高于预设阈值p的被扫描进程加入操作系统的内存合并,其中内存合并效率由该进程已合并内存页面数量及该进程所有使用内存页面数量计算得出;
25、当空余内存持续高于预设阈值n,则缩小每周期扫描范围并延长周期间等待时间,同时,计算每个被扫描进程时间窗口内的内存合并效率,若高于预设阈值p且低于预设阈值q,则暂时将该进程移出操作系统内存合并机制,其中内存合并效率由该进程已合并内存页面数量及该进程所有使用内存页面数量计算得出。
26、第二方面,本发明提供一种实现动态精细化操作系统内存合并管理的装置,解决上述技术问题采用的技术方案如下:
27、一种实现动态精细化操作系统内存合并管理的装置,其包括内核设计部分和进程设计部分,其中:
28、通过内核设计部分设计一个内核模块,使用内核模块创建并监控proc文件系统下的文件,通过读写所述文件实现对进程级内存合并的增删改查功能;
29、通过进程设计部分设计一个用户态守护进程,使用用户态守护进程来动态调整系统整体内存合并参数和进程级内存合并状态。
30、可选的,通过内核设计部分设计内核模块的具体过程如下:
31、在内核模块的初始化函数中,在proc文件系统下创建ksm_proc文件夹,并在ksm_proc文件夹中创建ksm_process_pid_control文件和ksm_process_run文件,用于用户态守护进程与内核模块之间的通信;
32、在内核模块中注册对应文件的读写函数,所注册函数在用户写入或读取文件时被调用,同时,使用copy_from_user和copy_to_user函数来在用户空间和内核空间之间传输数据;
33、在写文件操作对应的函数中,实现对输入内容识别进程id是否合法、是否重入操作的检测及处理,若输入的pid为正整数,则实现开启对应进程内存合并的功能,若输入的pid为负整数,则实现关闭对应进程内存合并的功能;
34、在读文件操作对应的函数中,实现根据当前内核空间保存的已开启内存合并的进程列表结合进程当前的存在状态处理并返回进程id列表的功能。
35、可选的,通过进程设计部分设计用户态守护进程,使用用户态守护进程来动态调整系统整体内存合并参数,具体实现过程如下:
36、启动用户态守护进程,周期性扫描和记录系统整体内存负载;
37、基于内存负载的预设阈值,判断是否启动操作系统内存合并机制:
38、a1)当内存负载不超过预设阈值m时,不启动操作系统内存合并机制;
39、a2)当内存负载超过预设阈值m时,启动操作系统内存合并机制;
40、操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量:
41、b1)若空余内存持续低于预设阈值n,则扩大每周期扫描范围并缩短周期间等待时间,
42、b2)若空余内存持续高于预设阈值n,则缩小每周期扫描范围并延长周期间等待时间。
43、优选的,操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量时,记录时间窗口内进程的内存合并情况历史数据,其中被扫描进程的范围是系统全部用户态守护进程或通过预设关键字指定。
44、进一步可选的,通过进程设计部分设计用户态守护进程,使用用户态守护进程来动态调整进程级内存合并状态,具体实现过程如下:
45、启动用户态守护进程,周期性扫描和记录系统整体内存负载,以及各进程的内存使用情况;
46、用户态守护进程通过读取proc文件系统或调用相应api获取系统的内存使用数据;
47、当内存负载超过预设阈值m时,启动操作系统内存合并机制,动态调整内存合并参数:
48、当空余内存持续低于预设阈值n时,扩大每周期扫描范围并缩短周期间等待时间,同时,计算每个被扫描进程时间窗口内的内存合并效率,将所有合并效率高于预设阈值p的被扫描进程加入操作系统的内存合并,其中内存合并效率由该进程已合并内存页面数量及该进程所有使用内存页面数量计算得出;
49、当空余内存持续高于预设阈值n,则缩小每周期扫描范围并延长周期间等待时间,同时,计算每个被扫描进程时间窗口内的内存合并效率,若高于预设阈值p且低于预设阈值q,则暂时将该进程移出操作系统内存合并机制,其中内存合并效率由该进程已合并内存页面数量及该进程所有使用内存页面数量计算得出。
50、本发明的一种实现动态精细化操作系统内存合并管理的方法及装置,与现有技术相比具有的有益效果是:
51、本发明通过实现新的内核模块及相应的用户态守护进程,能够更加高效便捷、动态精细的管理操作系统内存合并机制,提高内存利用率和系统性能,降低系统的整体开销,尤其适用于基于linux的信创操作系统环境。
1.一种实现动态精细化操作系统内存合并管理的方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种实现动态精细化操作系统内存合并管理的方法,其特征在于,通过用户态守护进程动态调整系统整体内存合并参数,具体实现过程如下:
3.根据权利要求2所述的一种实现动态精细化操作系统内存合并管理的方法,其特征在于,操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量时,记录时间窗口内进程的内存合并情况历史数据,其中被扫描进程的范围是系统全部用户态守护进程或通过预设关键字指定。
4.根据权利要求2所述的一种实现动态精细化操作系统内存合并管理的方法,其特征在于,通过用户态守护进程来动态调整进程级内存合并状态,具体实现过程如下:
5.一种实现动态精细化操作系统内存合并管理的装置,其特征在于,其包括内核设计部分和进程设计部分,其中:
6.根据权利要求5所述的一种实现动态精细化操作系统内存合并管理的装置,其特征在于,通过进程设计部分设计用户态守护进程,使用用户态守护进程来动态调整系统整体内存合并参数,具体实现过程如下:
7.根据权利要求6所述的一种实现动态精细化操作系统内存合并管理的装置,其特征在于,操作系统内存合并机制启动后,通过用户态守护进程继续监控空余内存的数量时,记录时间窗口内进程的内存合并情况历史数据,其中被扫描进程的范围是系统全部用户态守护进程或通过预设关键字指定。
8.根据权利要求6所述的一种实现动态精细化操作系统内存合并管理的装置,其特征在于,通过进程设计部分设计用户态守护进程,使用用户态守护进程来动态调整进程级内存合并状态,具体实现过程如下:
