日期:2014-05-16 浏览次数:20773 次
一. Linux服务器的性能指标
1. CPU
1.1 CPU状态
在任意时间内,CPU有7个状态:
1.idle,表示CPU闲置并等待工作分配.
2.user,表示CPU在运行用户的进程
3.system,表示CPU在执行kernel工作
4.nice,表示CPU花费在被nice改变过优先级的process上的时间(注意:被nice命令改变优先级的process仅指那些nice值为负的process.花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此整个时间加起来可能会超过百分之百)
5.iowait,表示CPU等待IO操作完成的时间
6.irq,表示CPU开销在响应硬中断上的时间
7.softirq,表示CPU开销在响应软中断上的时间.
我们一般用vmstat看到的都是四个状态:sy,us,id,wa,通过他和load avg结合,基本可以知道cpu的状态
大部分的性能工具用百分比表示CPU时间.当system时间占用很高的时候,你可以用oprofile工具发现时间都花费在哪里.当iowait很高的时候,你需要分析你的IO设备,比如磁盘,网卡.
1.2 Average load
Load Average表示cpu正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列长度的统计信息。
满负载:即CPU Load = CPU个数*核数。一般要保证性能良好,负载最好小于0.7*CPU个数*核数。
例如:2个4核的cpu, Load Average须<
0.7 * 2 * 4 = 5.6
常用命令:
1. 查看cpu信息:grep ‘model name’ /proc/cpuinfo
2. top命令应该是把每个核的CPU占用率加起来,算一个和,于是多核情况下会top命令会计算出超过100%。load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟。
3. vmstat也可以查看
?
[admin@v015210 ~]$ vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 155752 61976 179580 309232 0 1 2 11 0 0 1 0 99 0 0 1 0 155752 61968 179580 309240 0 0 0 0 436 3597 0 0 100 0 0 0 0 155752 61612 179580 309240 0 0 0 0 508 3535 1 2 97 0 0?
其中,r,b是指处于runnable,blocked的process。所有的runnable process形成了一个Run Queue,等待Linux调度线程的调度。系统的load是指running和runnable process的总和。
?
1.3 Interrupts & Context Switches
Interrupts对应vmstat中的in,即被处理过的中断数。在系统中,中断处理器的优先级非常高,而且执行速度非常快.很多时候,有些中断处理并不需要很高的处理优先级,所以也有soft- interrupt handler.如果有很多的中断,kernel需要花费大量的时间去处理中断.可以检查/proc/interrupts能够知道中断发生在哪个CPU 上.
Context Switches对于vmstat中的cs,即系统上正在做上下文切换的数目。 linux内核不断的在不同process间切换,造成一个错觉,让人感觉一个单CPU同时处理多个任务.不同process之间的切换称作 Context Switch.当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息.Context信息包括大量的linux追踪每个process信息,尤其是一些资源:那些process正在 执行,被分配了哪些内存,它打开了那些文件,等等.切换Context会触发大量的信息移动,这是比较高的开销.如果可能的话尽量保持很小的 context switches.?
?
2. 内存
1. 1 内存基础
通常包含物理内存和虚拟内存(virtual Memory),好处是通过物理内存(RAM)和部分硬盘空间(SWAP)组合增大了总体的内存空间,坏处是由于硬盘部分的虚拟内存的性能有限,并且RAM和SWAP之间交换增加了系统的负担。
?
[phoenix.lif@aliadmin036158 ~]$ free total used free shared buffers cached Mem: 7680000 7504764 175236 0 490772 3193856 -/+ buffers/cache: 3820136 3859864 Swap: 2096472 88 2096384
其中,Mem: ?
(1) Total为总的物理内存;(2) Used表示总计分配给缓存使用的数量(即buffers和cache,但可能部分还未实际使用);(3)Free表示未被分配的内存;(4)share表示共享内存,一般不会使用;(5)buffers:表示系统分配但未被使用的b