天行健,君子以自强不息!
分类: 系统运维
2014-01-03 10:33:00
版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明。
原文名称:《Linux Performance and Tuning Guidelines》
原文地址:
-------------------------------------------------------------------------------------------
1.6.1 处理器性能指标
1.6.2 内存性能指标
1.6.3 网络性能指标
1.6.4 块设备性能指标
-------------------------------------------------------------------------------------------
在我们了解Linux操作系统中各种调优参数和性能度量工具前,有必要讨论一下关于系统性能的各种可用指标和他们的意义。
由于Linux是一个开源的操作系统,所以有很多性能度量工具可以使用。你最后选择哪个工具取决于你的个人喜好和数据量以及你需要的详细程度。
虽然有很多工具可以使用,但所有的性能度量工具都测量相同的指标,所以理解这些指标能让你使用任何你所碰到工具。
为此我们只涉及了最重要的一些指标。有许多更详细的指标可以用来做深入分析,但这些已超出了本文的范畴。
1.6.1 处理器性能指标
下面是关于处理器的性能指标。
? CPU使用率【CPU Utilization】
这可能是最直接的指标了,它表示每个处理器的整体使用率。
在IBM System x架构中,如果在持续一段时间里CPU使用率超过80%,就可能预示着CPU出现了瓶颈。
? 用户时间【User Time】
表示用户进程所花费的CPU百分比,包括Nice时间。在用户时间值很高的情况下,表明系统正在执行实际的工作。
? 系统时间【System Time】
表示内核操作所花费的CPU百分比,包括硬中断【IRQ】和软中断[SoftIRQ]。
系统时间值持续很高表明网络或驱动器堆栈可能存在瓶颈。通常系统只花费很少时间在内核时间上。
? 等待【Waiting】
花费在等待I/O操作所需的CPU时间总和,与阻塞【Blocked】值相似,
系统不应该花费过多的时间等待I/O操作;否则你应该检查一下I/O子系统各方面性能。
? 空闲时间【Idle time】
表示CPU空闲的百分比。
? Nice时间【Nice time】
表示花费在执行re-nicing(改变进程的执行顺序和优先级)进程的CPU百分比。
? 平均负载【Load average】
平均负载不是百分比,它是下面数值之和的平均值:
– 队列中等待执行的进程数
– 等待不可中断任务执行完成的进程数。
也就是TASK_RUNNING和TASK_UNINTERRUPTIBLE之和的平均值。
如果请求CPU时间的进程发生阻塞(),平均负载将会上升。
相反如果每个进程都可以立即执行不会错过CPU周期,平均负载就会降低。
? 可运行进程【Runable processes】
这个值表示准备执行的进程。这个值在持续一段时间按内应该不会超过物理处理器数量的10倍,否则CPU可能存在瓶颈。
? 堵塞【Blocked】
在等待I/O操作完成前,进程是不能继续执行。进程堵塞可能意味着I/O存在瓶颈。
? 上下文交换【Context switch】
系统中进程之间进行交换的数量。上下文交换次数过多与大量的中断有关,这可能暗示着驱动器或应用程序存在问题。
通常是不需要上下文交换的,因为每次只需要刷新CPU缓存,但有些上下文交换是必要的。参见1.1.5“上下文交换”。
? 中断【Interrupts】
中断数量中包括硬中断和软中断。硬中断会对系统性能产生非常不利的影响。高中断值表明软件存在瓶颈,可能是内核或者驱动。
请记住中断值中也包括CPU始终所导致的中断。参见1.1.6“中断处理”。
1.6.2 内存性能指标
下面是关于内存的性能指标。
? 空闲内存【Free memory】
与其它操作系统相比,不必过分在意空闲内存值。正如1.2.2“虚拟内存管理”所述,
Linux内核将大量未使用的内存分配作为文件系统缓存使用,所以在已用内存扣除用于缓冲和缓存的数量得到实际空闲内存。
? 交换空间使用【Swap usage】
这个值表示已使用的交换空间数量。正如1.2.2“虚拟内存管理”所述,交换空间的使用只能告诉你Linux在管理内存上是多么有效。
要想确定内存是否存在瓶颈,Swap In/Out的数量才以为着用来。
如果Swap In/Out长时间保持在每秒钟超过200到300页以上可能表示内存存在瓶颈。
? 缓冲与缓存【Buffer and cache】
被用来作为文件系统和块设备的缓存
? Slabs
表示内核所使用的内存。注意内核的页是不能被交换到硬盘上的。
? 活动与非活动内存【Active versus inactive memory】
提供关于活动内存的相关信息。非活动内存会作为候选被kswapd交换到硬盘。参见“页帧回收”
1.6.3 网络性能指标
下面是关于网络的性能指标。
? 已收到和已传送的封包【Packets received and sent】
这个指标能告诉你特定网卡已收到和已发送的封包数量
? 已收到和已传送的字节【Bytes received and sent】
这个值表示特定网卡已收到和已发送的字节数量。
? 每秒钟冲突数【Collisions per second】
这个值提供发生在指定网卡的网络冲突的数量。持续出现冲突值表示在网络架构中存在瓶颈而不是服务器。
在大多数正确配置网络中,冲突时非常罕见的,除非网络架构是由hub组成的。
? 丢弃的封包【Packets dropped】
被内核丢弃的封包数,原因可能是防火墙配置问题或缺乏网络缓冲
? Overruns
Overruns表示超出网络接口缓冲的次数。这个指标可以与丢弃的封包数量配合来确定瓶颈是出自网络缓冲还是网络队列长度。
? 错误【Errors】
被标示为失败的帧的数量。这经常是由于网络不匹配或部分网线损坏引起的。对于铜缆千兆网部分网线损坏会产生严重的性能问题。
1.6.4 块设备性能指标
下面是关于块设备的性能指标。
? IO等待【Iowait】
CPU在等待I/O操作发生所花费的时间。如果这个值持续很高,很可能表示I/O存在瓶颈。
? 队列平均长度【Average queue length】
I/O请求的数量。通常硬盘队列值在2到3为最佳;过高可能表示硬盘I/O存在瓶颈。
? 平均等待时间【Average wait】
I/O请求服务所花费的平均时间。等待时间包括实际I/O操作的时间和在I/O队列中等待的时间。单位为毫秒ms。
? 每秒钟传输的数量【Transfers per second】
表示每秒钟执行了多少次I/O操作(包括读取和写入)。
与每秒钟传输字节数【kBytes per second】结合可以帮助确定系统平均传输大小。平均传输大小通常要与硬盘子系统的条带大小一致。
? 每秒钟读写块的数量【Blocks read/write per second】
这个指标表示每秒钟读写块的数量,在2.6内核中块的大小为1024字节,早期的内核可以有不同的块大小,从512字节到4KB。
? 每秒钟读写字节的数量【Kilobytes per second read/write】
表示块设备读写的实际数据的数量,单位为KB。