2024年1月9日发(作者:京碧琴)
互联网基于Linux系统对
mlock原理及其性能的研究苗杰国家计算机网络与信息安全管理中心江苏分中心摘要:Linux系统支持mlock内存锁定功能,启用该功能物理主机可以将物理内存页锁住,阻止内存页调出到
swap交换空间启用mlock功能可以将进程使用的部分或者全部的虚拟内存锁定到物理内存中,Linux内
核主要通过mlock的四个函数来实现物理内存贞的锁定和解锁从RHEL6.5GA版本开始,虚拟化libvirt就
已提供对mlock功能支持默认情况下虚拟机qemu-kvm进程中的mlock功能是关闭的,若要开启qemu-
kvm进程的mbck功能,需在虚拟机的配置文件中添加内存锁定的配置选项,若网卡设备以virtio方式添加
到虚拟机时,启用mlock功能会影响虚拟机的实际占用物理内存=为了验证mlock功能对业务性能造成的
影响,针对两种应用场景分别对其进行性能测试,主要验证了
mlock功能使用不同内存锁定选项参数对创
建多线程和page
fault产生的性能影响
关键词:Linux;
mlock; )#:拟化;多线程;性能0引言在一些业务的使用过程中,严格时间相关的程序,锁住
物理内存.可以避免内存页频繁调出调人带来的性能损耗对
于安全性要求较高的应用程序,需要敏感数据被禁止输出到
交换文件中,否则程序结束后,攻击者就可能从交换文件中恢
复出这些敏感数据:Linux内核通过mlock的四个函数来实现
物理内存页的锁定和解锁,虚拟化环境中也可修改虚拟机的配
置文件来启用内存锁定功能,从而满足一些应用场景的需求1
mlock简介及其原理mlock (
memory
locking )是Linux内核实现内存锁定的一种方式,用来将进程使用的部分或者全部的虚拟内存锁定到
物理内存中。mlock机制主要有以下功能:(1 )被锁定的物
理内存在被解锁或进程退出前,不会被页回收流程处理;(2)
被锁定的物理内存,不会被交换到swap设备;(3)进程执
行mlock操作,立刻分配物理内存。mlock机制提供以下四个函数供使用,如表1所示:表1
mlock相关函数函数
int mlock ( const void *addr, size t len
)描述将起始地址addr,长度为len的虚拟内存锁定到物理内存:int munlock ( const void *addr, size t
munlock
()将起始地址addr,长度为len的物理内存解锁len )flags 当前虑拟内存新增加虑拟内存MCL_CURRENT: 〇 xMCL_FUTURE: x 〇MCL_CURRENT|MCL_FUTURE :〇
int mlockall ( int flags )〇〇:颌定到物理内存_
x:不锁定到物理内存iint munlockall ( void )munlockall
()将mlocka丨丨()的物理内存解锁(说明:上述几个函数只能由root用户执行。)每个进程都拥有一段连续的虚拟内存,内核实际的使用据结构来管理虚拟内存区域,简称vma
vma管理虚拟内存的
情况并不是以整个虚拟内存为管理单位,而是将整个虚拟内方式如图1所示。存划分为若干个虚拟内存区域,内核中使用vm_area_struct数662021.04
process addressI High addressvm_end
vm_start
vm一flagsvm_endvm_startvm_flagsi Low address图1
vma管理虚拟内存每一个vma代表一个已映射的、连续的且属性相同(如
可读/写)的虚拟内存区域。内核采用链表和AVL树形式管
理vma,链表用于遍历,AVL树用来查找mlock操作会给相
应的vma的vm_flags置一个VM
LOCKED标记,而这个标记
则会影响到物理内存回收和交换。mlock锁定的虚拟内存区域,
可能跟现有的vma管理的虚拟内存区域并不完全重合,由于
同一个vma的内存属性要求一致,而是否具有VM_LOCKED
标记也是其属性之一,所以mlock操作可能导致现有的vma
被合并或分割。vma的合并和分割如图2所示。LOCKED
vm_fl*g*-'M
EXECprevnext!'
l丨-
v
m_flag»*V-*M*•-------_LOCKED
newvm
fla**-Tv4
LOCKED
•______A___EXEC prev,next,图2
vma的合并和分割prev,next是已受链表管理的vma结构,new是将要
新加入链表的vma。当new加入时,如果new的起始地址
与prev的结束地址相同,且new属性与prev属性均为VM_
LOCKED,则将prev和new合并成prev’。若new的结束
地址与next的起始地址有重合,但next属性是VM
EXEC,
则next被分割成两部分,一部分加人prev’,另一部分变成
next' 〇Linux给进程使用的虚拟内存由LRU来管理,操作系统
对LRU的实现主要基于一对双向链表,activejist和inactive_
list同时引人两个页面标志符PG_active和PG_referenced来互联网标识某个页面的活跃程度,从而决定如何在两个链表之间移
动页面。内核函数vmscan仅会遍历扫描active
list和inactive
list
链表来回收页面。内核在LRU中新增了一个unevictable
list,
将不可回收的页面都放在unevictable
list中,mlock的页被放
在unevictable
list中,同时给该页置一个PG
mlocked标记。
除了
mlock的页,ramdisk或ramfs的页和共享内存映射的页
也被放入
unevictable_list 中。解锁并不立刻将解锁的页回收,而是将解锁的页放回
active
list或inactive_list链表,然后交由页回收流程处理,所
以mlock的页不会被页回收流程处理。当通过fork系统调用创建一个子进程,子进程将拷贝父
进程的整个虚拟内存,包括对所有vma的拷贝,不过子进程
的vma并不继承VM_LOCKED标记。由于线程共享进程资源,
所以线程的vma将继承VM_LOCKED标记。2
mlock功能在虚拟化应用中的实现从RHEL6.5GA版本中,Linux系统虚拟化libvirt已提供
对mlock功能的支持。当启动虚拟机时,默认情况下qemu-
kvm进程中的mlock功能是关闭的。若要开启qemu-kvm进程
的mlock功能,需在虚拟机的xml文件中,添加如下配置行:
置10GB的内存,经测试虚拟机启动后实际占用的物理内存如
下表2所示:表2
mlock功能对虚拟机内存的影响应用场景网卡设备模式mlock=on|off虚拟机占用物理内存lVirtioon10GB2Virtiooff900MB3PCIon10GB4*注PCIoff10GB(说明:网卡设备PC1模式下,虚拟机占用配置的10GB
内存。)3
mlock功能对访问内存的影响进程一般会访问虚拟内存,需要建立虚拟内存和物理内
存的映射关系,而启用mlock功能会对进程运行中的page
faultI 2021.04
6 7
互联网产生影响,进而影响内存访问时间.mlock功能对内存访问的
影响如表3所示:表3
mlock功能对内存访问的影响线程栈空间映射
物理内存大小=on|ofFoff映射物理内存
时间开销低其中1MBfault次数mlock=on|off访问内存产生page
onoff1多次访问内存时间开销低高假设线程整个栈空间大小10M假设I0MB空间已使用
s, 1MB
虚拟内存和物理内存建立映射关系耗时lms虚拟内存和物理内存建立映射关系耗时0.1m线程操作时:(1
)采用m当进程涉及多
(1 )采用mlock机制,仅在进程虚拟内存和物理内存建
立映射关系时产生一次page
fault(2)未采用mlock机制,每当访问进程中不同的虚拟内
存单元时,就会产生一次page
fault若进程中涉及实时处理环节,应在进入实时处理环节前,
将进程虚拟内存锁定到物理内存,否则page
fault会影响实时
处理。在一些实际应用中会涉及多线程操作,每个线程均有自
己的栈空间,启用mlock功能会对线程栈空间映射物理内存带
来一定的影响,如表4所示-表4
mlock功能对线程映射的影响lock机制,线程整个栈空间10MB会被映射
到物理内存,若一个进程中有2000个线程,则线程栈空间和
物理内存建立映射关系共耗时2000ms(2
)未采用mlock机制,线程栈空间已使用的1MB会
被映射到物理内存,若一个进程中有2000个线程,则线程找
空间和物理内存建立映射关系共耗时200ms若进程涉及多线程操作,采用mlock机制,线程栈空间
和物理内存建立映射关系将带来额外的时间开销:4
mlock功能对业务性能的影响为了验证mlock功能对业务性能带来的影响.按如下两
mlock=on|ofFon线程栈空间映射物理内存大小10MB映射物理内存时间开销高种应用场景分别对其进行性能测试(I
)利用进程测试T具.验证mlock功能是否开启对其
创建线程性能的影响。测试结果如表5所示。表5
mlock功能对创建线程性能影响mlock=on进程数比率mlock=offMCL_CURRENT
MCL_FUTURE87,038123,03995,18050,434,541A0.991.011.001.031.40B0.970.890.610.350.,525138,753156,696142,348104,23088,570140,054157,321146,581145,429测试单位为thread/s;比率
A=mlock
on
(
MCL_CURRENT > /off;比率
B=mlock
on (
MCL_FUTURE )
/off
从表5中可以看出随着并发进程逐渐增多,使用mMCL_FUTURElock的
mlock功能对创建线程性能影响200,000150.000100.000
50,000特性,会严重影响进程创建线程的性能:图形
U1效果如图3所示_(2)动态分配内存20GB,验证mlock功能是否开启对2
m4
■ mlock=off■ T
3 MCL_FUTURE8进程数图3
mlock功能对创建线程性能影响(下转第85页)68
2021.04 I
传送网2.2异厂商跨域协同测试为验证基于ACTN架构的SDN两级协同实现跨域OTN
解耦互通与业务发放,验证集团先进架构的可用性,山东联
通基于现网搭建测试环境.选定测试环境进行测试,即烽火、
华为设备通过NNI灰光、UNI两种方式跨域对接,混合组网。
端到端透传业务路径:华为CPE-华为本地网-华为省网-烽
火本地网-烽火CPE.省内烽火集中化工作同步进行,目前已
部署控制器,测试场景烽火域纳管网元主要为临时测试网元
EOO入云及EOS入云)。EOO和EOS类业务的异厂商跨域
协同,需视各厂商的开发力度进行现网验证和跟踪3结束语基于SD0TN的跨域业务协同,对于光传送网现网架构下
的SDN化演进有重要意义,本文从异厂商物理网络对通和管
控层对通两个方面进行论证分析,以省内华为-烽火、华为-
中兴现网测试案例进行辅助,总结异厂商基于ACTN架构的
光域SDN北向对接方案及技术关键点,进而为全面实现异厂
商网络一体化打下基石SDOTN可实现基于业务算路策略和
路径约束、时延可视的端到端跨域OTN业务编排与快速发放,
且具备跨域业务保护恢复等功能,支持多厂商OTN设备混合
组网,并且对网络层互通的NNI、UN1两种方式均进行了支
持验证,有助于构建灵活高效智能一体化政企精品网。后续
根据各厂商的开发情况,需进一步实现对EOO和EOS类业务
的异厂商跨域协同。(FONST 6000及FONST 1000
U2设备):华为域均为现网在
用网元,新增末端CPE
OSN 1800丨E设备:测试完成:控制层NCE-S进行跨域统一管控,实现拓扑
查看、时延测量、基于约束路由的E2E业务下发、状态变更
同步等。2.3后续应用建议由于各厂商对于SDN管控支持情况进度不一,目前的
测试仅考虑了透传组网业务的跨域实现(含UNI和NNI两种
方式),对于EOO和EOS类业务,2021年需重点实现基于
PE0TN网络的上述两种业务组网及人云,以及对应业务的B/
〇域流程打通,包含省内NCE-S北向对接第三方编排器与应
用层打通,进而全面支撑云网协同业务(含MPLS-TP人云、作者简介:吕文琳(1981 —),女,江苏镇江人,高级T_程师,
工程硕士;研究方向:电子通信工程。(收稿日期:2020-11-30;责任编辑:赵明亮)(上接第68页)page
fault产生的影响:如表6所示:表6
mlock功能对page
fault的影响单位5结束语基于Linux系统对mlock实现原理进行了研究,并测试了
mlock=on (
MCL_FUTURE )5,020,288mlock=off20,263off/on0.004mlock功能开启对进程创建线程和page
fault产生的性能影响
从两个测试结果可以看出,使用mlock的MCL_FUTURE特
性来进行内存锁定,当进程涉及动态内存分配时会大幅增加
page
fault次数从表6中可以看出使用mlock的MCL_FUTURE特性,动
态分配内存时会大幅增加page
fault,图形效果如图4所示:mlock功能对page fault的影响6,000,0005.000.
4.000.
3.000.
000000000page
fault,同时并发进程数增加会严重降低进程创建线程的性
能,这是由mlock实时锁定了物理内存造成的。因此可以根据
具体情况和需求来决定是否需要使用mlock功能。作者简介:苗杰(1987—),男,江苏南京人,中级.T.程师,
■ page fault数2.000. 0001,000,000硕士;研究方向:网络与信息安全。(收稿日期:2020-11-23;责任编辑:赵明亮)0图4
mlock功能对page
fault影响I 2021.04
8 5
2024年1月9日发(作者:京碧琴)
互联网基于Linux系统对
mlock原理及其性能的研究苗杰国家计算机网络与信息安全管理中心江苏分中心摘要:Linux系统支持mlock内存锁定功能,启用该功能物理主机可以将物理内存页锁住,阻止内存页调出到
swap交换空间启用mlock功能可以将进程使用的部分或者全部的虚拟内存锁定到物理内存中,Linux内
核主要通过mlock的四个函数来实现物理内存贞的锁定和解锁从RHEL6.5GA版本开始,虚拟化libvirt就
已提供对mlock功能支持默认情况下虚拟机qemu-kvm进程中的mlock功能是关闭的,若要开启qemu-
kvm进程的mbck功能,需在虚拟机的配置文件中添加内存锁定的配置选项,若网卡设备以virtio方式添加
到虚拟机时,启用mlock功能会影响虚拟机的实际占用物理内存=为了验证mlock功能对业务性能造成的
影响,针对两种应用场景分别对其进行性能测试,主要验证了
mlock功能使用不同内存锁定选项参数对创
建多线程和page
fault产生的性能影响
关键词:Linux;
mlock; )#:拟化;多线程;性能0引言在一些业务的使用过程中,严格时间相关的程序,锁住
物理内存.可以避免内存页频繁调出调人带来的性能损耗对
于安全性要求较高的应用程序,需要敏感数据被禁止输出到
交换文件中,否则程序结束后,攻击者就可能从交换文件中恢
复出这些敏感数据:Linux内核通过mlock的四个函数来实现
物理内存页的锁定和解锁,虚拟化环境中也可修改虚拟机的配
置文件来启用内存锁定功能,从而满足一些应用场景的需求1
mlock简介及其原理mlock (
memory
locking )是Linux内核实现内存锁定的一种方式,用来将进程使用的部分或者全部的虚拟内存锁定到
物理内存中。mlock机制主要有以下功能:(1 )被锁定的物
理内存在被解锁或进程退出前,不会被页回收流程处理;(2)
被锁定的物理内存,不会被交换到swap设备;(3)进程执
行mlock操作,立刻分配物理内存。mlock机制提供以下四个函数供使用,如表1所示:表1
mlock相关函数函数
int mlock ( const void *addr, size t len
)描述将起始地址addr,长度为len的虚拟内存锁定到物理内存:int munlock ( const void *addr, size t
munlock
()将起始地址addr,长度为len的物理内存解锁len )flags 当前虑拟内存新增加虑拟内存MCL_CURRENT: 〇 xMCL_FUTURE: x 〇MCL_CURRENT|MCL_FUTURE :〇
int mlockall ( int flags )〇〇:颌定到物理内存_
x:不锁定到物理内存iint munlockall ( void )munlockall
()将mlocka丨丨()的物理内存解锁(说明:上述几个函数只能由root用户执行。)每个进程都拥有一段连续的虚拟内存,内核实际的使用据结构来管理虚拟内存区域,简称vma
vma管理虚拟内存的
情况并不是以整个虚拟内存为管理单位,而是将整个虚拟内方式如图1所示。存划分为若干个虚拟内存区域,内核中使用vm_area_struct数662021.04
process addressI High addressvm_end
vm_start
vm一flagsvm_endvm_startvm_flagsi Low address图1
vma管理虚拟内存每一个vma代表一个已映射的、连续的且属性相同(如
可读/写)的虚拟内存区域。内核采用链表和AVL树形式管
理vma,链表用于遍历,AVL树用来查找mlock操作会给相
应的vma的vm_flags置一个VM
LOCKED标记,而这个标记
则会影响到物理内存回收和交换。mlock锁定的虚拟内存区域,
可能跟现有的vma管理的虚拟内存区域并不完全重合,由于
同一个vma的内存属性要求一致,而是否具有VM_LOCKED
标记也是其属性之一,所以mlock操作可能导致现有的vma
被合并或分割。vma的合并和分割如图2所示。LOCKED
vm_fl*g*-'M
EXECprevnext!'
l丨-
v
m_flag»*V-*M*•-------_LOCKED
newvm
fla**-Tv4
LOCKED
•______A___EXEC prev,next,图2
vma的合并和分割prev,next是已受链表管理的vma结构,new是将要
新加入链表的vma。当new加入时,如果new的起始地址
与prev的结束地址相同,且new属性与prev属性均为VM_
LOCKED,则将prev和new合并成prev’。若new的结束
地址与next的起始地址有重合,但next属性是VM
EXEC,
则next被分割成两部分,一部分加人prev’,另一部分变成
next' 〇Linux给进程使用的虚拟内存由LRU来管理,操作系统
对LRU的实现主要基于一对双向链表,activejist和inactive_
list同时引人两个页面标志符PG_active和PG_referenced来互联网标识某个页面的活跃程度,从而决定如何在两个链表之间移
动页面。内核函数vmscan仅会遍历扫描active
list和inactive
list
链表来回收页面。内核在LRU中新增了一个unevictable
list,
将不可回收的页面都放在unevictable
list中,mlock的页被放
在unevictable
list中,同时给该页置一个PG
mlocked标记。
除了
mlock的页,ramdisk或ramfs的页和共享内存映射的页
也被放入
unevictable_list 中。解锁并不立刻将解锁的页回收,而是将解锁的页放回
active
list或inactive_list链表,然后交由页回收流程处理,所
以mlock的页不会被页回收流程处理。当通过fork系统调用创建一个子进程,子进程将拷贝父
进程的整个虚拟内存,包括对所有vma的拷贝,不过子进程
的vma并不继承VM_LOCKED标记。由于线程共享进程资源,
所以线程的vma将继承VM_LOCKED标记。2
mlock功能在虚拟化应用中的实现从RHEL6.5GA版本中,Linux系统虚拟化libvirt已提供
对mlock功能的支持。当启动虚拟机时,默认情况下qemu-
kvm进程中的mlock功能是关闭的。若要开启qemu-kvm进程
的mlock功能,需在虚拟机的xml文件中,添加如下配置行:
置10GB的内存,经测试虚拟机启动后实际占用的物理内存如
下表2所示:表2
mlock功能对虚拟机内存的影响应用场景网卡设备模式mlock=on|off虚拟机占用物理内存lVirtioon10GB2Virtiooff900MB3PCIon10GB4*注PCIoff10GB(说明:网卡设备PC1模式下,虚拟机占用配置的10GB
内存。)3
mlock功能对访问内存的影响进程一般会访问虚拟内存,需要建立虚拟内存和物理内
存的映射关系,而启用mlock功能会对进程运行中的page
faultI 2021.04
6 7
互联网产生影响,进而影响内存访问时间.mlock功能对内存访问的
影响如表3所示:表3
mlock功能对内存访问的影响线程栈空间映射
物理内存大小=on|ofFoff映射物理内存
时间开销低其中1MBfault次数mlock=on|off访问内存产生page
onoff1多次访问内存时间开销低高假设线程整个栈空间大小10M假设I0MB空间已使用
s, 1MB
虚拟内存和物理内存建立映射关系耗时lms虚拟内存和物理内存建立映射关系耗时0.1m线程操作时:(1
)采用m当进程涉及多
(1 )采用mlock机制,仅在进程虚拟内存和物理内存建
立映射关系时产生一次page
fault(2)未采用mlock机制,每当访问进程中不同的虚拟内
存单元时,就会产生一次page
fault若进程中涉及实时处理环节,应在进入实时处理环节前,
将进程虚拟内存锁定到物理内存,否则page
fault会影响实时
处理。在一些实际应用中会涉及多线程操作,每个线程均有自
己的栈空间,启用mlock功能会对线程栈空间映射物理内存带
来一定的影响,如表4所示-表4
mlock功能对线程映射的影响lock机制,线程整个栈空间10MB会被映射
到物理内存,若一个进程中有2000个线程,则线程栈空间和
物理内存建立映射关系共耗时2000ms(2
)未采用mlock机制,线程栈空间已使用的1MB会
被映射到物理内存,若一个进程中有2000个线程,则线程找
空间和物理内存建立映射关系共耗时200ms若进程涉及多线程操作,采用mlock机制,线程栈空间
和物理内存建立映射关系将带来额外的时间开销:4
mlock功能对业务性能的影响为了验证mlock功能对业务性能带来的影响.按如下两
mlock=on|ofFon线程栈空间映射物理内存大小10MB映射物理内存时间开销高种应用场景分别对其进行性能测试(I
)利用进程测试T具.验证mlock功能是否开启对其
创建线程性能的影响。测试结果如表5所示。表5
mlock功能对创建线程性能影响mlock=on进程数比率mlock=offMCL_CURRENT
MCL_FUTURE87,038123,03995,18050,434,541A0.991.011.001.031.40B0.970.890.610.350.,525138,753156,696142,348104,23088,570140,054157,321146,581145,429测试单位为thread/s;比率
A=mlock
on
(
MCL_CURRENT > /off;比率
B=mlock
on (
MCL_FUTURE )
/off
从表5中可以看出随着并发进程逐渐增多,使用mMCL_FUTURElock的
mlock功能对创建线程性能影响200,000150.000100.000
50,000特性,会严重影响进程创建线程的性能:图形
U1效果如图3所示_(2)动态分配内存20GB,验证mlock功能是否开启对2
m4
■ mlock=off■ T
3 MCL_FUTURE8进程数图3
mlock功能对创建线程性能影响(下转第85页)68
2021.04 I
传送网2.2异厂商跨域协同测试为验证基于ACTN架构的SDN两级协同实现跨域OTN
解耦互通与业务发放,验证集团先进架构的可用性,山东联
通基于现网搭建测试环境.选定测试环境进行测试,即烽火、
华为设备通过NNI灰光、UNI两种方式跨域对接,混合组网。
端到端透传业务路径:华为CPE-华为本地网-华为省网-烽
火本地网-烽火CPE.省内烽火集中化工作同步进行,目前已
部署控制器,测试场景烽火域纳管网元主要为临时测试网元
EOO入云及EOS入云)。EOO和EOS类业务的异厂商跨域
协同,需视各厂商的开发力度进行现网验证和跟踪3结束语基于SD0TN的跨域业务协同,对于光传送网现网架构下
的SDN化演进有重要意义,本文从异厂商物理网络对通和管
控层对通两个方面进行论证分析,以省内华为-烽火、华为-
中兴现网测试案例进行辅助,总结异厂商基于ACTN架构的
光域SDN北向对接方案及技术关键点,进而为全面实现异厂
商网络一体化打下基石SDOTN可实现基于业务算路策略和
路径约束、时延可视的端到端跨域OTN业务编排与快速发放,
且具备跨域业务保护恢复等功能,支持多厂商OTN设备混合
组网,并且对网络层互通的NNI、UN1两种方式均进行了支
持验证,有助于构建灵活高效智能一体化政企精品网。后续
根据各厂商的开发情况,需进一步实现对EOO和EOS类业务
的异厂商跨域协同。(FONST 6000及FONST 1000
U2设备):华为域均为现网在
用网元,新增末端CPE
OSN 1800丨E设备:测试完成:控制层NCE-S进行跨域统一管控,实现拓扑
查看、时延测量、基于约束路由的E2E业务下发、状态变更
同步等。2.3后续应用建议由于各厂商对于SDN管控支持情况进度不一,目前的
测试仅考虑了透传组网业务的跨域实现(含UNI和NNI两种
方式),对于EOO和EOS类业务,2021年需重点实现基于
PE0TN网络的上述两种业务组网及人云,以及对应业务的B/
〇域流程打通,包含省内NCE-S北向对接第三方编排器与应
用层打通,进而全面支撑云网协同业务(含MPLS-TP人云、作者简介:吕文琳(1981 —),女,江苏镇江人,高级T_程师,
工程硕士;研究方向:电子通信工程。(收稿日期:2020-11-30;责任编辑:赵明亮)(上接第68页)page
fault产生的影响:如表6所示:表6
mlock功能对page
fault的影响单位5结束语基于Linux系统对mlock实现原理进行了研究,并测试了
mlock=on (
MCL_FUTURE )5,020,288mlock=off20,263off/on0.004mlock功能开启对进程创建线程和page
fault产生的性能影响
从两个测试结果可以看出,使用mlock的MCL_FUTURE特
性来进行内存锁定,当进程涉及动态内存分配时会大幅增加
page
fault次数从表6中可以看出使用mlock的MCL_FUTURE特性,动
态分配内存时会大幅增加page
fault,图形效果如图4所示:mlock功能对page fault的影响6,000,0005.000.
4.000.
3.000.
000000000page
fault,同时并发进程数增加会严重降低进程创建线程的性
能,这是由mlock实时锁定了物理内存造成的。因此可以根据
具体情况和需求来决定是否需要使用mlock功能。作者简介:苗杰(1987—),男,江苏南京人,中级.T.程师,
■ page fault数2.000. 0001,000,000硕士;研究方向:网络与信息安全。(收稿日期:2020-11-23;责任编辑:赵明亮)0图4
mlock功能对page
fault影响I 2021.04
8 5