linux系统进程状态查看命令

文章目录

  • top
    • 统计信息
    • 进程信息
    • 查看进程下的线程信息
  • perf
    • 排查导致cpu利用率过高的函数
    • 分析程序的cpu cache miss现象
  • ps
    • 查看进程占用的cpu,mem大小
    • 查看进程启动时间

top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,监控linux的系统状况,类似于Windows的任务管理器。
linux系统进程状态查看命令_第1张图片

统计信息

前五行是系统整体的统计信息。

第一行是任务队列信息,同 uptime 命令的执行结果。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。
最后两行为内存信息。具体内容如下:
linux系统进程状态查看命令_第2张图片

在numa架构下,top后按3即可查看相应的numa上的cpu信息。意义如下:

us: is meaning of "user CPU time" 用户空间占用CPU百分比
sy: is meaning of "system CPU time"  内核空间占用CPU百分比
ni: is meaning of" nice CPU time"  用户进程空间内改变过优先级的进程占用CPU百分比
id: is meaning of "idle" 空闲CPU百分比
wa: is meaning of "iowait" 等待输入输出的CPU时间百分比
hi:is meaning of "hardware irq" 硬件中断
si : is meaning of "software irq" 软件中断
st : is meaning of "steal time" 是当 hypervisor 服务另一个虚拟处理器时,虚拟 CPU 等待实际 CPU 的时间的百分比

进程信息

统计信息下方类似表格区域显示的是各个进程的详细信息,默认5秒刷新一次。在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列。

A: PID = (Process Id) 进程Id;
E: USER = (User Name) 进程所有者的用户名;
H: PR = (Priority) 优先级
I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级
O: VIRT = (Virtual Image (kb)) 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
Q: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
T: SHR = (Shared Mem size (kb)) 共享内存大小,单位kb
W: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比
N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比
M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒 
b: PPID = (Parent Process Pid) 父进程Id 
c: RUSER = (Real user name) 
d: UID = (User Id) 进程所有者的用户id 
f: GROUP = (Group Name) 进程所有者的组名 
g: TTY = (Controlling Tty) 启动进程的终端名。不是从终端启动的进程则显示为 ? 
j: P = (Last used cpu (SMP)) 最后使用的CPU,仅在多CPU环境下有意义 
p: SWAP = (Swapped size (kb)) 进程使用的虚拟内存中,被换出的大小,单位kb 
l: TIME = (CPU Time) 进程使用的CPU时间总计,单位秒 
r: CODE = (Code size (kb)) 可执行代码占用的物理内存大小,单位kb 
s: DATA = (Data+Stack size (kb)) 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb 
u: nFLT = (Page Fault count) 页面错误次数 
v: nDRT = (Dirty Pages count) 最后一次写入到现在,被修改过的页面数 
y: WCHAN = (Sleeping in Function) 若该进程在睡眠,则显示睡眠中的系统函数名 
z: Flags = (Task Flags ) 任务标志,参考 sched.h
X: COMMAND = (Command name/line) 命令名/命令行

查看进程下的线程信息

top -H -p PID

perf

排查导致cpu利用率过高的函数

当我们需要排查cpu利用率过高的原因时,也可以用perf命令

// 查看某个进程各函数占用
perf top -p PID

//使用下列命令可以看到函数的调用栈
perf record -ga sleep 5
perf report --no-children --sort=symbol
第一项敲回车打开调用栈

分析程序的cpu cache miss现象

perf stat -e L1-dcache-load-misses ./a.out

ps

查看进程占用的cpu,mem大小

# ps -ef   显示所有进程   
# ps -eo comm,pcpu  //显示所有命令占用的cpu的大小 
 e显示所有进程,o指定命令的名字
# ps -eo comm,pmem  //显示所有命令占用的mem的大小
# ps -eo 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'  //显示内存占用等信息
ps aux
USER    PID   %CPU   %MEM     VSZ     RSS     TTY    STAT   START TIME COMMAND
smmsp   3521   0.0    0.7     6556    1616    ?      Ss      20:40 0:00 sendmail: Queue runner@01:00:00 f
root    3532   0.0    0.2     2428    452     ?      Ss      20:40 0:00 gpm -m /dev/input/mice -t imps2
dbus    3655   0.0    0.5     13840   1084    ?      Ssl     20:41 0:00 dbus-daemon-1 --system
....................................
解释如下:
VSZ–进程的虚拟大小
RSS–驻留集的大小,可以理解为当前实际占用的物理内存(kb)
TTY–控制终端的ID
STAT–当前进程的状态
STRAT–该进程启动的时间
TIME–进程已经消耗的CPU时间,注意是消耗CPU的时间
COMMOND–命令的名称和参数

STAT中的参数意义如下:
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X   死掉的进程

< 高优先级
N 低优先级
L 有些页被锁进内存
s 包含子进程
+ 位于后台的进程组
l 多线程,克隆线程

查看可用物理内存:

free -g
或
cat /proc/meminfo

查看进程启动时间

ps -p PID -o lstart

你可能感兴趣的:(linux系统进程状态查看命令)