【特性描述】
etmem内存扩展特性,新增swapcache内存回收、指定内存回收、kernel swap主动换出开关功能
【指定内存回收功能】
现有内存扩展默认换出进程所有可换出页面,除非页面添加lock标记。
添加指定页面可换出功能,进程针对需要换出的页面添加标记,etmem仅针对这部分页面进行换出操作
【swapcache内存回收功能】
用户态etmem发起内存淘汰回收操作,通过write procfs接口与内核态的内存回收模块交互,内存回收模块解析用户态下发的虚拟地址,获取地址对应的page页面,并调用内核原生接口将该page对应内存进行换出回收,在内存换出过程中,swapcache会占用部分系统内存,为进一步节约内存,添加swapcache内存回收功能。
针对swapcache内存回收功能,可以在配置文件中添加swapcache_high_wmark、swapcache_low_wmark参数。
swapcache_high_wmark: swapcache可以占用系统内存的高位水线;
swapcache_low_wmark: swapcache可以占用系统内存的低位水线;
在etmem进行一轮内存换出后,会进行swapcache占用系统内存比例的检查,当占用比例超过高位水线后,会通过swap_pages下发ioctl命令,触发swapcache内存回收,并回收到低位水线停止。
【kernel swap主动换出功能】
针对swap换出到磁盘场景,当etmem用于内存扩展时,用户可以选择是否同时开启内核swap功能。用户可以通过关闭内核原生swap机制,以免原生swap机制换出不应被换出的内存,导致用户态进程出现问题。
通过提供sys接口实现上述控制,在/sys/kernel/mm/swap目录下创建kobj对象,对象名称为kernel_swap_enable,默认为true,用于控制kernel swap的启动与关闭。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
功能测试结果:
指定内存换出测试:
指定内存换出测试结果;正常换出测试结果:
带有进程阈值换出测试:
配置业务进程,在业务中申请4G内存,在etmem配置文件中添加swap_threshold参数,改参数高于业务所实际占用内存;启动业务进程并启动etmem,观察业务进程换出情况,无内存换出。
带有进程限制阈值的换出结果:
带有系统阈值换出测试:
配置业务进程,在业务中申请4G内存,在etmem配置文件中添加sysmem_threshold参数,不限制系统,系统内存在500G左右,配置sysmem_threshold为50,启动业务进程,启动etmem换入换出,观察业务进程内存换出情况。
带有系统限制阈值的换出结果:
Swapcache内存回收测试:
为进行swapcache内存回收测试,构造测试用例,在用例中申请8G内存并进行初始化,之后不再进行访问(目的是换出可以占用swapcache空间)。
限制系统内存为50G,在etmem配置文件配置如下:
配置swapcache_high_wmark为8,swapcache_low_wmark为4,因此,swapcache内存占用在2-4G内存之间,超过4G内存会主动触发swapcache内存回收。
Swapcache内存占用趋势图如下,在swapcache内存占用超过高位水线时,会主动进行回收,并回收到低位水线以内。
kernel_swap_enable测试:
在系统中向/sys/kernel/mm/swap目录下kernel_swap_enbale接口写入false,并重新启动etmem换入换出,通过etmem仍然可以正常进行业务内存的换入换出操作。
登录 后才可以发表评论