一种有效控制胖节点内存资源使用的方法

文档序号:6367202阅读:272来源:国知局
专利名称:一种有效控制胖节点内存资源使用的方法
技术领域
本发明涉及计算机操作系统管理与优化领域,具体涉及ー种在多用户、多任务的Linux操作系统下对内存资源的有效监控、管理与优化的技木。
背景技术
目前エ业和科研领域对于大規模计算的需求越来越多,而这样的计算需求往往需要在有大量CPU计算核心数、内存资源、存储空间,高速网络通讯的计算节点上进行,这也就使得胖节点越来越多的被用户们所使用,成为计算领域的主力军。作为ー个大規模的计算节点,通常使用的是多用户、多任务的Linux操作系统。由于对运算效率的要求,用户都不希望程序使用到swap分区,因此swap分区往往相对系统的实际物理内存较小。这也就使得在胖节点上很难进行大規模的物理内存与swap之间的内存交换,因此要求系统中运行的进程所需要的内存容量要尽量保证在物理内存大小以内,一旦超过物理内存实际大小,就很有可能导致整个系统的宕机,使得该胖节点上正在进行的所有运算都功亏ー篑。而对于ー个在胖节点上进行运算的用户,一般很难对自己运行的程序在计算的各个不同阶段所需要的实际内存数量有非常准确的估计,同时也不方便时刻监控自己的运算程序对内存的使用情況。而对于多个用户使用的,多个任务运行的胖节点上,如何有效地避免由于运行的程序对内存的需求超过实际物理内存从而导致整个系统的宕机是本发明所解决的主要问题。

发明内容
本发明的目的在于有效的对系统内存资源进行监控和管理,以防止由于内存使用过量而导致胖节点宕机,从而避免造成大量计算资源的浪费,減少用户对系统资源使用的复杂度,使系统更便捷、更稳定、更高效的运行。本发明的目的是按以下方式实现的,通过使用Linux系统本身提供的工具对胖节点的内存资源使用情况进行定时监控,通过采集内存资源使用情况与设定的阈值进行比较,根据比较结果按照进程控制策略对系统进程进行调整,并再次采集调整后的内存使用情况与阈值进行比较,形成一个封闭的环状控制系统,使整个系统控制在稳定的平衡状态,当内存使用率超过了设定阈值时,便通过进程控制的方式将使用的内存控制在阈值范围之内;本发明实现的具体步骤如下
1)根据胖节点的物理内存和swap大小,设置适当的阈值;
2)获取系统当前内存与swap使用情况;
3)将当前系统内存与swap使用情况与阈值进行比较,若小于阈值范围则退出,若大于 阈值范围则进入第4步;
4)利用Linux系统命令ps提取出当前系统正在运行的内存使用率等于或大于O.1%的普通用户进程,其中包括进程的ID号、用户、cpu使用率、内存使用率、实际运行时间、cpu运行时间、进程状态、执行命令等;
5)根据进程控制策略选取目标进程,目前支持的进程控制策略包括3种
1.选取当前占用内存资源最大的进程;
2.选取当前cpu运行时间最小的进程(即使用CPU计算资源最少的进程);
3.根据作业提交的时间,选取最后ー个提交作业的进程;
6 )将选取出的目标进程ki 11棹;
7)输出日志文件信息,告诉相应的用户其运行的作业被停止,以及停止的时间,停止的进程和进程相关的信息。
到此为止一个对胖节点上所有普通用户运行进程使用内存资源的控制流程完成。该过程以Shell脚本的形式实现,通过添加系统的计划任务使该脚本定时执行,从而形成一个对内存资源使用控制的闭环系统。本发明的有益效果是利用Linux系统本身提供的工具对胖节点的内存资源使用情况进行定时监控,并采用一种闭环控制的模型将监控数据与设定的阈值进行比较,当内存使用率超过了设定的阈值时便通过进程控制的方式以防止由于内存使用过量而导致胖节点宕机,从而避免造成大量计算资源的浪费。在资源最大化利用的同时减少了用户对系统资源使用的复杂度,使得系统更便捷、更稳定、更高效的运行。


附图I为有效控制胖节点内存资源使用的闭环控制模型;
附图2为有效控制胖节点内存资源使用的脚本实现流程图。
具体实施例方式为了使本发明的目的、技术方案更加清晰,下面结合附图针对本发明中的关键步骤进行详细说明。该发明采用ー种闭环控制的模型,如附图I中所示,通过Linux系统自带的Cixmtab计划任务工具定时采集系统的内存资源使用情况,并与设定的阈值进行比较,对比较结果通过进程控制模块加以控制。该系统的输入是设定的阈值与进程对内存资源占用的变化,输出是系统实际使用的内存大小,反馈是对系统内存使用情况的数据采集与转换,进程控制模块保证系统的输出稳定在阈值范围之内。本发明对胖节点上内存资源使用的有效控制是通过Shell脚本来实现的,具体的实现流程图如附图2所示。通过下面命令获取系统当前内存使用信息, usedmem='free | awk ,$1 -/+" {print $3} usedswap='free | awk ’$I Swap" {print $3}
通过下面命令获取系统当前进程信息
ps-eo user, pid, pcpu, pmem, stat, start_time, cputime, etime, args | awk ($1!= root"&&$l!=〃USER〃&&$4>0. O) {print $0}’
对获取到的start_time, cputime, etime需要进行时间转换成以秒为单位,通过以下函数来实现,function timetos
{
time=$l
dayflag='echo "$time" | awk -F- , {print NF}if [ ^$dayfIag^ _eq 2 ]; then
daytos='echo 〃$time" | awk -F- ’ {print $1*24*3600},'tmptime='echo "$time" | awk -F- ’ {print $2}
else
daytos=0
tmptime='echo "$time" | awk -F- ’ {print $1}’'
fi
timeflag='echo "$tmptime" | awk -F: , {print NF}if [ 〃$timeflag〃 _eq 3 ]; then
htos='echo 〃$tmptime〃 | awk -F: ’ {print $1*3600},'mtos='echo "$tmptime" | awk -F: ’ {print $2*60}’'stos='echo "$tmptime" | awk -F: ’ {print $3}elif [ 〃$timeflag〃 _eq 2 ]; thenhtos=0
mtos='echo "$tmptime" | awk -F: ’ {print $1*60}’'stos='echo "$tmptime" | awk -F: ’ {print $2}
fi
result=$ ((10#$daytos+10#$htos+10#$mtos+10#$stos))echo 〃$result〃
}
通过下面命令停止目标进程, kill -9 "$pidl" 将该脚本freemem. sh添加进计划任务,使该脚本定时执行内存使用情况检测, crontab _e
0-59 ^ ^ ^ ^ sh /var/log/freemem/freemem. sh 3 # 米取第三种策略,姆分钟检测
一次
定期检查日志文件,如有被停止的进程则会以日志形式通知该用户,日志文件中输出如下,
Wed Apr 14 20:24:01 AST 2010 # (停掉该进程的时间)
Kill the process by the option j, please tell the user liujc !
Iiujc 22457 99.9 93.5 R 09:17 11:05:35 11:06:05 velveth—de本发明中的方法利用Linux系统本身提供的工具对计算节点的内存资源使用情况进行定时监控,并釆用一种闭环控制的模型将监控数据与设定的阈值进行比较,当内存使用率超过了设定的阈值时便通过进程控制的方式以防止由于内存使用过量而导致胖节点宕机,从而避免造成大量计算资源的浪费。在资源最大化利用的同时减少了用户对系统资源使用的复杂度,使得系统更便捷、更稳定、更高效的运行。该方法对于使用多用户、多任务的
Linux操作系统具有普遍意义,但尤其对胖节点类型的服务器架构效果更加显著。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1.一种有效控制胖节点内存资源使用的方法,其特征在于通过使用Linux系统本身提供的工具对胖节点的内存资源使用情况进行定时监控,通过采集内存资源使用情况与设定的阈值进行比较,根据比较结果按照进程控制策略对系统进程进行调整,并再次采集调整后的内存使用情况与阈值进行比较,形成一个封闭的环状控制系统,使整个系统控制在稳定的平衡状态,当内存使用率超过了设定阈值时,便通过进程控制的方式将使用的内存控制在阈值范围之内; 具体步骤如下 1)根据胖节点的物理内存和swap大小,设置适当的阈值; 2)获取系统当前内存与swap使用情况; 3)将当前系统内存与swap使用情况与阈值进行比较,若小于阈值范围则退出,若大于阈值范围则进入第4步; 4)利用Linux系统命令ps提取出当前系统正在运行的内存使用率等于或大于0.1%的普通用户进程,其中包括进程的ID号、用户、cpu使用率、内存使用率、实际运行时间、cpu运行时间、进程状态、执行命令; 5)根据进程控制策略选取目标进程,目前支持的进程控制策略包括3种 (1)选取当前占用内存资源最大的进程; (2)选取当前cpu运行时间最小的进程,即使用CPU计算资源最少的进程; (3)根据作业提交的时间,选取最后一个提交作业的进程; . 6 )将选取出的目标进程ki 11掉; 7)输出日志文件信息,告诉相应的用户其运行的作业被停止,以及停止的时间,停止的进程和进程相关的信息; 通过上述步骤,一个对胖节点上所有普通用户运行进程使用内存资源的控制流程完成,该过程以Shell脚本的形式实现,通过添加系统的计划任务使该脚本定时执行,从而形成一个对内存资源使用控制的闭环系统。
全文摘要
本发明提供了一种有效控制胖节点内存资源使用的方法。该方法利用Linux系统本身提供的工具对胖节点的内存资源使用情况进行定时监控,并采用一种闭环控制的模型将监控数据与设定的阈值进行比较,当内存使用率超过了设定的阈值时便通过进程控制的方式以防止由于内存使用过量而导致胖节点宕机,从而避免造成大量计算资源的浪费。该方法有效的保证了胖节点资源的合理、有效利用,并且可以根据用户的现实应用情况进行多种控制策略调整,在资源最大化利用的同时减少了用户对系统资源使用的复杂度,使系统更便捷、更稳定、更高效的运行。
文档编号G06F9/50GK102662762SQ201210088790
公开日2012年9月12日 申请日期2012年3月30日 优先权日2012年3月30日
发明者徐斌, 王渭巍 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1