/proc/stat 文件详细解释

/proc/stat 文件是 Linux 系统中一个动态的伪文件系统 /proc 下的文件,它提供了系统范围内的统计数据。这些统计大多是关于系统的CPU使用情况以及其他重要的运行时系统信息。下面详细解释 /proc/stat 中可能出现的信息:

该文件通常包含以下几种类型的行:

cpu - 这一行提供了所有CPU活动的总体统计信息。具体来说,它给出了不同类型的时间(单位:用户态时间),自系统启动以来在各类状态下CPU消耗的时间总量。

例如:

cpu 2255 34 2290 22625563 6290 127 456
这里是对数字所表示内容的解释:

user: 正常模式下运行的时间,不包括nice值为负进程。
nice: nice值为负的进程在用户模式下运行的时间。
system: 在核心态(kernel mode)下运行的时间。
idle: 空闲的时间。
iowait: 等待I/O完成的时间。
irq: 处理硬件中断的时间。
softirq: 处理软件中断的时间。
cpuN - 其中 N 是 CPU 核心的编号,从 0 开始。每个核心都有一个与上述 cpu 行格式相同的行,但只包含该核心的信息。

例如:

cpu0 1132 34 1441 11100346 3675 127 456
intr - 这一行显示自系统启动后发生的中断数量,第一个数值是自系统启动以来所有处理器上发生的所有中断的总和,随后的数值是每个特定中断的数量。

ctxt - 自系统启动以来CPU上下文切换的次数。

btime - 系统启动的时间(epoch time,单位为秒)。

processes - 自系统启动以来所创建的进程数量。

procs_running - 当前正在运行的进程数。

procs_blocked - 当前被阻塞的进程数。

softirq - 这一行显示自系统启动后软件中断发生的次数。与 intr 类似,第一个数值是所有处理器上所有软件中断的总和,随后的每个数值对应特定软件中断的数量。

下面是一个 /proc/stat 示例片段:

cpu 4705 0 5903 1362393 413 0 199 0 0 0
cpu0 1132 0 1441 341601 210 0 199 0 0 0
cpu1 3563 0 4451 1020079 202 0 0 0 0 0
intr 114930548 113199788 3 0 5 263 0 4 2 6 …
ctxt 1990473
btime 1614092334
processes 2915
procs_running 1
procs_blocked 0
softirq 545106 104 155433 2 92240 120 0 185489 104213 0 12595
这些信息主常用于性能监控和故障排查。例如,可以通过比较不同时期的空闲时间(idle)和系统时间(system),来评估系统负载的变化。需要注意的是,由于 /proc/stat 提供的是自系统启动以来的累积值,因此通常需要在两个时间点取样,通过计算差值来确定某个时间段内的实际使用情况。

其中关于CPU的时间单位是jiffies。Jiffies是Linux内核中的一个计时单位,表示时钟滴答数。通常情况下,一秒中的jiffies数由内核常量 HZ 决定,这个值会因操作系统的不同内核配置和硬件架构而异,但经常是100、250、300或者1000等
要查看当前系统的 HZ 值(即每秒中的 jiffies 数),可以通过以下命令来尝试:
getconf CLK_TCK

举例
/proc//stat 中某个进程用户态 时间是 10000, CLK_TCK=100, 怎么估算这个进程占用了CPU多少时间

在 Linux 系统中,/proc/stat 文件提供了系统的整体性能和统计信息,但是具体某个进程的信息通常来自 /proc/[pid]/stat 文件,其中 [pid] 是进程的 ID。这个文件包含了关于进程的状态信息,包括用户态时间和内核态时间等。

如果你指的是 /proc/[pid]/stat 中的某个进程用户态时间是 10000,那么这表示该进程在用户态运行了 10000 个时钟滴答。CLK_TCK 表示每秒中时钟滴答数,也就是系统时钟的频率。在你给出的例子中,CLK_TCK=100 表示每秒有 100 个时钟滴答。

要估算这个进程占用了多少 CPU 时间,我们可以将用户态时间除以时钟滴答数 CLK_TCK 得到秒数:

CPU 时间(秒) = 用户态时间 / CLK_TCK
= 10000 / 100
= 100 秒
这意味着该进程已经使用了 100 秒的 CPU 时间在用户态运行。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值