linux下如何获取cpu的利用率

linux下如何获取cpu的利用率"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。

它以文件系统的方式为访问系统内核数据的操作提供接口。

用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。

"这里将介绍如何从/proc文件系统中获取与防火墙相关的一些性能参数,以及如何通过/proc文件系统修改内核的相关配置。

1、从/proc文件系统获取相关的性能参数cpu使用率:/proc/stat内存使用情况:/proc/meminfo网络负载信息:/proc/net/dev相应的计算方法:(摘自:什么是proc文件系统,见参考资料)(1)处理器使用率(2)内存使用率(3)流入流出数据包(4)整体网络负载这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。

如里有问题或对要提取的数据不太清楚,可以使用man proc来查看proc文件系统的联机手册。

(1)处理器使用率这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。

它们均位于/proc/stat文件的第一行。

CPU的利用率使用如下公式来计算。

CPU利用率= 100 *(user + nice + system)/(user + nice + system + idle)(2)内存使用率这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。

内存使用百分比= 100 * (cmem / umem)(3)网络利用率为了得到网络利用率的相关数据,需要从/proc/net/dev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。

它们都位于这个文件的第四行。

性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。

利用上述数据计算出网络的平均负载,方法如下:平均网络负载= (输出的数据包+流入的数据包) / 22. 通过/proc文件系统调整相关的内核配置允许ip转发/proc/sys/net/ipv4/ip_forward禁止ping /proc/sys/net/ipv4/icmp_echo_ignore_all可以在命令行下直接往上述两个“文件”里头写入"1"来实现相关配置,如果写入"0"将取消相关配置。

不过在系统重启以后,这些配置将恢复默认设置,所以,如果想让这些修改生效,可以把下面的配置直接写入/etc/profile文件,或者其他随系统启动而执行的程序文件中。

echo 1 > /proc/sys/net/ipv4/ip_forwardecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all如果需要获取其他的性能参数,或者需要对内核进行更多的配置,可以参考下面链接中的proc文件系统介绍,也可以直接通过man proc查看相关的信息。

参考资料和相关链接[1] 什么是proc文件系统/u1/37836/showart_304248.html[2] Linux下如何获取cpu的使用率/t/20060701/23/4855045.html[3] Exploring the /proc/net/ Directory/pub/a/linux/2000/11/16/LinuxAdmin.html?pa ge=1[4] /proc/net introduction/docs/manuals/enterprise/RHEL-4-Manual/en-US/Refe rence_Guide/s2-proc-dir-net.html[5] 使用ulimit和proc去调整系统参数/post/73.htm注:文件里面是一个增量,每过一个时间间隔对应的项使用了CPU都会有增加,要算百分比,得用上上一次的状态值.这里计算cpu使用率是有问题的,需要使用上一状态的值来计算。

返回elf 发表于 2007-11-16 09:06#4正确的计算方法是,等上一个时间:1、记录某个时刻cpu的使用情况2、等上一个时间段3、再记录此刻的cpu使用情况4、计算总的时间片把第一次的所有cpu使用情况求和,得到j1把第二次的所有cpu使用情况求和,得到j2j2-j1得到这个时间段的所有时间片即total=j2-j1=第二次的所有列的和-第一次的所有列的和5、计算idle时间idle对应第五列的数据,用第二次的减去第一次的即可idle=第二次的第五列-第一次的第五列6、计算cpu使用率rate=(total-idle)/total见:/blog/article.php?tid_1379.html我们在搞性能测试的时候,对后台服务器的CPU利用率监控是一个常用的手段。

服务器的CPU利用率高,则表明服务器很繁忙。

如果前台响应时间越来越大,而后台CPU利用率始终上不去,说明在某个地方有瓶颈了,系统需要调优。

这个是即使不懂技术的人都容易理解的事情。

上面理解对吗?我个人觉得不十分准确。

这个要看后台你测试的进程是什么类型的。

如果是计算密集型的进程,当前端压力越来越大的时候,很容易把CPU利用率打上去。

但是如果是I/O网络密集型的进程,即使客户端的请求越来越多,但是服务器CPU不一定能上去,这个是你要测试的进程的自然属性决定的。

什么是CPU利用率呢?在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。

从计算机加电开始,CPU就一直忙个不停,所以CPU的利用率始终是100%。

当没有用户进程需要执行的时候,CPU就执行系统缺省的空闲进程。

我们所指的CPU利用率是指CPU 执行非系统空闲进程的时间/ CPU总的执行时间。

在Linux的内核中,有一个全局变量:Jiffies。

Jiffies代表时间。

它的单位随硬件平台的不同而不同。

系统里定义了一个常数HZ,代表每秒种最小时间间隔的数目。

这样jiffies的单位就是1/HZ。

Intel平台jiffies的单位是1/100秒,这就是系统所能分辨的最小时间间隔了。

每个CPU时间片,Jiffies都要加1。

CPU的利用率就是用执行用户态+系统态的Jiffies除以总的Jifffies来表示。

在Linux系统中,CPU利用率的计算来源在/proc/stat文件,这个文件的头几行记录了每个CPU的用户态,系统态,空闲态等状态下的不同的Jiffies,常用的监控软件就是利用/proc/stat里面的这些数据来计算CPU的利用率的。

包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。

/proc/stat/[work@builder ~]$ cat /proc/statcpu 432661 13295 86656 422145968 171474 233 5346cpu0 123075 2462 23494 105543694 16586 0 4615cpu1 111917 4124 23858 105503820 69697 123 371cpu2 103164 3554 21530 105521167 64032 106 334cpu3 94504 3153 17772 105577285 21158 4 24intr 1065711094 1057275779 92 0 6 6 0 4 0 3527 0 0 0 70 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7376958 0 0 0 0 0 0 0 1054602 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0ctxt 19067887btime 1139187531processes 270014procs_running 1procs_blocked 0输出解释CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思(以第一行为例)为:参数解释user (432661) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies),不包含nice值为负进程。

1jiffies=0.01秒nice (13295) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)system (86656) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)idle (422145968) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)iowait (171474) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies),irq (233) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)softirq (5346) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)CPU时间=user+system+nice+idle+iowait+irq+softirq“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。

“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。

“btime”给出了从系统启动到现在为止的时间,单位为秒。

“processes (total_forks) 自系统启动以来所创建的任务的个数目。

“procs_running”:当前运行队列的任务的数目。

合集下载

linux cpu使用率计算方法

linux cpu使用率计算方法

linux cpu使用率计算方法Linux操作系统中,CPU使用率是一个重要的性能指标,它可以帮助我们了解系统的负载情况,判断系统的运行状态是否正常。

那么,如何计算Linux系统中的CPU使用率呢?CPU使用率的计算方法可以分为两个部分:采样和计算。

采样是指获取CPU使用情况的数据,计算是指将采样的数据进行处理,得出CPU使用率的结果。

下面我们分别介绍一下采样和计算的具体方法。

1. 采样方法Linux系统中,可以通过多种方式采样CPU使用情况的数据。

常用的方法有以下几种:(1)/proc/stat文件/proc/stat是一个虚拟的文件系统,它提供了各种系统信息的统计数据。

其中,CPU使用情况的数据可以从第一行的“cpu”行中获取。

具体来说,/proc/stat文件中“cpu”行的各个字段含义如下: user:用户态CPU时间,不包括nice值为负的进程nice:nice值为负的进程所占用的CPU时间system:内核态CPU时间idle:空闲CPU时间iowait:IO等待时间irq:硬中断时间softirq:软中断时间steal:虚拟机偷取的CPU时间guest:虚拟机运行的CPU时间guest_nice:nice值为负的虚拟机运行的CPU时间(2)top命令top命令可以实时显示系统的进程和CPU使用情况。

在top命令输出的信息中,CPU使用率可以从第三行中的“%CPU”字段中获取。

(3)sar命令sar命令可以采样系统各项资源的使用情况,包括CPU使用率。

具体命令如下:sar -u 1 10表示每秒采样一次,共采样10次。

2. 计算方法一旦获取了CPU使用情况的数据,就可以进行计算了。

计算方法如下:(1)计算总的CPU使用时间可以通过/proc/stat文件中“cpu”行中的user、nice、system、idle、iowait、irq、softirq、steal、guest和guest_nice字段,计算出从系统启动开始到现在的总CPU使用时间。

查看Linux系统内存、CPU、磁盘使用率和详细信息

查看Linux系统内存、CPU、磁盘使用率和详细信息

查看Linux系统内存、CPU、磁盘使⽤率和详细信息⼀、查看内存占⽤1、free# free -m以MB为单位显⽰内存使⽤情况[root@localhost ~]# free -mtotal used free shared buff/cache availableMem: 118521250866841019349873Swap: 601506015# free -h以GB为单位显⽰内存使⽤情况[root@localhost ~]# free -htotal used free shared buff/cache availableMem: 11G 1.2G 8.5G 410M 1.9G 9.6GSwap: 5.9G 0B 5.9G# free -t以总和的形式查询内存的使⽤信息[root@localhost ~]# free -ttotal used free shared buff/cache availableMem: 1213733212853448870628420268198136010105740Swap: 616038006160380Total: 18297712128534415031008# free -s 5周期性的查询内存使⽤信息每5秒执⾏⼀次命令[root@localhost ~]# free -s 5total used free shared buff/cache availableMem: 1213733212807968875008420268198152810110136Swap: 616038006160380解释:Mem:内存的使⽤情况总览表(物理内存)Swap:虚拟内存。

即可以把数据存放在硬盘上的数据shared:共享内存,即和普通⽤户共享的物理内存值buffers:⽤于存放要输出到disk(块设备)的数据的cached:存放从disk上读出的数据total:机器总的物理内存used:⽤掉的内存free:空闲的物理内存注:物理内存(total)=系统看到的⽤掉的内存(used)+系统看到空闲的内存(free)2、查看某个pid的物理内存使⽤情况# cat /proc/PID/status | grep VmRSS[root@localhost ~]# pidof nginx2732727326[root@localhost ~]#[root@localhost ~]# cat /proc/27327/status | grep VmRSSVmRSS: 2652 kB[root@localhost ~]#[root@localhost ~]# cat /proc/27326/status | grep VmRSSVmRSS: 1264 kB[root@localhost ~]#[root@localhost ~]# pidof java1973[root@localhost ~]# cat /proc/1973/status | grep VmRSSVmRSS: 1166852 kB由上⾯可知,nginx服务进程的两个pid所占物理内存为"2652+1264=3916k"3、查看本机所有进程的内存占⽐之和# cat mem_per.sh[root@localhost ~]# cat mem_per.sh#!/bin/bashps auxw|awk '{if (NR>1){print $4}}' > /opt/mem_listawk '{MEM_PER+=$1}END{print MEM_PER}' /opt/mem_list[root@localhost ~]#[root@localhost ~]# chmod755 mem_per.sh[root@localhost ~]#[root@localhost ~]# sh mem_per.sh64.4[root@localhost ~]#脚本配置解释:ps -auxw|awk '{print $3}' 表⽰列出本机所有进程的cpu利⽤率情况,结果中第⼀⾏带"%CPU"字符ps -auxw|awk '{print $4}' 表⽰列出本机所有进程的内存利⽤率情况,结果中第⼀⾏带"%MEM"字符ps auxw|awk '{if (NR>1){print $4}} 表⽰将"ps auxw"结果中的第⼀⾏过滤(NR>1)掉,然后打印第4⾏⼆、查看CPU使⽤情况1、toptop后键⼊P看⼀下谁占⽤最⼤# top -d 5周期性的查询CPU使⽤信息每5秒刷新⼀次top - 02:37:55 up 4 min, 1 user, load average: 0.02, 0.10, 0.05Tasks: 355 total, 1 running, 354 sleeping, 0 stopped, 0 zombie%Cpu(s): 3.0 us, 2.8 sy, 0.0 ni, 94.2id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st# us:表⽰⽤户空间程序的cpu使⽤率(没有通过nice调度)# sy:表⽰系统空间的cpu使⽤率,主要是内核程序。

查询 cpu 工作时间利用率的命令

查询 cpu 工作时间利用率的命令

一、概述CPU(Central Processing Unit,中央处理器)是计算机中最核心的部件之一,负责处理计算机中的各种数据和指令。

CPU的工作时间利用率是衡量CPU工作效率的重要指标之一,通过查询CPU的工作时间利用率可以了解CPU的工作状态和性能表现,从而为系统性能优化和问题排查提供重要参考。

本文将介绍一些常用的查询CPU工作时间利用率的命令,帮助读者更好地了解和监控CPU的工作状态。

二、Windows系统下查询CPU工作时间利用率的命令在Windows系统下,可以使用以下命令来查询CPU的工作时间利用率:1. 使用Task Manager(任务管理器)来查询CPU利用率:- 打开任务管理器(可以通过Ctrl + Shift + Esc组合键快捷打开),在“性能”标签页下查看CPU利用率图表和数据;- 通过“进程”标签页可以看到各个进程的CPU占用情况,帮助定位CPU占用高的进程。

2. 使用WMIC(Windows Management Instrumentation Command-line)命令来查询CPU利用率:- 在命令提示符或Powershell中输入以下命令:wmic cpu get loadpercentage;- 运行命令后会返回当前CPU的工作时间利用率百分比。

3. 使用Performance Monitor(性能监视器)来查询CPU利用率: - 打开性能监视器(可以在“控制面板” -> “管理工具” -> “性能监视器”中找到),在“监视器”下选择“性能监视器”;- 选择“性能对象”中的“处理器”选项,可以看到CPU利用率的实时数据。

以上是在Windows系统下查询CPU工作时间利用率的常用命令,读者可以根据需求和习惯选择适合自己的方式进行查询。

三、Linux系统下查询CPU工作时间利用率的命令在Linux系统下,可以使用以下命令来查询CPU的工作时间利用率:1. 使用top命令来查询CPU利用率:- 在终端中输入top命令,会显示出系统的实时进程信息和CPU利用率;- 使用q键可以退出top命令的实时显示。

linuxcpu常用命令

linuxcpu常用命令

linuxcpu常用命令在Linux系统中,有许多用于查看和管理CPU信息的常用命令。

以下是一些常见的Linux CPU相关命令:1. top:用于实时监视系统的性能情况,包括CPU的使用率、进程信息等。

在终端中输入`top`即可启动。

2. htop:类似于top,但提供了更多的交互式界面和功能。

需要先安装,然后在终端中输入`htop`启动。

3. uptime:显示系统的运行时间以及平均负载。

在终端中输入`uptime`即可查看。

4. cat /proc/cpuinfo:查看CPU的详细信息,包括型号、频率、核心数等。

在终端中输入该命令即可。

5. lscpu:以更友好的方式显示CPU信息,包括架构、型号、频率、核心数等。

在终端中输入`lscpu`即可查看。

6. mpstat:用于显示每个CPU的使用率和其他性能数据。

需要安装sysstat 包,然后在终端中输入`mpstat`启动。

7. ps:显示当前运行的进程信息,可以包括进程的CPU使用率等。

在终端中输入`ps aux`查看全部进程信息。

8. pidstat:提供有关每个进程的CPU使用率等信息。

需要安装sysstat包,然后在终端中输入`pidstat`启动。

9. nmon:提供了全面的系统性能监控,包括CPU、内存、磁盘等信息。

需要安装nmon包,然后在终端中输入`nmon`启动。

10. sar:提供了历史性能数据的报告,可以用于分析系统的CPU利用率等信息。

需要安装sysstat包,然后在终端中输入`sar`查看报告。

这些命令可以帮助你监控和管理Linux系统中的CPU性能。

根据你的需求,选择适合的命令来获取所需的信息。

linux top命令 cpu总占用率计算

linux top命令 cpu总占用率计算

linux top命令cpu总占用率计算在Linux中,使用top命令查看系统状态时,可以看到每个进程的CPU占用率。

要计算CPU总占用率,可以使用以下方法:1. 使用top命令:当你在Linux上打开终端并输入top命令时,你将看到一个动态更新的屏幕,其中显示了系统中各个进程的资源占用情况。

在顶部,你会看到一个标题栏,其中包含各种系统统计信息,如“Tasks”(任务)、“Cpu(s)”(CPU)、“Mem”(内存)和“Swap”(交换空间)。

要查看CPU总占用率,请关注标题栏中与“Cpu(s)”相关的列。

该列会显示如下信息:us:用户空间占用的CPU百分比。

sy:系统空间占用的CPU百分比。

ni:更改过优先级的进程占用的CPU百分比。

id:空闲的CPU百分比。

wa:等待I/O操作的CPU百分比。

hi:处理硬件中断的CPU百分比。

si:处理软件中断的CPU百分比。

st:虚拟化环境中被偷走的CPU时间百分比。

要计算CPU总占用率,你需要将“us”和“sy”列的值相加。

例如,如果“us”是40%,而“sy”是30%,那么CPU总占用率就是70%。

2. 注意:这只是显示在top命令输出中的所有进程的总计值,它并不是系统作为一个整体的CPU使用率。

如果有大量用户空间和系统空间的进程同时运行,总计值可能会很高。

“us”和“sy”列表示的是进程级的CPU占用率,而实际的系统级CPU占用率可能受到其他因素的影响,如内核线程、I/O等待等。

3. 其他工具:除了top命令之外,还有许多其他工具可以帮助你监视和管理Linux系统上的性能,如htop、glances等。

这些工具可能提供更多关于CPU和其他资源使用情况的详细信息。

请注意,这些工具和命令可能需要root权限才能完全访问系统信息。

linux top 计算进程 cpu 使用率的原理

linux top 计算进程 cpu 使用率的原理

linux top 计算进程cpu 使用率的原理
Linux中的top命令用于显示系统的实时性能信息,包括CPU的使用率。

top命令计算进程CPU使用率的原理主要基于两个指标:累计运行时间和累计用户时间。

top命令每隔一定时间(默认1秒)更新一次进程的CPU使用情况。

在更新时,top命令会计算每个进程的累计运行时间和累计用户时间。

累计运行时间表示进程自启动以来所经过的时间,而累计用户时间表示进程在CPU上执行的时间。

CPU使用率的计算公式如下:
CPU使用率= 累计用户时间/ 累计运行时间* 100%
需要注意的是,top命令显示的CPU使用率可能超过100%。

这是因为在多核CPU环境下,一个进程可以同时使用多个CPU核心,因此它的CPU使用率可能会超过100%。

在这种情况下,CPU使用率超过100%表示该进程在所有核心上的总运行时间超过了系统总运行时间。

此外,在top命令中,CPU使用率是根据上次更新以来的时间来计算的。

因此,在短时间内,进程的CPU使用率可能会出现较大的波动。

总之,Linux top命令计算进程CPU使用率的原理是根据进程的累计用户时间和累计运行时间来计算的,用以反映进程在CPU上的使用情况。

Linux系统查看CPU使用率、内存使用率、磁盘使用率

Linux系统查看CPU使⽤率、内存使⽤率、磁盘使⽤率1、查看CPU使⽤率
1)top 命令
top命令可以看到总体的系统运⾏状态和cpu的使⽤率。

2、查看内存使⽤率
1)top命令
查看第四⾏: KiB Mem
内存使⽤率: used/ total
2)free命令
free 命令显⽰系统使⽤和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

共享内存将被忽略
1.命令格式:
free [参数]
2.命令参数:
-b 以Byte为单位显⽰内存使⽤情况。

-k 以KB为单位显⽰内存使⽤情况。

-m 以MB为单位显⽰内存使⽤情况。

-g 以GB为单位显⽰内存使⽤情况。

-o 不显⽰缓冲区调节列。

-s<间隔秒数> 持续观察内存使⽤状况。

-t 显⽰内存总和列。

-V 显⽰版本信息。

3、查看磁盘使⽤率
1)输⼊df命令
说明:磁盘使⽤率=(Used列数据之和)/(1k-blocks列数据之和)。

Linux查看CPU和内存使用情况查看jvm内存使用情况

Linux查看CPU和内存使用情况查看jvm内存使用情况在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。

在 CentOS 中,可以通过top 命令来查看 CPU 使用状况。

运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。

接下来是WTT为大家收集的Linux查看CPU和内存使用情况,欢迎大家阅读:Linux查看CPU和内存使用情况操作实例:在命令行中输入“top”即可启动 toptop 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

第一部分 -- 最上部的系统信息栏:第一行(top):“00:11:04”为系统当前时刻;“3:35”为系统启动后到现在的运作时间;“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU数目时,CPU 将比较吃力的负载当前系统所包含的进程;第二行(Tasks):“59 total”为当前系统进程总数;“1 running”为当前运行中的进程数;“58 sleeping”为当前处于等待状态中的进程数;“0 stoped”为被停止的系统进程数;“0 zombie”为被复原的进程数;第三行(Cpus):分别表示了 CPU 当前的使用率;第四行(Mem):分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。

通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

Linux下使用python调用top命令获得CPU利用率

Linux下使⽤python调⽤top命令获得CPU利⽤率本⽂定位:想通过python调⽤top命令获取cpu使⽤率但暂时没有思路的情况。

如果单纯为了获得cpu的利⽤率,通过top命令重定向可以轻松实现,命令如下:复制代码代码如下:top -bi > cpuHistory.log或复制代码代码如下:top -bi | tee cpuHistory.log这个就不解释了,不懂的朋友查询下top的帮助⽂档。

这⾥要实现的是通过python调⽤top命令,并获得cpu的利⽤率信息。

⽤过popen的朋友很快就能想到类似如下的代码(这个是我第⼀次写的代码,*_*):复制代码代码如下:#! /usr/bin/pythonimport os,timetime2sleep = 1.5while True:print os.popen('top -bi -n 1').read().split('\n')[2]time.sleep(time2sleep)原理看起来没错,可是跑起来就出问题了:cpu的idle值⼀直不变原因在于执⾏的命令“top -bi -n 1”:单独执⾏这个命令,你会发现输出结果中cpu的idle值就是⼀直不变的。

所以不能这样写……在终端执⾏“top -bi -n 2”命令,你会发现第⼆个值每次都在变化,这个就是我们想要结果。

考虑到时间问题,命令这样写会更好:“top -bi -n 2 -d 0.02”代码如下:复制代码代码如下:#! /usr/bin/python'''File : cpuRate.pyAuthor : MikeE-Mail : Mike_Zhang@'''import os,timetime2sleep = 2.5while True:print int(time.time()),print os.popen('top -bi -n 2 -d 0.02').read().split('\n\n\n')[1].split('\n')[2]time.sleep(time2sleep)执⾏效果如下:复制代码代码如下:$ ./cpuRate.py1328109437 Cpu(s): 10.0%us, 20.0%sy, 0.0%ni, 70.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st1328109441 Cpu(s): 0.0%us, 16.7%sy, 0.0%ni, 83.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st1328109444 Cpu(s): 0.0%us, 16.7%sy, 0.0%ni, 83.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st1328109447 Cpu(s): 12.5%us, 12.5%sy, 0.0%ni, 75.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st好,就这些了,希望对你有帮助。

linuxCPU使用率C语言实现

/*返回时间详情结构体*/ return cpu_stat; }
2 获取 linux 系统下内存使用率(C 实现)
1 获取 linux 系统下 CPU 使用率(C 实现)
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/time.h> /*
return usage; }
struct CPU_STAT get_cpu_stat(void) {
//将/proc/stat 数据缓存 char buffer[300]; memset(buffer,0,sizeof(buffer)); int fp = 0; char *p; struct CPU_STAT cpu_stat; /*打开/proc/stat 文件*/ fp = open("/proc/stat", O_RDONLY); /*读取内容到缓存区*/ read(fp, buffer, sizeof(buffer) - 1); close(fp); buffer[299] = '\0';
/*获取第一时间片段的处理器时间数据*/ cpu_old_stat = get_cpu_stat(); //处理器休眠(休眠的间隔非常关键,不同的间隔得到不同的处理器使用率) sleep(1); /*获取第二时间片段的处理器时间数据*/ cpu_cur_stat = get_cpu_stat();
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档