本帖最后由 yuwenge 于 2015-6-22 16:46 编辑

问题导读

1.如何查看CPU利用率?

2.进程CPU利用率如何查看?

3.内存利用率需要查看哪个文件?

CPU利用率

/proc/stat文件里包含系统cpu使用情况,2-8列对应的CPU消耗含义是用户态消耗(user)、用户态nice消耗(nice)、内核态消耗(sys)、空闲时间(idle)、等待IO消耗(iowait)、硬件中断消耗(hardirq)、软中断消耗(softirq)。(man proc)

[mw_shl_code=bash,true]$ cat /proc/stat

cpu  2339504870 2641995 716723851 70316975284 7219566 328971 304057999 0 0

cpu0 211214357 275710 57674236 2778331292 3688175 10421 12279511 0 0

cpu1 140100049 278788 47142039 2857686940 180452 32028 14960093 0 0

...[/mw_shl_code]

要计算t1~t2时间内系统的cpu利用率,需要在t1、t2时刻分别采集cpu使用信息

[mw_shl_code=bash,true]t1_all = t1(user + nice + sys + idle + iowait + hardirq + sortirq)

t1_used = t1(user + nice + sys + iowait + hardirq + sortirq)

t2_all = t2(user + nice + sys + idle + iowait + hardirq + sortirq

t2_used = t2(user + nice + sys + iowait + hardirq + sortirq)

cpu_usage = (t2_used - t1_used) / (t2_all - t1_all)[/mw_shl_code]

进程CPU利用率

/proc/$pid/stat文件里包含某个进程的cpu使用信息,14、15、16、17列对应进程用户态消耗(user)、内核态消耗(sys)、用户态等待子进程的消耗(user_child)、内核态等待子进程的消耗(sys_child)。

[mw_shl_code=bash,true]$cat /proc/24076/stat

24076 (redis-server) S 1 24076 24076 0 -1 4202560 5755 147 0 0 1864 3298 0 0 20 0 3 0 70238536 159555584 5145 18446744073709551615 1 1 0 0 0 0 0 4097 17610 18446744073709551615 0 0 17 4 0 0 0 0 0[/mw_shl_code]

t1、t2时刻分别采集/proc/stat、/proc/$pid/stat,获取总的cpu消耗,以及进程的cpu消耗

[mw_shl_code=bash,true]t1_all = t1(user + nice + sys + idle + iowait + hardirq + sortirq)

t1_pid = t1(user + sys + user_child + sys_child)

t2_all = t2(user + nice + sys + idle + iowait + hardirq + sortirq)

t2_pid = t2(user + sys + user_child + sys_child)

pid_cpu_usage = (t2_pid - t1_pid) / (t2_all - t1_all)[/mw_shl_code]

内存利用率

/proc/meminfo文件里包含系统内存使用信息

[mw_shl_code=bash,true]$ cat /proc/meminfo

MemTotal:       198450624 kB

MemFree:        184950332 kB

mem_usage = 1 - MemFree / MemTotal[/mw_shl_code]

系统load

/proc/uptime的前3列包含了最近1min、5min、15min系统的平均load(正在运行或等待IO的进程数,进程state为R或D)

[mw_shl_code=bash,true]$cat /proc/loadavg

0.02 0.09 0.08 1/2362 855[/mw_shl_code]

网卡流量信息

/proc/net/dev包含所有网卡的流量信息,第1、2、10、11列分别代表网卡当前接受字节数(recv_bytes)、接受包个数(recv_packets)、发送字节数(send_bytes)、发送个数(send_packets)。

[mw_shl_code=bash,true]$cat /proc/net/dev

Inter-|   Receive                                                |  Transmit

face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls     carrier compressed

lo:25047448261 37947893    0    0    0     0          0         0 25047448261 37947893    0    0    0     0       0          0

eth0:2566932970457 7620547348    0    0    2     0          0     62732 728662220296 6145797287    0    0    0     0       0          0

eth1:2023304550582 7268848253    0    0    0     0          0     77924 742443231982 6129090809    0    0    0     0       0          0[/mw_shl_code]

t1~t2时间内的平均流量为

[mw_shl_code=bash,true]avg_recv_bytes = (t2_recv_bytes - t1_recv_bytes) / (t2 - t1)

avg_send_bytes = (t2_send_bytes - t1_send_bytes) / (t2 - t1)[/mw_shl_code]

磁盘(文件系统)空间信息

通过statfs系统调用可获取当前文件系统的空间占用情况

[mw_shl_code=bash,true]struct statfs {

long    f_type;     /* type of file system (see below) */

long    f_bsize;    /* optimal transfer block size */

long    f_blocks;   /* total data blocks in file system */

long    f_bfree;    /* free blocks in fs */

long    f_bavail;   /* free blocks avail to non-superuser */

...

};

disk_usage = 1 - f_bfree / f_blocks[/mw_shl_code]

磁盘读写信息

/proc/diskstats包含磁盘的IO信息,第4、6、8、10、13列分别为当前磁盘读次数(read),磁盘读扇区数(read_sec)、磁盘写次数(write)、磁盘写扇区数(write_sec)、磁盘IO毫秒数(io_ms)。

[mw_shl_code=bash,true]$cat /proc/diskstats

8       4 sda4 3 0 12 8 0 0 0 0 0 8 8

8       5 sda5 87928 55284 2842138 17349 1230958 7932106 73380432 4931382 0 503343 4947504

8      16 sdb 393 35 3418 37 17 2 152 0 0 37 37

8      32 sdc 788 114 10690 10132 14550036 226568635 1929026928 623148463 0 4917530 623154797[/mw_shl_code]

t1~t2时间内磁盘平均读写次数、扇区数、IO利用率计算如下

[mw_shl_code=bash,true]avg_read = (t2_read - t1_read) / (t2 - t1)

avg_read_sec = (t2_read_sec - t1_read_sec) / (t2 - t1)

avg_write = (t2_write - t1_write) / (t2 - t1)

avg_write_sec = (t2_write_sec - t1_write_sec) / (t2 - t1)

io_util = (t2_io_ms - t1_io_ms) / (t2 - t1) (t1~t2时间段内IO的时间百分比)[/mw_shl_code]

linux 采集cpu 内存,Linux环境获取(cpu、内存、网卡流量等)系统性能数据相关推荐

  1. Linux小知识---利用Snmp远程获取CPU,内存和磁盘使用率

    知识点回顾 <网络协议学习-SNMP> 前面写了一篇Snmp协议的知识点文章,今天要利用这些知识点,再加一些shell编程知识点,实现一个利用shell脚本,远程获取某个Agent的CPU ...

  2. c语言实现linux下的top命令来获取cpu利用率_有用的一篇笔记,linux 调优各项监控指标...

    自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问题.由于微服务以及容器的流行,现在已经可以很方便的使用 K8s + prometheus + grafana + alert 的方式进行 ...

  3. linux cpuid指令,通过CPUID指令获取CPU信息

    1.简介 在计算机领域中需要用到CPU信息的地方有很多.比如,在可信计算中,需要收集终端的软硬件的完整性信息,其中就包含CPU的信息:再比如,一些加密软件需要绑定CPU的某些信息,去生成加密密钥.本文 ...

  4. android如何获取进程占用的内存大小,Android获取cpu使用率,剩余内存和硬盘容量

    1.内存信息 在proc/meminfo下有详细的内存使用情况,我这里获取的内存信息就是从这个文件里获取的.获取到详细的内存信息后根据我自己的需求,从bufferdreader中单独抽取出来了剩余的内 ...

  5. 华为服务器怎么查看cpu型号,华为2288HV5获取cpu、内存、存储等参数信息

    华为2288HV5获取cpu.内存.存储等参数信息,采用redfish协议.华为的技术支撑团队很给力,获取资料很全面,讲解也很到位.所以第一个redfish案例就是用华为. import reques ...

  6. python 获取内存使用率_Python获取CPU使用率、内存使用率、网络使用状态 | 学步园...

    注:需要安装psutil库 源代码如下: #!/usr/bin/env python # # $Id: iotop.py 1160 2011-10-14 18:50:36Z g.rodola@gmai ...

  7. linux 采集 bash 脚本,Linux shell脚本攻略(2)

    1.数组与关联数组 数组使用整数作为索引,关联数组使用字符串作为数组索引. 1.数组的定义: arr=(1 2 3) 或者:arr[0]=1;arr[1]=2;arr[2]=3 获取元素  echo ...

  8. C#net6实现Linux系统下修改IP地址、修改系统时间、获取内存信息、获取磁盘信息、重启系统

    C#net6实现Linux系统下修改IP地址.修改系统时间.获取内存信息.获取磁盘信息.重启系统 背景 项目背景 实现思路 代码实现 背景 随着微软.net core的出现,C#程序实现跨平台不在困难 ...

  9. VB.NET工作笔记015---vb.net获取cpu使用率,内存使用率_未能找到具有指定类别名“Processor”、计数器名“% Processor Time”的性能计数

    vb.net获取系统CPU的使用率,和内存的使用率 获取cpu的使用率,用: performanceCounter1这个控件,一定要记得,写上Processor 这个: counterName cat ...

  10. Java获取任务管理器内存、各磁盘内存、CPU使用率数据

    文章目录 1.获取任务管理器运行内存.各磁盘内存 2.获取CPU使用率 1.获取任务管理器运行内存.各磁盘内存 1.代码实现: /*** 获取内存使用情况*/public static void ge ...

最新文章

  1. Python使用QRCode模块生成二维码
  2. robotframework使用RequestsLibrary进行http接口测试
  3. matlab条件判断配合输出
  4. AWS - EC2 Micro Instance 添加 SWAP 分区
  5. ITK:Mersenne Twister随机整数生成器
  6. 思科IPS系统的bypass mode
  7. 2个字符串相等 swift_Swift快速入门(一)之 Swift基础语法
  8. 数学与编程——统计与编程(均匀分布仿真高斯分布)
  9. 【数学建模】预测模型——多元回归分析 SPSS实现
  10. unbuntu 安装nginx
  11. CSS--实心小圆点样式
  12. 布局之space-evenly兼容性问题
  13. EMV规范(五)——脱机数据认证
  14. Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od
  15. 微信移动UI设计规范
  16. 安卓手机和电脑之间传文件最方便的方法
  17. 能ping通ip但无法ping通域名和localhost //ping: bad address 'www.baidu.com'
  18. 基于HTML旅游酒店主题网页项目的设计与实现——度假酒店预订网站(5页面)HTML+CSS+JavaScript...
  19. 2021-09-10
  20. <XII>无人值守安装脚本

热门文章

  1. Testing on block size in R3AC1
  2. 使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)
  3. 一个用JavaScript生成思维导图(mindmap)的github repo
  4. python 量化交易 框架 开源_Hikyuu首页、文档和下载 - 基于 C++/Python 的开源量化交易研究框架 - OSCHINA - 中文开源技术交流社区...
  5. python3编码问题_python3编码问题
  6. echarts php 数据处理,PHP+echarts读取地图数据
  7. 动态加载___import__动态加载技术
  8. vue计算多列和_解决vue 表格table列求和的问题
  9. springmvc dao怎么可以不写实现类_SpringMVC(一)细聊ContextLoaderListener 是怎么被加载的...
  10. python 文件处理软件_Python —— 文件处理