1. Nmon性能监控
Linux和Unix最大的区别:前者是开发源代码的自由软件;而后者是对源代码实行知识产权保护的传统商业软件。
另外两大区别:
- UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
- UNIX是商业软件,而Linux是自由软件,免费、公开源代码的. UNIX(5万美元)而Linux免费
如何监控Linux性能:
- Vmstat ------查看系统状态、硬件和系统信息等
- Top ------ 查看进程活动状态以及一些系统状况
- iostat ------查看CPU 负载,硬盘状况
vmstat 是个查看系统整体性能的小工具,小巧、即使在很 heavy 的情况下也运行良好,并且可以用时间间隔采集得到连续的性能数据。
参数介绍:
- r,可运行队列的线程数,这些线程都是可运行状态,只不过 暂时未执行;
- b,被阻塞( blocked) 的进程数,正在等待 IO 请求;
- in,被处理过的中断数
- cs,系统上正在做上下文切换的数目
- us,用户占用 CPU 的百分比
- sys,内核和中断占用 CPU 的百分比
- wa,所有可运行的线程被 blocked 以后都在等待 IO,这时候 CPU 空闲的百分比
- id,CPU 完全空闲的百分比
- swpd,已使用的 SWAP 空间大小,KB 为单位;
- free,可用的物理内存大小,KB 为单位;
- buff,物理内存用来缓存读写操作的 buffer 大小,KB 为单位;
- cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
- si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
- so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位;
- bi,磁盘块从文件系统或 SWAP 读取到 RAM(blocks in)的大小,block 为单位;
- bo,磁盘块从 RAM 写到文件系统或 SWAP(blocks out)的大小,block 为单位;
分清不同系统的应用类型很重要,通常应用可以分为两种类型:
IO 相关,IO 相关的应用通常用来处理大量数据,需要大量内存和存储,频繁 IO 操作读写数据,而对 CPU 的要求则较少,大部分时间CPU 都在等待硬盘,比如,数据库服务器、文件服务器等。
CPU 相关,CPU 相关的应用需要使用大量 CPU,如高并发的 web/mail 服务器、图像/视频处理、科学计算等都可视作 CPU 相关的应用。
实例,第1个是文件服务器拷贝一个大文件时表现出来的特征,第2个是 CPU 做大量计算时表现出来的特征:
上面两个例子最明显的差别就是 id 一栏,代表 CPU 的空闲率,拷贝文件时候 id 维持在 50% 左右,CPU 大量计算的时候 id 基本为 0。
性能检测CPU:
CPU 的占用主要取决于CPU 上执行的事务类型,如拷贝文件通常占用较少 CPU,因为大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷贝以后给一个中断让 CPU 知道拷贝已经完成;但科学计算通常占用较多的 CPU,大部分计算工作都需要在 CPU 上完成,内存、硬盘等子系统只做暂时的数据存储工作。
准备知识-----操作系统基本知识,如:中断、进程调度、进程上下文切换、可运行队列等。
测试CPU的参考依据:
通常系统能到达以下目标:
CPU 利用率:如果 CPU 有 100% 利用率,那么应该到达这样一个平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;
上下文切换:上下文切换应该和 CPU 利用率联系起来看,如果能保持上面的 CPU 利用率平衡,大量的上下文切换是可以接受的;
可运行队列:每个可运行队列不应该有超过1-3个线程(每处理器),比如:双处理器系统的可运行队列里不应该超过6个线程。
实例分析:
从上面的数据可以看出几点:
- Interrupts(in)非常高,context switch(cs)比较低,说明 CPU 一直在不停的请求资源;
- system time(sy)一直保持在 80% 以上,而且上下文切换较低(cs),说明某个进程可能一直占用 CPU;
- run queue(r)刚好在4个。
性能检测Memory:
这里的“内存”包括物理内存和虚拟内存。
虚拟内存(Virtual Memory)把计算机的内存空间扩展到硬盘,物理内存(RAM)和硬盘的一部分空间(SWAP)组合在一起作为虚拟内存为计算机提供了一个连贯的虚拟内存空间;
优点:内存
缺点:把部分硬盘当内存用整体性能受到影响,硬盘读写速度要比内存慢几个数量级,并且 RAM 和 SWAP 之间的交换增加了系统的负担。
SWAP:
是LINUX下的虚拟内存分区,它的作用是在物理内存用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.
需要注意的是,虽然这个SWAP分区能够作为“虚拟”的内存,但它的速度比物理内存要慢很多
大小一般设为物理内存的2倍
案例分析:
某一天,一个客户打电话来需要技术帮助,并抱怨平常15秒就可以打开的网页现在需要20分钟才可以打开( RedHat ).
性能分析步骤
首先使用vmstat 查看大致的系统性能情况,如下图所示:
分析:
- 不会是内存不足导致,因为swap 始终没变化(si 和 so).尽管空闲内存不多(free),但swpd 也没有变化.
- CPU 方面也没有太大问题,尽管有一些运行队列(procs r),但处理器还始终有50% 多的idle(CPU id).
- 有太多的上下文切换(cs)以及disk block从RAM中被读入(bi).
- CPU 还有平均20% 的I/O 等待情况.
结论: 从以上总结出,这是一个I/O 瓶颈.