Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1417442
  • 博文数量: 122
  • 博客积分: 340
  • 博客等级: 一等列兵
  • 技术积分: 2967
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 11:50
个人简介

说点什么呢

文章分类

全部博文(122)

文章存档

2018年(2)

2017年(1)

2015年(2)

2014年(30)

2013年(81)

2011年(5)

2009年(1)

分类: LINUX

2013-12-10 11:29:30

1. mpstat命令

mpstat命令显示多CPU系统上的CPU使用情况,可以显示单个CPU使用情况,也可以显示所有的CPU的使用情况。这个工具包括在sysstat软件包里。mpstat命令输出如下:

# mpstat -P ALL

上述输出的各字段的含义与top命令的输出类似的。

2. pmap命令

pmap命令可以查看进程使用内存情况。可以详细的显示进程的每个库使用的内存情况。

3. CPU瓶颈和调优

通过Linux下的命令top ,vmstat, sar等等都可以查看系统CPU的负载情况。通过这些信息可以分析系统瓶颈是不是在CPU这里。需要注意的是,往往由其它子系统的原因也会影响CPU的负载,所以要尽量区分开是不是其它子系统导致CPU负载很高。如磁盘的IO瓶颈、内存的瓶颈等等。

在对称多处理器系统(SMP)里,可以将某些里程绑定到指定的CPU上来处理,即将进程分别绑定到不同的CPU上,这样可以减少因为进程在不同的CPU之间切换而导致的CPU缓存需要频繁的清理,同时也可以提高CPU缓存的命中率,提高系统的性能。

当确认系统的性能瓶颈出在CPU这一块时,可以通过以下几个方面来调优:

确保后台没有非必要的任务在运行,同时查看定时任务里是否有定时启动一些非必要的定时任务;

找出非关键性的任务,然后用renice命令来调整这些进程的优先级,以保证关键性进程优先执行,并获得更多的CPU执行时间。在启动一个程序的时候可以用下列命令来指定一个进程的nice值:nice -n -5 xyz。表示启动xyz程序,并将其nice值设备为-5。而要修改一个正在运行的程序的nice值可以使用以下命令:renice 10 2500,表示将PID值为2500的进程的nice值调整为10

SMP系统中,使用taskset命令来绑定进程运行的CPU,如apache的其中一个进程的PID17192,则命令形式如下:taskset -p -c 0 17192  表示将其绑定到0CPU上了。用taskset -p 17192命令来查看绑定情况。

分析应用程序决定其是适合提升CPU的等级还是扩展CPU的数量。有些应用是适合提升CPU等级,如更换更快的CPU,而有些CPU是适合于扩展CPU的数量。例如,单线程的应用就只适合于提高CPU的速度。

升级驱动程序和固件;

4. 内存瓶颈和调优

与其它类UNIX系统相似,在linux系统中,内存页面调度(paging)和内存交换(swapping)是不同的。内存页面换出是将单独的内存页的内容移到磁盘上的交换分区上;而内存交换则是将整个进程的所有内存空间的数据都移到磁盘上的交换分区上。以下两个原因可能引内存交换:

进程进入睡眠模式。这个一般是在进程在等待用户或外界输入时,进程可能进入睡眠模式下;

进程的行为不活跃。当有内存页需要换进系统内存时,而此时系统的可用内存小于该换进页面的最小大小时,会引起比较严重地系统性能问题。因为系统需要将内存中的某些数据交换到磁盘上,以便得到更多的可用内存,这会较大的增大磁盘的IO请求并快速的降低服务器的性能。

如果系统频繁的进行页换出(即有很高的页换出率),那就可以判断出内存是系统的瓶颈,需要添加更多的内存。而如果页换出率较低,则说明内存对系统性能的影响较小。

如果确认系统的瓶颈在内存这一块,那么就可以尝试用下列方法来进行调整:

调整交换分区的大小;

增加或减少内存页的大小;

改善活动内存和非活动内存;

调整内存页换出率;

限制服务器上每个用户的资源;

关闭掉不需要的服务;

增加内存;

5. 磁盘瓶颈和调优

磁盘子系统通常是影响系统性能的最重要的一个方面,而且通常也是最常见遇见瓶颈的。但是,这种瓶颈现象又常常会表现为其它组件的瓶颈,例如表现为内存不足等。

当使用较大的单块硬盘时,就意味着在单块硬盘上存放的数据就较多,因此,在同一时刻访问单块硬盘的I/O请就会相应的增加,而这会经常引起磁盘的性能瓶颈。所以,为获得相同数量的磁盘空间,使用多块硬盘组合起来往往比使用单块硬盘可以获得更高的系统性能。

与此类似的是,在同一块磁盘阵列上划分过多的逻辑盘同样会影响系统的性能。因为这会增加磁盘的寻址时间,从而大大的降低系统的性能。

如果系统有以下表现现象则说明系统可能遇到磁盘性能瓶颈:

内存缓冲区里充满的都是写的数据(或者等待读的数据,如何查看?)

内存不足。

磁盘或磁盘控制器的利用率非常高;

网络响应时间较长,但同时网络利用率不高;

磁盘I/O操作所花的时间较长;

通过vmstat 命令和iostat命令,我们可以很快的发现硬盘的瓶颈。在vmstat命令中,我需要更多的关注bi bo这两个字段。而在iostat命令的输出里,我们需要更多的是关注awaitsvctm这两个字段。Await表示系统等待IO请求完成的时间,而svctm则表示磁盘实际执行这个IO操作所花的时间。如果这两个时间相近则说明磁盘的负载不高,否则则说明磁盘IO队列里有大量的IO请求需要完成,一般就表示系统瓶颈就出在这里。

阅读(1604) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~