查看linux系统的性能,一般可以通过free、iostat、vmstat、top等命令来查看
[root@kumu ~]# free
total used free shared buffers cached
Mem: 4112856 879144 3233712 0 60388 502008
-/+ buffers/cache: 316748 3796108
Swap: 4096564 0 4096564
[root@kumu ~]#
介绍:
第一行:内存使用
total 物理内存总数:4112856
used 已经使用的内存数: 879144
free 空闲的内存数:3233712
shared 当前已经废弃不用,总是0
buffers 即Buffer Cache内存数: 60388
cached 即Page Cache内存数: 502008
-/+ buffers/cache:
-buffers/cache 的内存数:316748 (等于第1行的 used – buffers – cached),实际上是应用程序所使用的内存
+buffers/cache 的内存数: 3796108 (等于第1行的 free + buffers + cached),是对应用程序来说还剩余的内存
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数
对操作系统来讲buffers/cached 都是属于被使用,所以它认为free只有3233712
第三行:
交换分区swap, 列出已使用、空闲的swap
buffer 与cache 的区别:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.
Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。
[root@kumu ~]# iostat -d -k 1 5
Linux 2.6.18-194.el5PAE (kumu) 2011年12月31日
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 6.96 84.26 39.50 531689 249235
sda1 0.01 0.14 0.00 911 11
sda2 6.94 83.97 39.50 529841 249224
sda3 0.01 0.11 0.00 721 0
[root@kumu ~]# iostat -x -d -k 1 5
Linux 2.6.18-194.el5PAE (kumu) 2011年12月31日
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 2.31 6.34 3.49 3.18 79.95 38.20 35.42 0.10 15.60 1.76 1.18
sda1 0.13 0.00 0.01 0.00 0.14 0.00 26.34 0.00 5.00 4.76 0.01
sda2 2.09 6.34 3.47 3.18 79.67 38.20 35.44 0.10 15.63 1.76 1.17
sda3 0.09 0.00 0.01 0.00 0.11 0.00 38.97 0.00 4.16 3.86 0.00
[root@kumu ~]# iostat -c 1 5
Linux 2.6.18-194.el5PAE (kumu) 2011年12月31日
avg-cpu: %user %nice %system %iowait %steal %idle
8.32 0.02 0.68 0.52 0.00 90.46
常见用法:
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)
iostat -c 1 10 #查看cpu状态
参考自:http://www.orczhou.com/index.php/2010/03/iostat-detail/
vmstat是一个十分有用的Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息
[root@kumu ~]# vmstat 2 //每2秒输出一条结果
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 3202764 64332 511152 0 0 37 18 576 923 9 1 90 1 0
0 0 0 3203012 64332 511156 0 0 0 0 1002 1579 10 0 89 0 0
0 0 0 3203052 64332 511156 0 0 0 0 1012 1503 3 0 97 0 0
目前说来,对于服务器监控有用处的度量主要有:
r(运行队列)
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 3201024 413236 404180 0 0 36 18 577 932 9 1 90 0 0
0 0 0 3201056 413240 404244 0 0 0 0 1148 1689 12 0 88 0 0
[root@kumu ~]# top //top的内容很多,这里就不多介绍了,详细查看前3个参数
top - 10:30:35 up 1:10, 2 users, load average: 0.53, 0.37, 0.28
Tasks: 132 total, 1 running, 130 sleeping, 0 stopped, 1 zombie
Cpu(s): 7.3%us, 0.6%sy, 0.0%ni, 91.3%id, 0.8%wa, 0.0%hi, 0.0%si,
Mem: 4112856k total, 878900k used, 3233956k free, 60380k buffer
Swap: 4096564k total, 0k used, 4096564k free, 501924k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID
|
进程id编号
|
USER
|
进程所有者的用户名
|
PRI
|
进程的优先级
|
SIZE
|
进程大小,包括它的代码、栈和数据区域,以千字节为单位
|
RSS
|
进程使用的内存总量,以千字节为单位
|
SHARE
|
进程使用的共享内存数量
|
STAT
|
进程的状态,通常R表示运行,S表示休眠
|
%CPU
|
自从最近的屏幕更新以来,这个进程使用的CPU百分比
|
%MEM
|
这个进程使用的内存百分比
|
TIME
|
自从进程启动以来,这个进程使用的CPU时间量
|
CPU
|
最近执行进程的CPU
|
COMMAND
|
正在执行的命令
|