ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 监控OS的3个命令详解

监控OS的3个命令详解

原创 Linux操作系统 作者:nw5452 时间:2009-09-02 11:42:33 0 删除 编辑

对于这3个linux,感觉很重要,但一直对其中的一些参数具体含义不是很清楚,所以转载了一些总结,让自己加深下印象。                                       

                                      VMSTAT 命令

vmstat 全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。

在系统中使用root身份,执行vmstat 1 命令,观察性能状况。各参数值含义见下方:
vmstat
    procs
    r:
   运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
    b:
   处于不可中断状态的进程数,常见的情况是由IO引起的
    memory
    swpd: 切换到交换内存上的内存(默认以KB为单位)
如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
    free: 空闲的物理内存
    buff: 作为buffer cache的内存,对块设备的读写进行缓冲
    cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。
    Swap
    si: 交换内存使用,由磁盘调入内存
    so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
常有人看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
    io
    bi: 从块设备读入的数据总量(读磁盘) (KB/s),
    bo: 写入到块设备的数据总理(写磁盘) (KB/s)
随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大
    system
    in: 每秒产生的中断次数
    cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
    cpu
    us: 用户进程消耗的CPU时间百分比
us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了
    sy: 内核进程消耗的CPU时间百分比
sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
    wa: IO等待消耗的CPU时间百分比
wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
    id: CPU处在空闲状态时间百分比

情景分析
vmstat1

这个vmstat的输出那些信息值得关注?
procs r: 运行的进程比较多,系统很繁忙
io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
cpu us: 持续大于50,服务高峰期可以接受
cpu wa: 稍微有些高
cpu id:持续小于50,服务高峰期可以接受

 

                                    IOSTAT 命令

# iostat -x
Linux 2.4.21-9.30AX (localhost) 2004年07月14日

avg-cpu: %user %nice %sys %idle
3.85 0.00 0.95 95.20

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/hda 1.70 1.70 0.82 0.82 19.88 20.22 9.94 10.11 24.50 11.83 57.81 610.76 99.96
/dev/hda1 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 12.92 0.00 10.77 10.77 0.00
/dev/hda5 0.02 0.00 0.00 0.00 0.03 0.00 0.02 0.00 6.60 0.00 6.44 6.04 0.00
/dev/hda6 0.01 0.38 0.05 0.03 0.43 3.25 0.21 1.62 46.90 0.15 193.96 52.25 0.41
/dev/hda7 1.66 1.33 0.76 0.79 19.41 16.97 9.70 8.49 23.44 0.79 51.13 19.79 3.07

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。
即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。

svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),
svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多
也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及
I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明
I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用
得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑
更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。

队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是
按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

 

                                               TOP命令

top命令

  top命令和ps命令的基本作用是相同的,显示系统当前的进程和其他状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如? 前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。在后面的介绍中将把命令参数和交互命令分开讲述。


 

  下面是该命令的语法格式:

  top [-] [d delay] [q] [c] [s] [S] [i]

  d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

  q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

  S 指定累计模式。

  s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

  i 使top不显示任何闲置或者僵死进程。

  c 显示整个命令行而不只是显示命令名

  top命令显示的项目很多,默认值是每5秒更新一次,当然这是可以设置的。显示的各项目为:

  uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1秒,5秒,15秒的负载值)。

  processes 自最近一次刷新以来的运行进程总数。当然这些进程被分为正在运行的,休眠的,停止的等很多种类。进程和状态显示可以通过交互命令t来实现。

  CPU states 显示用户模式,系统模式,优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程所消耗的时间也被列入到用户和系统的时间中,所以总的百分比将大于100%。

  Mem 内存使用情况统计,其中包括总的可用内存,空闲内存,已用内存,共享内存和缓存所占内存的情况。

  Swap 交换空间统计,其中包括总的交换空间,可用交换空间,已用交换空间。

  PID 每个进程的ID。

  PPID 每个进程的父进程ID。

  UID 每个进程所有者的UID 。

  USER 每个进程所有者的用户名。

  PRI 每个进程的优先级别。

  NI 该进程的优先级值。

  SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。

  TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。

  DSIZE 数据和堆栈的大小。

  TRS 文本驻留大小。

  D 被标记为“不干净”的页项目。

  LIB 使用的库页的大小。对于ELF进程没有作用。

  RSS 该进程占用的物理内存的总数量,单位是KB。

  SHARE 该进程使用共享内存的数量。

  STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。

  TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。

  %CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。

  %MEM 该进程占用的物理内存占总内存的百分比。

  COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行。

  下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。

  $#@60;空格立即刷新显示。

  Ctrl+L 擦除并且重写屏幕。

  h或者? 显示帮助画面,给出一些简短的命令总结说明。

  k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。

  i 忽略闲置和僵死进程。这是一个开关式命令。

  q 退出程序。

  r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及枰?柚玫慕?逃畔燃吨怠J淙胍桓稣?到?褂畔燃督档停?粗?蚩梢允垢媒?逃涤懈?叩挠畔热āD?现凳?0。

  S 切换到累计模式。

  s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。

  f或者F 从当前显示中添加或者删除项目。

  o或者O 改变显示项目的顺序。

  l 切换显示平均负载和启动时间信息。

  m 切换显示内存信息。

  t 切换显示进程和CPU状态信息。

  c 切换显示命令名称和完整命令行。

  M 根据驻留内存大小进行排序。

  P 根据CPU使用百分比大小进行排序。

  T 根据时间/累计时间进行排序。

  W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

  从上面的介绍中可以看到,top命令是一个功能十分强大的监控系统的工具,尤其对于系统管理员而言更是如此。一般的用户可能会觉得ps命令其实就够用了,但是top命令的强劲功能确实提供了不少方便。下面来看看实际使用的情况。

  [例23] 键入top命令查看系统状况

  $ top

  1:55pm up 7 min, 4 user, load average:0.07,0.09,0.06

  29 processes:28 sleeping, 1 running, 0 zombie, 0 stopped

  CPU states: 4.5% user, 3.6% system, 0.0% nice, 91.9% idle

  Mem: 38916K av, 18564K used, 20352K free, 11660K shrd, 1220K buff

  Swap: 33228K av, 0K used, 33228K free, 11820K cached

  PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND

  363 root 14 0 708 708 552 R 0 8.1 1.8 0:00 top

  1 root 0 0 404 404 344 S 0 0.0 1.0 0:03 init

  2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd

  3 root -12 -12 0 0 0 SW$#@60; 0 0.0 0.0 0:00 kswapd

  4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread

  5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread

  312 root 1 0 636 636 488 S 0 0.0 1.6 0:00 telnet

  285 root 6 0 1140 1140 804 S 0 0.0 2.9 0.00 bash

  286 root 0 0 1048 1048 792 S 0 0.0 2.6 0.00 bash

  25 root 0 0 364 364 312 S 0 0.0 0.9 0.00 kerneld

  153 root 0 0 456 456 372 S 0 0.0 1.1 0.00 syslogd

  160 root 0 0 552 552 344 S 0 0.0 1.4 0.00 klogd

  169 daemon 0 0 416 416 340 S 0 0.0 1.0 0.00 atd

  178 root 2 0 496 496 412 S 0 0.0 1.2 0.00 crond

  187 bin 0 0 352 352 284 S 0 0.0 0.9 0.00 portmap

  232 root 0 0 500 500 412 S 0 0.0 1.2 0.00 rpc.mountd

  206 root 0 0 412 412 344 S 0 0.0 1.0 0.00 inetd

  215 root 0 0 436 436 360 S 0 0.0 1.1 0.00 icmplog

  第一行的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。然后下面就是和ps相仿的各进程情况列表了。

  总的来说,top命令的功能强于ps,但需要长久占用前台,所以用户应该根据自己的情况来使用这个命令。

转载自:http://www.51tech.net/news_html/1471.htm

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10710960/viewspace-613779/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle Hint的用法
请登录后发表评论 登录
全部评论

注册时间:2008-01-13

  • 博文量
    21
  • 访问量
    56064