Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90908
  • 博文数量: 69
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 697
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-03 23:44
文章分类

全部博文(69)

文章存档

2014年(69)

我的朋友

分类: LINUX

2014-05-16 23:47:57

vmstat
用法:
vmstat 时间间隔 次数
[root@localhost ~]# vmstat  1
procs        ---------------memory---------------       ---swap--     -----io----     --system--      ---------cpu-----------
 r  b        swpd      free      buff       cache        si   so       bi    bo       in     cs       us    sy    id   wa   st
 3  0         0      54920248   480992     7059988       0    0        0    772       1444  74357      0     0    100  0    0 
 3  0         0      54920372   480992     7059988       0    0        0     0        1244  74375      0     0    100  0    0

解析:
procs:
r: 表示运行和等待cpu时间片的进程数,当这个值超过CPU数目,就会出现CPU瓶颈了。
b: 表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

memory:
swpd: 正在使用的swap大小,单位K。
free: 可用内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小。如果cache较大,说明用到cache的文件较多,如果此时io中bi比较小,说明文件系统效率比较好。

swap:
si: 从内存进入虚拟内存的数量。
so: 从虚拟内存进入内存数量。

io:
bi: 读磁盘(从块设备读入数据的总量)(每秒kb)。
bo: 写磁盘(块设备写入数据的总量)(每秒kb)。

system:
in: 每秒CPU中断数,包括时钟中断。
cs: 每秒产生的上下文切换次数。

cpu(以百分比表示):
us: 用户进程消耗CPU的百分比(每秒)。
sy: 系统进程消耗CPU的百分比(每秒)。
id: CPU空闲的百分比(每秒)。
wa: IO等待消耗CPU的百分比(每秒)。

iostat
参数:
-c : 仅显示cpu的状态。
-d : 仅显示存储设备的状态,不可以和-c一起使用。
-k : KB大小来显示。
-m : MB大小表示。
-t : 显示日期。
-x : 获得更多统计信息。

[root@localhost ~]# iostat -xk 1
Linux 2.6.18-238.el5 (localhost.localdomain) 04/16/2013

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.54    0.00    0.21    0.19    0.00   98.06

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.01    41.94  0.03 15.65     0.41   230.41    29.45     0.41   26.26   3.07   4.81
sda1              0.00     0.00  0.00  0.00     0.00     0.00    14.94     0.00    4.60   3.44   0.00
sda2              0.00     0.00  0.00  0.00     0.00     0.00    29.24     0.00    5.29   3.37   0.00
sda3              0.01    41.94  0.03 15.65     0.41   230.41    29.45     0.41   26.26   3.07   4.81

解析:
%user 用户级(应用程序)的 CPU 使用率百分比。 
%nice: 改变过优先级的进程的占用CPU的百分比。
%system: 系统级(内核)的 CPU 使用率百分比。 
%iowait: CPU 空闲期间系统未完成的磁盘 I/O 请求的时间百分比。
%idle:  CPU 空闲并且系统没有未完成的磁盘 I/O 请求的时间百分比。  
rrqm/s: 每秒进行 merge 的读操作数目。
wrqm/s: 每秒进行 merge 的写操作数目。
r/s: 每秒完成的读 I/O 设备次数。
w/s: 每秒完成的写 I/O 设备次数。
rsec/s: 每秒读扇区数。
wsec/s: 每秒写扇区数。
rkB/s: 每秒读K字节数。
wkB/s: 每秒写K字节数。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。如果svtm接近await,说明IO几乎没有等待时间,如果await远大于svctm,说明 I/O 队列太长,应用得到的响应时间变慢。
%util: 一秒中有百分之多少的时间用于 I/O 操作。

[root@localhost ~]# iostat  -dk 1
Linux 2.6.18-238.el5 (localhost.localdomain) 04/16/2013

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              15.68         0.41       230.43     492809  277874459
sda1              0.00         0.00         0.00        966         79
sda2              0.00         0.00         0.00        745          0
sda3             15.68         0.41       230.43     490885  277874380
解析:
tps:该设备每秒钟I/O请求数。
kB_read/s:每秒从设备读取的数据量。
kB_wrtn/s:每秒向设备写入的数据量。
kB_read:读取的总数据量。
kB_wrtn:写入的总数量数据量。

CPU负载
1、CPU负载指的是一段时间内任务(进程)队列的长度,通俗的讲,就是一段时间内一共有多少任务(进程)在使用或等待使用CPU。
2、CPU负载和CPU利用率区别:CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。
举例说明:
某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系。
3、CPU负载是基于CPU内核数,如果有两个物理CPU,每个CPU是2核的,那么以前十五分钟的平均负载数10.49为例,我们可以得出,这台服务器每个CPU的负载为5.245,再分配到内核上,每个内核的负载为2.6左右。0.7乘以内核数,得出服务器理想的CPU负载
4、逻辑CPU,超线程技术:
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程。虽然采用超线程技术一个CPU能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

CPU负载高是因为运行的队列累积过多了,这些队列可能耗CPU,也可能耗I/O等其他因素,所以造成CPU负载高的原因可能是:(1)CPU不足,处理能力不强,导致队列积累过多;(2)IO不够快,导致队列中耗IO的累积过多;(3)内存不足;(4)正在进行cpu密集型的计算等系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数,不是系统负荷的百分比。如果一个进程满足以下条件则其就会位于运行队列中:
 - 它没有在等待I/O操作的结果
 - 它没有主动进入等待状态(也就是没有调用'wait')
 - 没有被停止(例如:等待终止)

[root@localhost ~]# uptime
 14:47:37 up 96 days, 41 min,  1 user,  load average: 24.27, 26.52, 26.14
假设系统有24个CPU,那么其每个CPU的当前任务数为:24.27/24=1.01125
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。

磁盘IO
1、查看哪些进程在读写磁盘
用iotop(没有则yum install iotop)
2、该程序在读写什么文件
lsof -c 进程名
阅读(242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~