Linux服务器性能测试及分析命令大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LinuxLinuxLinuxLinux服务器性能测试及分析命令大全“不积其跬步,无以至千里。”——技术!“文章至天成,妙手偶得之。”——文学!摘取天上星,一个热爱互联网艺术的人!性能测试及分析::::Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存、CPU、硬盘……)出了问题。在Linux系统中,所有的运行参数保存在虚拟目录/proc中,换句话说,我们使用的性能监控工具取到的数据值实际上就是源自于这个目录,当涉及到系统高估时,我们就可以修改/proc目录中的相关参数了,当然有些是不能乱改的。下面就让我们了解一下这些常用的性能监控工具。工具功能描述uptime----系统平均负载率dmesg----硬件/系统信息top-----进程进行状态iostat--------CPU和磁盘平均使用率vmstat---------系统运行状态sar---------实时收集系统使用状态KDESystemGuard---图形监控工具free---------------内存使用率traffic-vis------------网络监控(只有SUSE有)pmap-------------进程内存占用率strace---------追踪程序运行状态ulimit---------系统资源使用限制mpstat-------------多处理器使用率topfreepsuptimeatopslabtopvmstatwpmaputmplinuxlinuxlinuxlinux服务器性能检测与分析VersionVersionVersionVersionDateDateDateDateAuthorAuthorAuthorAuthorDescriptionDescriptionDescriptionDescription1.02011/5/26dengwu@taobao.com初稿1.12011/6/23dengwu@taobao.com添加CPU分析1.22012/2/20dengwu@taobao.com添加MEM,IO分析1.32012/2/23dengwu@taobao.com更新工作原理1.42012/2/25dengwu@taobao.com添加中断分析1.52012/2/28dengwu@taobao.com添加网络分析1性能测试简介l性能测试的过程就是找到系统瓶颈的过程。l性能测试(包括分析和调优)的过程就是在操作系统的各个子系统之间取得平衡的过程。l操作系统的各个子系统包括:ØCPUØMemoryØIOØNetwork他们之间高度依赖,互相影响。比如:1.频繁的磁盘读写会增加对内存的使用2.大量的网络吞吐,一定意味着非常可观的CPU利用率3.可用内存的减少可能增加大量的swapping,从而使系统负载上升甚至崩溃2应用程序类型性能测试之前,你首先需要判断你的应用程序是属于那种类型的,这可以帮助你判断哪个子系统可能会成为瓶颈。通常可分为如下两种:CPUbound–这类程序,cpu往往会处于很高的负载,当系统压力上升时,相对于磁盘和内存,往往CPU首先到达瓶颈。Webserver,mailserver以及大部分服务类程序都属于这一类。I/Obound–这类程序,往往会频繁的访问磁盘,从而发送大量的IO请求。IO类应用程序往往利用cpu发送IO请求之后,便进入sleep状态,从而造成很高的IOWAIT。数据库类程序,cache服务器往往属于这种类型。3CPU3.1性能瓶颈性能瓶颈性能瓶颈性能瓶颈3.1.1运算性能瓶颈作为计算机的计算单元,其运算能力方面,可能出现如下瓶颈:1.用户态进程CPU占用率很高2.系统态(内核态)CPU占用率很高测试CPU的运算性能,通常是通过计算圆周率来测试CPU的浮点运算能力和稳定性。据说PentiumCPU的一个运算bug就是通过计算圆周率来发现的。圆周率的计算方法,通常是计算小数点后104万位,通过比较运算时间来评测CPU的运算能力。常用工具:1.SUPERPI(π)2.Wprime与SuperPI不同的是,可以支持多核CPU的运算速度测试3.FritzChess一款国际象棋测试软件,测试每秒钟可运算的步数突破CPU的运算瓶颈,一般只能靠花钱。比如提高时钟频率,提高L1,L2cache容量或不断追求新一代的CPU架构:Core-Nehalem(E55x,如r710,dsc1100)-Westmere–SandyBridge3.1.2调度性能瓶颈CPU除了负责计算之外,另一个非常重要的功能就是调度。在调度方面,CPU可能会出现如下性能瓶颈:1.Load平均值超过了系统可承受的程度2.IOWait占比过高,导致Load上升或是引入新的磁盘瓶颈3.ContextSwitch过高,导致CPU就像个搬运工一样,频繁在寄存器(CPURegister)和运行队列(runqueue)之间奔波4.硬中断CPU占比接近于100%5.软中断CPU占比接近于100%超线程超线程芯片可以使得当前线程在访问内存的间隙,处理器可以使用它的机器周期去执行另外一个线程。一个超线程的物理CPU可以被kernel看作是两个独立的CPU。3.2典型监控参数典型监控参数典型监控参数典型监控参数图1:top图2:mpstat3.2.1参数含义ØLoadLoad是指CPU所有内核正在处理的任务加上处于运行队列中的进程数之和。处于运行队列(runqueue)中的进程包括TASK_RUNNING和TASK_UNINTERRUPTIBLE两种状态的任务:Ø处于可运行状态的进程Ø等待不可中断任务的进程在一个双核的系统中,如果两个进程正在执行,有四个进程处于runquque当中,那么load就是6Vmstat中r指的就是runqueue中的进程数目对比一下同一时刻top统计出来的loadØNice%用户进程空间内,通过调用nice或setpriority系统调用改变过优先级的进程的CPU占用率ØIowait%CPU等待IO操作的时间ØIdle%CPU空闲时间ØIntr/s每秒钟处理的中断数ØHi%服务于IRQs的时间占比ØSi%服务于SoftIRQs的时间占比ØSt%关于st的解释,在IBM的一份文档里,有一段描述:IBM’sdefinitionofstealtimeisactuallyprettygood:StealtimeisthepercentageoftimeavirtualCPUwaitsforarealCPUwhilethehypervisorisservicinganothervirtualprocessor.3.3工作原理工作原理工作原理工作原理为了更好地理解CPU的性能参数,需要了解下面几个概念3.3.1进程及进程调度算法1.什么是线程图3:进程和线程的数据结构从性能测试角度来看,我倾向于这样理解线程:1.线程和进程的确不同,因为他们可以共享进程的资源,如地址空间等。因此在上下文切换的过程中线程可能会产生较小的性能损耗。2.站在调度器(scheduler)的角度来说,线程就是一个进程,或者说是一个轻量级的进程(LightWeightProcess)。Kernel实际上就是通过轻量级的进程来支持多线程应用程序的。我们经常用的线程开发库pthread就是通过将轻量级进程和线程关联起来,来实现的。这样既可以实现资源的共享,又可以让每个线程被调度器独立调度。2.进程的状态Ø可运行状态(TASK_RUNNING)Ø不可中断的等待状态(TASK_UNINTERRUPTIBLE)Ø暂停状态(TASK_STOPPED)Ø跟踪状态(TASK_TRACED)Ø僵死状态(EXIT_ZOMBIE)问题Waitio%包含在idle%当中吗?从下面top实例可以看出,waitio%不属于idle%,等IO的过程被叫做uninterruptiblesleepCpu1:2.7%us,3.0%sy,0.0%ni,3.7%id,89.7%wa,0.0%hi,1.0%si,0.0%st3.3.2上下文切换(ContextSwitches)3.3.3运行队列(RunQueue)3.3.4硬中断性能测试中关注的中断,主要由IO设备所产生,如键盘的一次按键,网卡接收报文等等。IRQIO设备所发出的IRQ(InterruptReQuest)请求叫做中断请求(可屏蔽中断)每个能够发出中断的IO设备都有一个IRQ输出线(部分高级千兆网卡,和大部分万兆网卡都多条IRQ输出线)。每条IRQ输出线和可编程中断控制器(ProgrammableInterruptController)引脚相关联。每个IRQ输出线的中断信号,只能被一个CPUcore处理,IRQ线从0开始编号。如何观察IRQ的状态:问题3:大量的中断,是否会使CPU响应中断成为瓶颈呢?答案是一般不会,中断享有最高的优先级,有硬件中断发生时,CPU会立即停下手中的工作,响应中断,并调用相应中断处理程序。瓶颈一般发生在中断处理程序。IRQ硬件中断是否意味着不会出现瓶颈呢?瓶颈有可能出现在中断的服务例程中,看下面的流程图:IRQ在多处理器上的分发:遵循对称多处理模型,每个IO中断的处理时间片是相同的,均匀分配。Kernel通过中断向量表来将中断信号发送到特定的CPU上去。在必要的时候,Linux2.6利用kirqd的内核线程来纠正IRQ在CPU上的分配。kirqd线程周期性的执行扫描每个CPU处理的中断个数,发现不均衡时重新调整CPU的负载。下面的案例表明,IRQ在CPU上的分配不够均衡,因为8个CPU,只有4个CPU有负载:3.3.5软中断Linuxkernel通过一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断(softirq)。Linux中的软中断软中断说明NET_TX_SOFTIRQ把数据包传送到网卡NET_RX_SOFTIRQ从网卡接收数据包从网卡到IP层的数据处理,是有以上软中断来处理的。软中断是否可能出现瓶颈呢?Ksoftirqd每个CPU都有自己的ksoftirqd/n(n为CPU的逻辑号码)。每个ksoftirqd/n内核线程都运行ksoftirqd()函数来处理自己的中端队列上的软中断。当网卡和IP层数据包处理很繁忙时,中断处理程序会出现瓶颈.下图可看出ksoftirqd出现了瓶颈:软中断处理出现瓶颈,ksoftirqd可通过cpu的si%的来观察到。4内存4.1虚拟内存Linuxkernel使用虚拟内存机制来利用磁盘对内存的空间进行扩展。Kernel将暂时不用的内存写入到磁盘从而释放出更多的可用内存。当这些数据再次被使用时,会被重新加载到内存当中。用作虚拟内存的磁盘空间被称作swapspace。对硬盘的读写,相对于内存来说速度要慢许多,因此使用了虚拟内存的程序,速度也会相应变慢。对虚拟内存的使用,往往被认为是内存出现瓶颈的标志。问题n:swap空间被使用是否意味着出现了内存瓶颈?Kswapd和PageFrameReclaimAlgorithm当系统的可用内存低于阈值时(page_low,page_high),kswpad服务比那开始扫描可以被swapout的空间,并试图一次swapout32个内存页。该过程不断重复知道可用内存达到page_high水平线位置。被swapout的内存也被放在swapspae当中。Kswapd回收内存的算法被称作PageFrameReclaimAlgorithm,一下类型的内存也是可以被回收的:•Swappable–anonymousmemorypages•Syncable–pagesbackedbyadiskfile•Discardable–staticpages,discardedpages内存的回收采用LRU策略,最近不被经常使用的内存页,应该首先被回收。现在来回答上面的问题:swap空间被利用恰恰说明了Linux的内存使用的合理性,并不能表示内存出现了瓶颈。对Swap空间的换入换出的速率是表征内存出

1 / 77
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功