linux系统进程状态查看命令
⽂章⽬录
top
top命令是Linux下常⽤的性能分析⼯具,能够实时显⽰系统中各个进程的资源占⽤状况,监控linux的系统状况,类似于Windows的任务管理器。
统计信息
前五⾏是系统整体的统计信息。
第⼀⾏是任务队列信息,同 uptime 命令的执⾏结果。
第⼆、三⾏为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两⾏。
最后两⾏为内存信息。具体内容如下:
linux下的sleep函数
在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>) 任务标志,参考 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论