动态查看一个进程的内存使用
- 1、top命令
- top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s
- 如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)
静态查看一个进程的内存使用
- 1、pmap命令
- pmap pid
- 2、ps命令
- ps aux|grep process_name
- 3、查看/proc/process_id/文件夹下的status文件
- Name: php
- State: R (running)
- SleepAVG: 0%
- Tgid: 21574
- Pid: 21574
- PPid: 10005
- TracerPid: 0
- Uid: 1000 1000 1000 1000
- Gid: 100 100 100 100
- FDSize: 256
- Groups: 16 100
- VmPeak: 161740 kB
- VmSize: 161740 kB
- VmLck: 0 kB
- VmHWM: 107144 kB
- VmRSS: 107144 kB
- VmData: 106192 kB
- VmStk: 84 kB
- VmExe: 5588 kB
- VmLib: 7884 kB
- VmPTE: 268 kB
- Threads: 1
- SigQ: 0/69632
- SigPnd: 0000000000000000
- ShdPnd: 0000000000000000
- SigBlk: 0000000000000000
- SigIgn: 0000000000001000
- SigCgt: 00000001818040a7
- CapInh: 0000000000000000
- CapPrm: 0000000000000000
- CapEff: 0000000000000000
- Cpus_allowed: 00000000,00000000,00000000,0000000f
- Mems_allowed: 1
- 任务虚拟地址空间的大小 VmSize
- 应用程序正在使用的物理内存的大小 VmRSS
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
(1)top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle
内容解释:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
常用的命令:
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
(2)pmap
可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:
$ pmap -d 14596
(3)ps
如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5
其中rsz为实际内存,上例实现按内存排序,由大到小