Linux环境下进程的CPU占用率

Linux 环境下查看 CPU 信息

通过 cat /proc/cpuinfo 命令,可以查看 CPU 相关的信息

Processor       : AArch64 Processor rev 14 (aarch64)
processor       : 0
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0xd
CPU part        : 0x805
CPU revision    : 14

processor       : 1
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0xd
CPU part        : 0x805
CPU revision    : 14

.....
  • processor:逻辑处理器的 id,一般情况下,逻辑 cpu = 物理CPU个数 × 每颗核数,如果不相等的话,则表示 Linux 的 CPU 支持超线程技术。
  • BogoMIPS:BogoMIPS 是 Linus 本人的独创,如果系统启动时,计算出 BogoMIPS 为 100,可记为 100万条伪指令每秒。

在 Linux 环境下计算进程的 CPU 占用

通过 cat /proc/stat 文件查看所有的 CPU 活动信息
127|raphael:/ $ cat /proc/stat
cpu  12123934 1617498 9092384 23034727 91741 1800835 569171 0 0 0
cpu0 2160370 295650 1854378 21252616 86920 675808 227246 0 0 0
cpu1 2200035 300779 1701774 222213 1004 324118 91918 0 0 0
cpu2 2109617 263837 1647247 221856 957 307148 90692 0 0 0
cpu3 1437121 91239 1429458 246820 615 271759 104134 0 0 0
cpu4 1257432 151080 667213 272231 613 58109 14079 0 0 0
cpu5 1237783 156192 710850 271753 600 59504 14486 0 0 0
cpu6 1217469 163612 684075 271835 631 59697 14791 0 0 0
cpu7 504104 195104 397385 275399 398 44688 11820 0 0 0
intr 1297456035 0 0 0 0 187404514 0 28792308 0 16345624 0 0 0 0 16325 199 0 51456 0 2 0 355303 0 2 0 2 62521 16 0 139 204207 0 0 4757381 3390833 0 240620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 799 0 0 0 0 722 0 386 0 0 404501 0 0 0 0 0 0 0
 0 0 0 0 15014616 49027 284 49508957 0 0 25 47 0 0 0 0 7 2 0 138924 0 2004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104347 0 0 0 26 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 358091 96339 1769 1364 0 5 0 0 0 0 0 0 0 0 0 0 0 0 11678 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 52678 2723945 42 2478477 5121142 267948 0 0 0 0 0 1149871 844753 11603324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 107849 0 1684 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 672822 0 14423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 3 80866 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104139 727776 675552 0 832894 0 3914284 0 0 0 4541419 0 34 0 0 10562515 0 0 0 0 0 0 0 0 0 0 0 6 799 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 38814 5259305 0 2687 0 0 0 1715 2
0 0 6 13 0 0 6 0 0 54 4 0 0 0 0 601511 0 0 0 332 0 0 0 0 0 0 0 0 26 2871 0 107 22 0 0 0 0 0 0 50 113 121 0 89 0 174 2086 0 0 0 0 0 0 0 0 0 96 0 0 89 0 0 0 7258 0 10058 0 0 0 0 0 0 0 0 0 0 0 0 242176 0 7505 9289359 13087458 980 0 0 0
 0 0 0 0 36 27 10 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13360 0 0 4329353 0 0
ctxt 1832848701
btime 1625156783
processes 1097383
procs_running 4
procs_blocked 0
softirq 226658851 49747268 49555152 1799689 9900586 12973300 0 18627150 44256743 0 39798963

第一行的数据表示的是 CPU 总的使用情况,

  • 这些数值的单位都是 jiffies,jiffies 是内核中的一个全局变量,用来记录系统启动以来产生的节拍数,在 Linux 中,一个节拍大致可以理解为操作系统进程调度的最小时间片,不同的 Linux 系统内核这个值可能不同,通常在 1ms 到 10ms 之间。
  • cpu 12123934 1617498 9092384 23034727 91741 1800835 569171 0 0 0
  1. user(12123934) 从系统启动开始累积到当前时刻,处于用户态的运行时间,不包含 nice 值为负的进程。
  2. nice(1617498) 从系统启动开始累积到当前时刻,nice 值为负的进程所占用的 CPU 时间。
  3. system(9092384) 从系统启动开始累积到当前时刻,处于核心态的运行时间。
  4. idle(23034727) 从系统启动开始累积到当前时刻,除 IO 等待时间以外的其他等待时间。
  5. iowait(91741) 从系统启动开始累积到当前时刻,IO 等待时间。
  6. irq(1800835) 从系统启动开始累积到当前时刻,硬中断时间。
  7. softirq(569171) 从系统启动开始累积到当前时刻,软中断时间。
  • totalCPUTime = user + nice + system + idle + iowait + irq + softirq
通过 /proc/[PID]/stat 文件查看某一进程的 CPU 活动信息

Linux 系统贯彻“一切都是文件”的思想,所有的进程的运行状态也都可以通过读取文件来获取。 /proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过 /proc 得到系统的信息,并可以改变内核的某些参数。
通过查看 cat /proc/[PID]/stat 文件,可以进程运行的详细信息,其中就包括 CPU 占用信息。

raphael:/ $ cat /proc/1/stat
1 (init) S 0 0 0 0 -1 1077952768 60985 5612487 540 5604 7335 3690 27677 66525 20 0 1 0 0 61513728 717 18446744073709551615 1 1 0 0 0 0 65536 0 1073775864 0 0 0 17 2 0 0 10141 0 0 0 0 0 0 0 0 0 0

参考: Linux环境下进程的CPU占用率

Linux 环境查看进程运行相关信息

ps
raphael:/ $ ps --help
usage: ps [-AadefLlnwZ] [-gG GROUP,] [-k FIELD,] [-o FIELD,] [-p PID,] [-t TTY,] [-uU USER,]

List processes.

Which processes to show (-gGuUpPt selections may be comma separated lists):

-A  All                                 -a  Has terminal not session leader
-d  All but session leaders             -e  Synonym for -A
-g  In GROUPs                           -G  In real GROUPs (before sgid)
-p  PIDs (--pid)                        -P  Parent PIDs (--ppid)
-s  In session IDs                      -t  Attached to selected TTYs
-T  Show threads also                   -u  Owned by selected USERs
-U  Real USERs (before suid)

Output modifiers:

-k  Sort FIELDs (-FIELD to reverse)     -M  Measure/pad future field widths
-n  Show numeric USER and GROUP         -w  Wide output (don't truncate fields)

Which FIELDs to show. (-o HELP for list, default = -o PID,TTY,TIME,CMD)

-f  Full listing (-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
-l  Long listing (-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
-o  Output FIELDs instead of defaults, each with optional :size and =title
-O  Add FIELDS to defaults
-Z  Include LABEL
top
raphael:/ $ top --help
usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]

Show process activity in real time.

-H      Show threads
-k      Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)
-o      Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)
-O      Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)
-s      Sort by field number (1-X, default 9)
-b      Batch mode (no tty)
-d      Delay SECONDS between each cycle (default 3)
-m      Maximum number of tasks to show
-n      Exit after NUMBER iterations
-p      Show these PIDs
-u      Show these USERs
-q      Quiet (no header lines)

Cursor LEFT/RIGHT to change sort, UP/DOWN move list, space to force
update, R to reverse sort, Q to exit.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Linux系统中,获取指定进程CPU占用率c可以使用top命令或ps命令。这两个命令都可以查看系统中运行的进程信息,包括进程CPU占用率。 使用top命令获取指定进程CPU占用率可以通过以下步骤实现: 1. 打开终端,输入top命令。 2. 按下shift+p,然后输入要查看的进程号或名称,回车。 3. top命令将会显示该进程CPU占用率。 使用ps命令获取指定进程CPU占用率可以通过以下步骤实现: 1. 打开终端,输入ps命令,加上选项p和进程号或名称。 2. 在选项中加上-o选项,后面输入%cpu或%CPU。 3. 执行该命令,将会显示该进程CPU占用率。 以上两个命令都可以实现获取指定进程CPU占用率的功能,具体使用哪种方法取决于用户的需求。需要注意的是,这两个命令获取的CPU占用率是该进程在系统整体CPU使用率中的占比,并不是该进程的实际CPU使用率。如果需要获取该进程的实际CPU使用率,需要使用更为专业的工具或命令。 ### 回答2: 在Linux系统中,我们可以通过多种方式来获取指定进程CPU占用率。以下是几个常用的方法: 1. top命令 top命令是一个基于终端的系统监控工具,它能够显示系统中进程的实时信息,包括CPU占用率。要获取指定进程CPU占用率,可以按下“Shift + P”键,然后输入进程ID进程名称即可。 2. ps命令 ps命令是另外一个常用的用于获取进程信息的命令。它可以显示所有进程的信息,也可以根据进程ID进程名称来获取指定进程的信息。要获取指定进程CPU占用率,可以使用如下命令: ps -o pid,%cpu,comm -p 进程ID 其中,“%cpu”表示CPU占用率,它是ps命令的一个输出参数。 3. pidstat命令 pidstat是一个用于进程性能监测的工具,它可以显示每个进程CPU占用率、内存占用率等详细信息。要获取指定进程CPU占用率,可以使用如下命令: pidstat -p 进程ID 其中,“-p”参数表示指定要监测的进程ID。 4. top -n命令 top命令还可以使用“-n”参数来指定监测次数。这样,我们可以在一定时间内获取指定进程的平均CPU占用率。例如,要获取进程ID为123的进程在10秒内的平均CPU占用率,可以使用如下命令: top -b -n 10 -d 1 -p 123 |grep "123" 其中,“-b”表示以批处理模式运行top命令,“-n”表示监测次数,“-d”表示监测间隔,“-p”表示要监测的进程ID。最后使用grep命令来过滤输出信息,只保留目标进程的信息。 ### 回答3: 获取指定进程 CPU 占用率的方法,在 Linux 系统中有多种实现方式。本文将介绍两种常见的方法: 方法一:使用 top 命令 top 命令可以查看系统中所有进程CPU 占用情况,可以通过 top 命令获取指定进程CPU 占用率。具体方法如下: 1. 打开终端,输入 top 命令; 2. 按下“Shift + P”组合键,进入按 CPU 占用率排序模式; 3. 找到目标进程对应的 PID进程 ID),使用“k”命令杀掉该进程并记录其 CPU 占用率,或记录当前 CPU 占用率。 方法二:使用 ps 命令和 awk 命令 ps 命令可以列出系统中所有进程的信息,awk 命令可以对列数据进行处理。使用这两个命令可以获取指定进程CPU 占用率。具体方法如下: 1. 打开终端,输入“ps aux | grep [进程名称]”命令,获取目标进程的 PID; 2. 输入“top -p [PID]”命令,实时监控目标进程CPU 占用率,并记录需要的信息; 3. 按下“Ctrl + C”组合键退出 top 命令。 需要注意的是,在使用这两种方法获取 CPU 占用率时,数据的精确性和稳定性都受到系统负载等因素的影响。为获得更准确的结果,可以多次测量、取平均值,或使用更具专业性的系统监控工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值