首页 > 系统相关 >Linux获取进程处理器及内存占用等信息

Linux获取进程处理器及内存占用等信息

时间:2022-12-16 14:23:51浏览次数:76  
标签:guest proc 处理器 Linux 进程 占用率 内存

Linux获取进程处理器及内存占用等信息

本文参考proc(5) 2021年08月27日版。

获取处理器(CPU)信息

/proc/stat 记录系统启动以来CPU在不同状态下消耗的时间之和,单位是用户时钟频率(USER_HZ)。具体数值与 sysconf(_SC_CLK_TCK) 成反比,一般为1/100,即1毫秒。
我们只关注系统(以cpu开头行)在各种状态下消耗的时间。
cpu user nice system idle iowait irq softirq steal guest guest_nice
cpu总的时间即该行所有数值的总和。

cpuTime = user + nice + system + idle + iowait + irq + softirq + steal + guest + guest_nice;

获取系统内存信息

/proc/meminfo 记录系统内存信息。
其中MemTotal表示系统可用物理内存大小。这个值通常会小于实际物理内存大小。

系统运行时间

/proc/uptime 记录系统运行时间。
此文件记录系统运行时间(含睡眠时间)及待机时间,单位是秒,精度是1厘秒。

获取进程信息

/proc/[pid]/stat 记录进程状态信息。

1 2 3 4 5 6 7 8 9 10 11 12 13
pid comm state ppid pgrp session tty_nr tpgid flags minflt cminflt majflt cmajflt
utime stime cutime cstime priority nice num_threads itrealvalue starttime vsize rss rsslim startcode
endcode startstack kstkesp kstkeip signal blocked sigignore sigcatch wchan nswap cnswap exit_signal processor
rt_priority policy delayacct_blkio_ticks guest_time cguest_time start_data end_data start_brk arg_start arg_end env_start env_end exit_code

这是当前记录在该文件里面的52条信息,其中本文需要关注的是 utimestimecutimecstime,也就是第14、15、16、17的值。

scheduledTime = utime + stime + cutime + sctime;

starttime (第22条)表示进程启动时间,单位是厘秒。

/proc/[pid]/statm 记录进程内存信息。单位是页,需要转换成具体大小。也可通过 /proc/[pid]/status 获取。
size resident shared text lib data dt
resident指进程实际占用的物理内存,shared为共享内存,size则是进程可寻址的内存空间大小。在计算内存占用的时候Gnome的系统监视器显示的内存大小为 resident - shared

处理器占用率

计算进程的处理器占用率需要每隔一段时间对处理器和进程信息进行采样,计算它们的差值,相除,即为这段时间内处理器的平均占用率。

if (lastCpuTime && lastScheduledTime)
    cpuUsage = (scheduledTime - lastScheduledTime) * 100. / (cpuTime - lastCpuTime);
lastScheduledTime = scheduledTime;
lastCpuTime = cpuTime;

内存占用率

如果不考虑共享内存,则直接将总的可用物理内存与进程实际占用的物理内存相除,即可得出当前进程的内存占用率。

memoryUsage = resident * 100. / memTotal;

进程运行时间

使用系统的运行时间(uptime)与进程启动时间(starttime)相减,即可得到进程运行时间。计算前需将单位统一。

uptime = systemUptime * 1000 - starttime * 10;

联系方式

QQ群:236510798

版权声明

严禁转载至CSDN

标签:guest,proc,处理器,Linux,进程,占用率,内存
From: https://www.cnblogs.com/mobeisiran/p/16987251.html

相关文章

  • Aliyun Linux 2 防火墙状态 命令
    linux防火墙命令(阿里云ECS为例)一、打开linux的防火墙systemctlstartfirewalld二、查看防火墙状态firewall-cmd--stat三、查看端口是否开放(以80端口为例......
  • TBB内存加速-windows
    对TBB的工作原理没有特别深入的了解。windows默认的堆内存(后面统一内存)申请默认是单线程的,默认单线程是因为刚开始设计这个操作系统的时候就没有考虑到后面会使用多个线程,......
  • Linux一键安装web环境全攻略phpstu…
    此教程主要是应对阿里云Linux云服务器ecs的web环境安装,理论上不限于阿里云服务器,此教程对所有Linux云服务器都具有参考价值。写这篇文章的目的:网上有很多关于Linux一......
  • linux CentOS Nginx 删除/查看定时任务列表命令 crontab命令文件位置(自动备份)
    教程:​​​​​​CentOSNginxcrontab定时任务每小时备份一次命令(删除5天以前某个后缀的文件)_我是高手高手高高手的博客-博客_centos每小时CentOSNginxcrontab定......
  • linux基本命令
    Linux基本命令解压命令:tar-zxcf[压缩包名]共享文件夹目录:/mnt/hgfs/mysharelinux的目录结构:/etc:所有的系统管理所需要的配置文件和子目录s/usr:非常重要的目录,用......
  • Linux CentOS7查看软件包安装时间
    rpm-qi软件包名,比如httpd,lrzsz[devops@host9~]$rpm-qilrzszName:lrzszVersion:0.12.20Release:36.el7Architecture:x86_64InstallDate......
  • Linux升级至glibc-2.14步骤
    Linux升级至glibc-2.14步骤查看gcc版本命令:strings/lib64/libc.so.6|grepGLIBC_glibc安装首先,点击此处下载glibc2.14下载,得到glibc-2.14.tar.gz使用如下命令解......
  • 将Python程序打包成Linux可执行文件
    将Python程序打包成Linux可执行文件安装环境首先我们要安装pip,命令如下:sudoaptinstallpython3-pip使用的工具是pyinstaller,打开终端输入sudopipinstallpyin......
  • linux 报错
    报CannotuseCONFIG_STACK_VALIDATION=y,pleaseinstalllibelf-dev,libelf-develorelfutils-libelf-develyuminstall-yelfutils-libelf-devel报make[1]:***[scr......
  • Linux挂载新磁盘
    Linux挂载新磁盘1.查看磁盘#df-lh#查看磁盘占用情况,同时可以查看已挂载的磁盘及其挂载位置#fdisk-l#查看所有的磁盘分区图中/dev/sdb下无分区信息,表示未......