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 瓶颈.