一种基于Linux的CPU和内存使用率收集的方法技术

技术编号:10824772 阅读:65 留言:0更新日期:2014-12-26 13:31
本发明专利技术公开了一种基于Linux的CPU和内存使用率收集的方法,所述方法首先收集CPU或内存的信息,然后根据所收集的信息,通过公式分别计算出CPU或内存的使用率,其中CPU的使用率为:用执行用户系统状态的时间除以总的时间,内存使用率为:1-空闲使用率。本发明专利技术具有平均可控采样,科学计算,多路支持以及快速多台同时部署等特点。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,所述方法首先收集CPU或内存的信息,然后根据所收集的信息,通过公式分别计算出CPU或内存的使用率,其中CPU的使用率为:用执行用户系统状态的时间除以总的时间,内存使用率为:1-空闲使用率。本专利技术具有平均可控采样,科学计算,多路支持以及快速多台同时部署等特点。【专利说明】—种基于Linux的CPU和内存使用率收集的方法
本专利技术涉及计算机
,具体涉及,应用于服务器日常巡检工作中,实现服务器运行状态的自动收集、计算工作。
技术介绍
服务器巡检能够及时发现服务器的隐患,便于改善和优化服务器的性能。在巡检过程中服务人员需要分别收集服务器系统的CPU使用率,内存使用率,磁盘使用率信息,通过这些信息进行服务器系统的健康状态评估,该评估结果帮助服务器维护人员实时获得当前服务器的运行情况,并针对可能出现的CPU占用率过大,磁盘即将写满等问题及时做出处理。 随着云计算、大数据的普及和应用,用户对服务器的稳定性、可靠性的要求和平均无故障运行时间(MTBF)要求越来越高,并且随着数据膨胀带来的服务器数量的激增,传统的方法只能每次一台进行系统状态的查看,并且只能通过人为估计的方法来获得某一时间点的CPU使用率和内存使用率。如何快速,准确的获得大量服务器的运行状态,是摆在所有服务器维护人员面前的难题。
技术实现思路
本专利技术要解决的技术问题是:由于大多数以Linux为操作系统的服务器是不安装图形界面的,只能通过复杂的指令进行服务器当前数据的收集,目前的收集工作主要有两个问题:1.收集工作往往是系统在某个时间点的运行状态,无法反映出系统在某一阶段的平均运行状态。 2.Linux系统中的CPU使用率以及内存使用率是通过相应的公式进行计算获得,现场很难通过计算来获得准确的数据。 为了避免这种情况的出现,简化维护成本,本申请提出了。通过自动脚本的运行,可以准确的或者系统在某一时间段内的CPU使用率和内存使用率的平均值,客观且全面的反映系统的当前状态。具有平均可控采样,科学计算,多路支持以及快速多台同时部署等特点。 本专利技术所采用的技术方案为:,所述方法首先收集CPU或内存的信息,然后根据所收集的信息,通过公式分别计算出CPU或内存的使用率,其中CPU的使用率为:用执行用户系统状态的时间除以总的时间,内存使用率为:1_空闲使用率。 所述CPU使用率收集方法包括步骤如下:I)获得CPU信息,Linux中CPU信息存放在/proc/stat文件中,包括参数如下:user:从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies),不包含nice 值为负进程,I jiffies=0.01 秒; nice:从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies);system:从系统启动开始累计到当前时刻,核心时间(单位:jiffies);idle:从系统启动开始累计到当前时刻,除硬盘1等待时间以外其它等待时间(单位:jiffies);1wait:从系统启动开始累计到当前时刻,硬盘1等待时间(单位:jiffies); irq:从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies); softirq:从系统启动开始累计到当前时刻,软中断时间(单位:jiffies);其中每一个参数,都表示一个CPU的当前状态;2)计算CPU使用率,在Linux的内核中,有一个全局变量:jiffies,jiffies代表时间。它的单位随硬件平台的不同而不同。系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目。这样jiffies的单位就是I/HZο Intel平台jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔了。每个CPU时间片,jiffies都要加I。CPU的利用率就是用执行用户系统状态的Jiffies除以总的jiffies来表示。 CPU计算方法: CPUTOTAL=user+system+nice+idle+1wait+irq+softirq SYS_IDLE=idle CPU_USAGE=(SYS_IDLE2-SYS_IDLE1)/(CPU_T0TAL2-CPU_T0TALI)*100%所述内存使用率收集方法包括步骤如下:I)获得内存信息,Linux内存信息存放在/proc/meminfo中,包括参数:MemTotal:所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小); MemFree:LowFree与HighFree的总和,被系统留着未使用的内存;Buffers:用来给文件做缓冲大小;Cached:被高速缓冲存储器(cache memory)用的内存的大小;为求的机器在一段时间内的平均内存使用率,这里在10秒内每秒进行一次内存采样。 2)计算内存使用率,空闲内存计算方法:当Cached大于MemTotal时,空闲内存MEM_FREE 为 MemFree,其余情况下,MEM_FREE = MemFree + Cached + Buffers,则内存使用率 MEM_USAGE = 1- MEM_FREE / MemTotal程序代码: If ( Cached > MemTotal ) MEM_FREE = MemFree Else MEM_FREE = MemFree + Cached + BuffersMEM_USAGE = 1- MEM_FREE / MemTotal在所述收集过程开始的准备工作中,将上述编写的程序脚本拷到某目录下,这个目录就是后续收集到的信息文件所在目录,得到需要的信息就可以直接到此目录查看,本专利技术的易用性得以体现。 所述程序能够自动识别到当前服务器的CPU数量,并且能够对每个CPU进行单独信息收集。通过设置CPUTestTime参数来定义CPU使用率采样次数,采样越多数据反映的越准确,但所占用的事件也越长。 CPU使用率计算代码如下: for ((m=0; m〈$CPU—NUM; m++)) do { temp—row=$m+2 unset AVE—Disp—SYS—Rate echo -n “ CPU$m Testing.” for ((j+0;j<$CPUTestTime;j++)) do { temp—row—p=,,$ {temp—row} p” CPULOG—1=$(cat /proc/stat | grep ;cpu,| sed - n $temp_row_p | awk ; {print$2” “$3” “$4” “$5” “$6” “$7” “$8”},) SYS—IDLE—1=$(echo $CPUL0G_1 | awk ‘{print $4},) Total—l=$echo $CPUL0G_1 | awk “ {print $l+$2+$3+$4+$5+$6+$7},)for ((n=0;n<x;n++))doecho - n ” sleep I done CPULOG—2=$ (cat /proc/stat | grep ;cpu,| sed - n 本文档来自技高网...

【技术保护点】
一种基于Linux的CPU和内存使用率收集的方法,其特征在于:所述方法首先收集CPU或内存的信息,然后根据所收集的信息,通过公式分别计算出CPU或内存的使用率,其中CPU的使用率为:用执行用户系统状态的时间除以总的时间,内存使用率为:1‑空闲使用率。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐珂任华进
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

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

1