linux进程占用的资源,Linux查看进程的资源占用情况

相关命令:who/w/ps/top

转载自:http://www.51testing.com/html/32/n-823532.html

1、top

a4c26d1e5885305701be709a3d33442f.png

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

内容解释:

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、/proc/pid

a4c26d1e5885305701be709a3d33442f.png

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息

说明:

/proc/N pid为N的进程信息

/proc/N/cmdline 进程启动命令

/proc/N/cwd 链接到进程当前工作目录

/proc/N/environ 进程环境变量列表

/proc/N/exe 链接到进程的执行命令文件

/proc/N/fd 包含进程相关的所有的文件描述符

/proc/N/maps 与进程相关的内存映射信息

/proc/N/mem 指代进程持有的内存,不可读

/proc/N/root 链接到进程的根目录

/proc/N/stat 进程的状态

/proc/N/statm 进程使用的内存的状态

/proc/N/status 进程状态信息,比stat/statm更具可读性

/proc/self 链接到当前正在运行的进程

3、pmap

a4c26d1e5885305701be709a3d33442f.png

pmap命令可以显示一个或多个进程所使用的内存数量。你可以使用这个工具来了解服务器上的某个进程分配了多少内存,并以此来判断这是否是导致内存瓶颈的原因。要得到更加详细的信息,使用pmap

-d选项。

查看Linux进程占用的资源

查看Linux系统下某一个进程占用的资源是进行系统调测的关键。它不仅涉及到健壮性,也涉及到程序的调优。尤其是对于那些需要长时间在内存中运行的程序,如果发生随着外部运行环境的变化而导致的资源占用的不当起伏,势必导致程序运行的潜在风险。

top

top是灵活的CPU状态的查看工具,类似任务管理器。Top命令一般分成两部分进行显示,第一部分是当前系统的运行概况:

第一行(top):top - 17:03:45 up 58 days, 4:01, 1 user, load average:

0.00, 0.02, 0.00

“17:03:45”为系统当前时刻;    “58

days, 4:01”为系统启动后到现在的运作时间;    “1

user”为当前登录到系统的用户,更确切的说是登录到用户的终端数--同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;    “load

average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU数目时,CPU将比较吃力的负载当前系统所包含的进程;第二行(Tasks):    “172

total”为当前系统进程总数;    “1

running”为当前运行中的进程数;    “171

sleeping”为当前处于等待状态中的进程数;    “0

stoped”为被停止的系统进程数;    “0

zombie”为僵死的进程数;第三行(Cpus):  显示CPU利用率的详细信息,如果有多个CPU,屏幕将在每行显示一个CPU的信息。第四行(Mem):  显示可用的和已利用的内存第五行(Swap):    表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

其余的显示内容以表格格式显示进程。下面对各列进行解释:各个不同的列的内容为:

PID 进程的进程ID

USER 运行该进程的用户PRI 进程的优先级NI nice值:该值越高,任务的优先级越低SIZE

该进程使用的内存(代码+数据+堆栈)VIRT:virtual memory usage

RSS 该进程使用的物理内存SHARE 该进程使用的共享内存STAT 该进程的状态,用代码显示。一些主要的状态代码包括:R— 正在运行S— 正在休眠Z— 迟滞T— 已停止您还会看到第二个和第三个字符,它们表示:W— 已换出的进程N— 正nice值%CPU

该进程使用的CPU百分比%MEM

该进程使用的内存百分比TIME

该进程使用的总CPU时间CPU

如果这是一个多处理器系统,该列指明正在其上运行进程的CPU的ID。COMMAND 该进程发出的命令top运行中可以通过top的内部命令对进程的显示方式进行控制。内部命令如下:  s -改变画面更新频率  l

-关闭或开启第一部分第一行top信息的表示  t

-关闭或开启第一部分第二行Tasks和第三行Cpus信息的表示  m

-关闭或开启第一部分第四行Mem和第五行Swap信息的表示  N

-以PID的大小的顺序排列表示进程列表P

-以CPU占用率大小的顺序排列进程列表 M

-以内存占用率大小的顺序排列进程列表  h

-显示帮助  n

-设置在进程列表所显示进程的数量  q

-退出top

pmap

pmap用于查看一个进程所占用的内存的情况,在现实上,几个主要列的含义是:

Address:00378000-0038d000 进程所占的地址空间Kbytes 该虚拟段的大小RSS 设备号(主设备:次设备)Anon 设备的节点号,0表示没有节点与内存相对应Locked 是否允许swapped

Mode 权限:r=read, w=write, x=execute, s=shared,

p=private(copy on write)

Mapping: bash 对应的映像文件名

使用的基本方法是“pmap + 命令行模式

+ pid”实现对于单一进程的内存监测

查看/proc/process_id下的内容

/proc/pid/status

包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。

[root@localhost ~]# cat

/proc/self/status

Name: cat

State: R (running)

SleepAVG: 88%

Tgid: 5783

Pid: 5783

PPid: 5742

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 256

Groups: 0 1 2 3 4 6

10

VmSize: 6588 kB

VmLck: 0 kB

VmRSS: 400 kB

VmData: 144 kB

VmStk: 2040 kB

VmExe: 14 kB

VmLib: 1250 kB

StaBrk: 0804e000 kB

Brk: 088df000 kB

StaStk: bfe03270 kB

ExecLim: 0804c000

Threads: 1

SigPnd:

0000000000000000

ShdPnd:

0000000000000000

SigBlk:

0000000000000000

SigIgn:

0000000000000000

SigCgt:

0000000000000000

CapInh:

0000000000000000

CapPrm:

00000000fffffeff

CapEff:

00000000fffffeff

输出解释

Name 应用程序或命令的名字

State

任务的状态,运行/睡眠/僵死/

SleepAVG

任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的

sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。

Tgid 线程组号

Pid

任务ID

Ppid

父进程ID

TracerPid

接收跟踪该进程信息的进程的ID号

Uid Uid euid suid

fsuid

Gid Gid egid sgid

fsgid

FDSize

文件描述符的最大个数,file->fds

Groups

VmSize(KB) 任务虚拟地址空间的大小

(total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页

VmLck(KB)

任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)

VmRSS(KB)

应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值

(rss)

VmData(KB)

程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据;

(total_vm-shared_vm-stack_vm)

VmStk(KB) 任务在用户态的栈的大小

(stack_vm)

VmExe(KB)

程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库

(end_code-start_code)

VmLib(KB)

被映像到任务的虚拟内存空间的库的大小 (exec_lib)

VmPTE

该进程的所有页表的大小,单位:kb

Threads

共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。

SigQ 待处理信号的个数

SigPnd

屏蔽位,存储了该线程的待处理信号

ShdPnd

屏蔽位,存储了该线程组的待处理信号

SigBlk 存放被阻塞的信号

SigIgn 存放被忽略的信号

SigCgt 存放被俘获到的信号

CapInh

Inheritable,能被当前进程执行的程序的继承的能力

CapPrm

Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性

CapEff

Effective,进程的有效能力

范例 1可

以看出该应用程序的正文段(1KB)很小,说明代码很少,是依靠库(1251KB)来执行。栈(138KB)适中,说明没有太多许多嵌套函数或特别多的临

时变量。VmLck为0说明进程没有锁住任何页。VmRSS表示当前进程使用的物理内存为2956KB。当进程开始使用已经申请的但还没有用的内存

时,VmRSS的值开始增大,但是VmSize保持不变。

[root@localhost 1]# cat

/proc/4668/status

Name: gam_server

State: S (sleeping)

SleepAVG: 88%

Tgid: 31999

Pid: 31999

PPid: 1

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 256

Groups: 0 1 2 3 4 6

10

VmSize: 2136 kB

VmLck: 0 kB

VmRSS: 920 kB

VmData: 148 kB

VmStk: 88 kB

VmExe: 44 kB

VmLib: 1820 kB

VmPTE: 20 kB

Threads: 1

SigQ: 1/2047

SigPnd:

0000000000000000

ShdPnd:

0000000000000000

SigBlk:

0000000000000000

SigIgn:

0000000000001006

SigCgt:

0000000210000800

CapInh:

0000000000000000

CapPrm:

00000000fffffeff

CapEff:

00000000fffffeff

Oprofile

文献:

sysstate

(分析应用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值