进程管理和性能相关工具-上篇
进程管理和性能相关工具:
Linux系统状态的查看及管理工具:
- pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
pstree(进程树):
pstree 可以用来显示进程的父子关系,以树形结构显示
pstree [OPTION] [ PID | USER ]
-p 显示PID,及子进程
-T 不显示线程thread,默认显示线程
-u 显示用户切换
-H pid 高度指定进程及其前辈进程
ps:
process state,可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
输出的信息:
| 列 | 含义 |
|---|---|
| C | 表示cpu利用率 |
| VSZ | Virtual memory SiZe,虚拟内存集,线性内存,申请的内存空间 |
| RSS | ReSident Size, 常驻内存集,正在使用的内存空间 |
| STAT | 进程状态 |
| ni | nice值 |
| pri | priority 优先级,优先级反过来了,139-0,越大优先级越高 |
| rtprio | 实时优先级 |
| psr | processor CPU编号 |
进程的运行状态:
| stat列的状态 | 含义 |
|---|---|
| R | running |
| S | 可中断睡眠 |
| D | 不可中断睡眠 |
| T | 停止态 |
| Z | 僵尸态 |
| + | 前台进程 |
| l | 多线程进程 |
| L | 内存分页并带锁 |
| N | 低优先级进程 |
| < | 高优先级进程 |
| s | session leader,会话(子进程)发起者 |
| I | Idle kernel thread,CentOS 8 新特性 |
选项风格:
UNIX选项 如: -A -e
BSD选项 如: a
GNU选项 如: --help
常用选项:
ps [OPTION]
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程树,相当于 --forest
k|--sort 属性 对属性排序,属性前加 - 表示倒序
o 字段1,字段2 选项显示定制的信息pid、cmd、%cpu、%mem
L 显示支持的属性列表
-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e 显示所有进程,相当于-A
-f 显示完整格式程序信息
-F 显示更完整格式的进程信息
-H 以进程层级格式显示进程相关信息
-u userlist 指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
-g gid或groupname 指定有效的gid或组名称
-G gid或groupname 指定真正的gid或组名称
-p pid 显示指pid的进程
--ppid pid 显示属于pid的子进程
-t ttylist 指定tty,相当于 t
-M 显示SELinux信息,相当于Z
常用组合:
aux
-ef
-eFH
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
例:
ps axo user,pid,cmd,%cpu,%mem k -%cpu
taskset:
实现进程与cpu绑定
taskset [options] [mask | cpu-list] [pid|cmd [args...]]
prtstat:
显示进程信息,来自于psmisc包
prtstat [options] PID ...
-r,--raw 显示信息的原始样式
nice:
指定优先级启动进程
进程优先级调整
- 静态优先级:100-139
进程默认启动时的nice值为0,对应优先级为120
nice [OPTION] [COMMAND [ARG]...]
-n 优先级 以该优先级运行程序
注意:
只有根用户才能降低nice值(提高优先性)
renice:
修改运行中的进程的优先级
renice [-n] priority pid...
pgrep:
按条件搜索进程
pgrep [options] pattern
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
pidof:
列出进程的pid
pidof [options] [program [...]]
-x 脚本 显示脚本执行的pid
uptime:
主机负载查询
/proc/uptime 包括两个值,单位 s
- 系统启动时长
- 空闲进程的总时长(按总的CPU核数计算)
uptime 和 w 显示以下内容
- 当前时间
- 系统已启动的时间
- 当前上线人数
- 系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)
统平均负载:
- 指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
4核u,负载为4,为全核cpu都在运行进程
w(负载查询):
类似于uptime,但是更为详细一点
mpstat(cpu统计信息):
来自于sysstat包
mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
[-n] 秒 刷新间隔,-n可省略
输出信息:
| 列 | 含义 |
|---|---|
| %usr | 用户空间使用cpu比例 |
| %nice | 调整nice的消耗比率 |
| %sys | 内核空间消耗比率 |
| %iowait | io等待消耗比率 |
| %irq | 硬中断 |
| %sort | 软中断 |
| %steal | 被偷去的时间片 |
| %guest | 虚拟化的使用 |
| %gnice | |
| %idle | 空闲比率 |
说明:
被偷去的时间,是cpu虚拟化的体现,一颗cpu提供的计算能力,切割成时间点,轮流分配给进程,如果开启了虚拟化kvm,cpu时间片就会分出给kvm中的虚拟机使用

top:
动态的实时进程状态
top选项:
-d # 指定刷新时间间隔,默认为3秒
-b 全部显示所有进程
-n # 刷新多少次后退出
-H 线程模式
交互式指令:
排序:
P:以占据的CPU百分比,%CPU,默认排序
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
top命令栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
htop:
增强版的TOP命令,来自EPEL源,比top功能更强
选项:
-d # 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME 以指定字段进行排序
交互式命令:
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树
free:
选项
free [OPTION]
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出
pmap:
进程在cpu中的相关信息
选项:
pmap [options] pid [...]
-x 详细信息格式显示
输出信息:
- 第一列是物理内存地址
- 第二列是占用内存大小
- 第三列是文件权限
- 第四列是进程名称、调用的系统库
例:
pmap 1 #显示第一个进程的cpu中的运行信息
pstack:
进程性能分析工具,可分析执行命令行时那瞬间的系统调用
pstack pid
例

strace:
查看进程运行的过程,有哪些系统调用
来自strace包
例:
strace ls #查看ls执行时产生了哪些系统调用
例

ltrace:
查看调用的语言库,非系统库,一般是c语言库
例:
ltrace ls
sar:
性能分析工具,可查看系统中断、网络、io
sar [ options ] [ <interval> [ <count> ] ]
-b 分页统计[A_PAGE]
-b i/O和传输速率统计信息[A_IO]
-d 块设备统计信息[A_DISK]
-f [mount] 文件系统统计信息[A_FS]
- h hugepages利用率统计[A_HUGE]
-I {<int_list> | SUM | ALL} 中断统计[A_IRQ]
-m {<keyword>[,…][|所有} 电源管理统计信息[A_PWR_…]
CPU cpu瞬时时钟频率
FAN 风扇转速
FREQ cpu平均时钟频率
IN 电压输入
TEMP 设备温度
USB usb插入系统的usb设备
-n {<keyword>[,…][|所有} 网络统计[A_NET_…]
DEV dev网络接口
EDEV edev网络接口(错误)
NFS nfs客户端
NFSD nfs服务器
SOCK sockets (v4)
IP ip流量(v4)
EIP ip流量(v4)(错误)
ICMP icmp流量(v4)
EICMP icmp流量(v4) (errors)
TCP tcp流量(v4)
ETCP tcp流量(v4)(错误)
UDP udp流量(v4)
SOCK6 sockets (v6)
IP6 ip流量(v6)
EIP6 ip流量(v6)(错误)
ICMP6 icmp流量(v6)
EICMP6 icmp流量(v6) (errors)
UDP6 udp流量(v6)
FC 光纤通道hba卡
SOFT 基于软件的网络处理
-q 队列长度和平均负载统计信息[A_QUEUE]
-r [ALL] 内存利用率统计信息[A_MEMORY]
-s 交换空间使用统计信息[A_MEMORY]
-u[全部] CPU利用率统计[A_CPU]
-v 内核表统计[A_KTABLES]
-w 交换统计[A_SWAP]
-w 任务创建和系统切换统计信息
-y tty设备统计信息[A_SERIAL]
例
查看系统网络相关指标

perf
性能分析工具,这个使用比较复杂,后面单独写
sysdig
也会单独写
SystemTap
动态跟踪,内核态、用户态分析工具,需写脚本代码配合,暂未学习

浙公网安备 33010602011771号