linux查看某个进程内存占用情况以及/proc/pid/status解释

以TCU331_4G为例
1、ps aux | grep TCU

2、cat /proc/pid/status
pid 是你关心的TCU331_4G进程pid.
在这里插入图片描述
VmHWM: 4220 kB 内存峰值
VmRSS: 4216 kB 内存当前值

/proc/pid/status的解释:
Name: TCU331_4G /进程的程序名/
State: S (sleeping) /进程的状态信息,具体参见http://blog.chinaunix.net/u2/73528/showart_1106510.html/
Tgid: 1535 /线程组号/
Pid: 1535 /进程pid/
PPid: 1498 /父进程的pid/
TracerPid: 0 /跟踪进程的pid/
Uid: 0 0 0 0 /uid euid suid fsuid/
Gid: 0 0 0 0 gid egid sgid fsgid/
Ngid: 0
FDSize: 256 /文件描述符的最大个数,file->fds/
Groups: /启动该进程的用户所属的组的id/
VmPeak: 471000 kB /进程地址空间的大小/
VmSize: 470996 kB /进程虚拟地址空间的大小reserved_vm:进程在预留或特殊的内存间的物理页/
VmLck: 0 kB /进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘/
VmPin: 0 kB
VmHWM: 4216 kB /文件内存映射和匿名内存映射的大小/
VmRSS: 4212 kB /应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)/
VmData: 463672 kB /程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据/
VmStk: 136 kB /进程在用户态的栈的大小/
VmExe: 460 kB /*程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 */
VmLib: 5732 kB /被映像到任务的虚拟内存空间的库的大小/
VmPTE: 140 kB /该进程的所有页表的大小/
VmSwap: 0 kB
Threads: 55 /共享使用该信号描述符的任务的个数/
SigQ: 19/1111 /待处理信号的个数/目前最大可以处理的信号的个数/
SigPnd: 0000000000000000 /屏蔽位,存储了该线程的待处理信号/
ShdPnd: 0000000000000000 /屏蔽位,存储了该线程组的待处理信号/
SigBlk: 0000000000000800 /存放被阻塞的信号/
SigIgn: 0000000000000006 /存放被忽略的信号/
SigCgt: 0000000190001800 /存放被俘获到的信号/
CapInh: 0000000000000000 /能被当前进程执行的程序的继承的能力/
CapPrm: 0000003fffffffff /进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的/
CapEff: 0000003fffffffff 0000000000000000 /是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性/
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Cpus_allowed: 1 /可以执行该进程的CPU掩码集/
Cpus_allowed_list: 0
voluntary_ctxt_switches: 154 /进程主动切换的次数/
nonvoluntary_ctxt_switches: 119 /进程被动切换的次数/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要计算进程的 CPU 占用比率,我们可以使用以下公式: CPU 使用率 = (进程 CPU 时间 / 系统 CPU 时间)* 100% 其中,进程 CPU 时间是指进程占用 CPU 的时间,系统 CPU 时间是指所有进程占用 CPU 的总时间。 我们可以通过读取 /proc/[pid]/stat 文件获取进程的 CPU 时间信息。该文件的第 14 列(utime)和第 15 列(stime)分别表示进程在用户态和内核态下占用 CPU 的时间(以时钟滴答为单位)。我们可以将这两个值相加得到进程的总 CPU 时间。 我们还需要读取 /proc/[pid]/status 文件,以获取系统 CPU 时间。该文件的第 1 行(cpu)包含了系统 CPU 时间的信息,其中第 1 列(user)和第 3 列(system)分别表示所有进程在用户态和内核态下的 CPU 时间。 以下是一个 Python 示例代码,用于计算进程的 CPU 占用比率: ```python import time def get_cpu_usage(pid): with open(f"/proc/{pid}/stat") as f: stat = f.read().split() utime = int(stat[13]) stime = int(stat[14]) cutime = int(stat[15]) cstime = int(stat[16]) starttime = int(stat[21]) with open(f"/proc/{pid}/status") as f: status = f.read().split() for i, s in enumerate(status): if s == "cpu": sys_time = int(status[i+1]) + int(status[i+3]) break total_time = utime + stime + cutime + cstime seconds = time.time() - (starttime / 100.0) cpu_usage = 100.0 * ((total_time / 100.0) / seconds) / sys_time return cpu_usage ``` 该函数接受一个进程 ID 作为参数,并返回进程的 CPU 占用比率。注意,由于 CPU 时间是从进程启动开始计算的,因此我们还需要获取进程的启动时间(第 22 列)来计算实际运行时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值