zoukankan      html  css  js  c++  java
  • linux系统/proc/stat信息与top的cup信息的联系及区别

    一、 /proc 目录

    Linux系统上的/proc目录是一种文件系统,即proc文件系统,与其它常见的文件系统不同的是,/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。

    二、/proc/stat与top的cpu信息

    1. /proc/stat

    该文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。(内核2.6.32-431版本)

    [root@harry proc]# cat /proc/stat
    cpu  638 0 1677 868357 2397 7 510 0 0
    cpu0 638 0 1677 868357 2397 7 510 0 0
    ...(后面省略)

    第一行的数值表示的是CPU总的使用情况,各数值的含义如下:

    参数

    解析(单位:jiffies)

    user(638)

    从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。

    nice(0)

    从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

    system(1677)

    从系统启动开始累计到当前时刻,处于核心态的运行时间

    idle(868357)

    从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间

    iowait(2397)

    从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)

    irq(7)

    从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)

    softirq(510)

    从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)

    steal(0)

    从系统启动开始累计到当前时刻,这是在虚拟环境中运行时在其他操作系统上花费的时间。(Since Linux 2.6.11)

    guest(0)

    从系统启动开始累计到当前时刻,在Linux内核的控制下为客户操作系统运行虚拟CPU的时间。(Since Linux 2.6.24)

    (jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)

    总的cpu时间:totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen  +  guest。

    可以看出,stat文件中记录的时间是从开机到当前时间积累的所有cpu时间。

    2. top的cpu信息

    输入top命令,输出如下:

    top - 00:09:46 up  2:55,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks:  88 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    ...(省略)

    Cup(s)那行的含义如下:

    0.3%us

    用户空间占用CPU百分比

    0.3%sy

    内核空间占用CPU百分比

    0.0%ni

    用户进程空间内改变过优先级的进程占用CPU百分比

    99.3%id

    空闲CPU百分比

    0.0%wa

    等待输入输出的CPU时间百分比

    0.0%hi

    硬中断(Hardware IRQ)占用CPU的百分比

    0.0%si

    软中断(Software Interrupts)占用CPU的百分比

    0.0%st

    在虚拟环境中运行时在其他操作系统上花费的时间

    可以看出,top中显示的cpu信息都是实时的各种参数占用的cpu百分比

    3. /proc/stat与top的cpu信息的联系与区别

    区别:/proc/stat文件显示的是从启动到当前时间,各种cup时间的累计值;而top则是显示实时的cpu使用情况。

    联系:top通过读取/proc/stat去计算cpu占用情况。

    /proc/stat 就像汽车仪表盘上的里程数,而top显示的cpu信息则是这辆车的速度。

    三、参考

    1. Linux中通过/proc/stat等文件计算Cpu使用率

    2. Linux /proc目录详解

    3. Linux: /proc/stat info is not consistent with top command

    4. TOP命令 详解CPU 查看多个核心的利用率按1

    5. Linux Top 命令解析

    (完)

  • 相关阅读:
    多线程与多进程(4)
    多线程与多进程(2)
    多线程与多进程(1)
    Python爬虫学习(二) ——————爬取前程无忧招聘信息并写入excel
    python学习之爬虫(一) ——————爬取网易云歌词
    str=str.replaceAll("[^a-zA-Z]+", ""); 与 str=str.replaceAll("^[a-zA-Z]+", ""); ^写在里面和写在外面有什么不同,为什么
    java中<T> T和T的区别?
    redis命令
    Linux压缩当前目录下的所有文件-解压
    正则
  • 原文地址:https://www.cnblogs.com/harrymore/p/9094898.html
Copyright © 2011-2022 走看看