进程管理和性能相关工具-上篇

进程管理和性能相关工具:

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中的虚拟机使用

image


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

image

strace:

查看进程运行的过程,有哪些系统调用
来自strace包

例:
strace ls		#查看ls执行时产生了哪些系统调用

image


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]

查看系统网络相关指标
image

perf

性能分析工具,这个使用比较复杂,后面单独写

sysdig

也会单独写

SystemTap

动态跟踪,内核态、用户态分析工具,需写脚本代码配合,暂未学习

posted @ 2022-01-26 23:12  suyanhj  阅读(62)  评论(0)    收藏  举报