Out Of Bounds

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

top

1.作用

top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU敏感的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 

2.格式

top [] [d delay] [q] [c] [S] [s] [i] [n NUM]

3.主要参数

d指定每两次屏幕信息刷新之间的时间间隔。(当然用户可以使用s交互命令来改变之)
q
:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 
c
:显示进程完整的路径与名称。
S
:累积模式,会将己完成或消失的子进程的CPU时间累积起来。 
s
:安全模式。(这将去除交互命令所带来的潜在危险。
i
:不显示任何闲置(Idle)或无用(Zombie)的行程。 
n
:显示更新的次数,完成后将会退出top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,

类似于Windows的任务管理器。下面详细介绍它的使用方法。

 

图片

 

统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime  命令的执行结果。其内容如下:

01:13:01

当前时间

up 1 day, 18:18

系统运行时间,格式为时: (我这个时间有点长了!)

2 user

当前登录用户数

load average: 0.09, 0.06, 0.02

系统负载,即任务队列的平均长度。
 
三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。


第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 93 total

进程总数

2 running

正在运行的进程数

91 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s): 0.0% us

用户空间占用CPU百分比

0.3% sy

内核空间占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

99.7% id

空闲CPU百分比

0.0% wa

等待输入输出的CPU时间百分比

0.0% hi

 

0.0% si

 


最后两行为内存信息。内容如下:

Mem: 320276k total

物理内存总量

292316k used

使用的物理内存总量

27960k free

空闲内存总量

33640k buffers

用作内核缓存的内存量

Swap: 265032k total

交换区总量

108k used

使用的交换区总量

264924k free

空闲交换区总量

166596k cached

缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

 该数值即为这些内容已存在于内存中的交换区的大小。
 
相应的内存再次被换出时可不必再对交换区写入。


进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号

列名

含义

a

PID

进程id

b

PPID

父进程id

c

RUSER

Real user name

d

UID

进程所有者的用户id

e

USER

进程所有者的用户名

f

GROUP

进程所有者的组名

g

TTY

启动进程的终端名。不是从终端启动的进程则显示为 ?

h

PR

优先级

i

NI

nice值。负值表示高优先级,正值表示低优先级

j

P

最后使用的CPU,仅在多CPU环境下有意义

k

%CPU

上次更新到现在的CPU时间占用百分比

l

TIME

进程使用的CPU时间总计,单位秒

m

TIME+

进程使用的CPU时间总计,单位1/100

n

%MEM

进程使用的物理内存百分比

o

VIRT

进程使用的虚拟内存总量,单位kbVIRT=SWAP+RES

p

SWAP

进程使用的虚拟内存中,被换出的大小,单位kb

q

RES

进程使用的、未被换出的物理内存大小,单位kbRES=CODE+DATA

r

CODE

可执行代码占用的物理内存大小,单位kb

s

DATA

可执行代码以外的部分(数据段+)占用的物理内存大小,单位kb

t

SHR

共享内存大小,单位kb

u

nFLT

页面错误次数

v

nDRT

最后一次写入到现在,被修改过的页面数。

w

S

进程状态。
            
D=不可中断的睡眠状态
            
R=运行
            
S=睡眠
            
T=跟踪/停止
            
Z=僵尸进程

x

COMMAND

命令名/命令行

y

WCHAN

若该进程在睡眠,则显示睡眠中的系统函数名

z

Flags

任务标志,参考 sched.h


默认情况下仅显示比较重要的几项数值:

PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND  列。

可以通过下面的快捷键来更改显示内容。
更改显示内容通过 键可以选择显示的内容。按 f 键之后会显示列的列表,

 a-z  即可显示或隐藏对应的列,最后按回车键确定。(我做的时候好像是空格键!)
 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,

而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。
按大写的 F  O 键,然后按 a-z 可以将进程按照相应的列进行排序。

而大写的  R 键可以将当前的排序倒转。


4.
其他
下面介绍在top命令执行过程中可以使用的一些交互命令。

从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。

这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。

h或者?  显示帮助画面,给出一些简短的命令总结说明。
k  终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。

一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15

【在安全模式中此命令被屏蔽。】
i 忽略闲置和僵死进程。这是一个开关式命令。
q  退出程序。
r  重新设置一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。

输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10
S 切换到累计模式。
s  改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s

输入0值则系统将不断刷新,默认值是5  s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,

从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O  改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t  切换显示进程和CPU状态信息。
c  切换显示命令名称和完整命令行。
M  根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W  将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

 

 

free

1.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式

free [b|k|m][o] [s delay] [t] [V]

3.主要参数

m:分别以字节(KBMB)为单位显示内存使用情况。
s delay:显示每隔多少秒数来显示一次内存使用情况。
t:显示内存总和列。
o:不显示缓冲区调节列。

4.应用实例

free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。

 

图片

 

第一行:

total 物理内存总数320276
used 
已经使用的内存数295132
free 
空闲的内存数25144
shared 
当前已经废弃不用,总是0
buffers 
BufferCache内存数36700
cached 
PageCache内存数166612

关系:total = used + free

第二行:
-/+ buffers/cache
的意思相当于:
-buffers/cache 
的内存数:91820(等于第1行的 used – buffers – cached),实际上是应用程序所使用的内存。
+buffers/cache 
的内存数: 228456(等于第1行的 free + buffers + cached),是对应用程序来说还剩余的内存。

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
对操作系统来讲buffers/cached 都是属于被使用,所以它认为free只有25144.
对应用程序来讲是(-/+ buffers/cached).buffers/cached是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

第三行是交换分区swap, 列出已使用、空闲的swap.

[bufferscached都是缓存,两者有什么区别呢?]
为了提高磁盘存取效率, Linux做了一些精心的设计除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer CachePage Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。
Page cache
实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。
Buffer cache
是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。
简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache

所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.
如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

posted on 2012-06-08 09:51  dexterman  阅读(250)  评论(0编辑  收藏  举报