Linux性能监控、调优(CPU篇)

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  前言: 网上其实有很多关于这方面的文章,那为什么还会有此篇呢,有这么几个原因,是我翻译的动力,第一,概念和内容虽然老套,但都讲得很透彻,而且还很全面.第二,理论结合实际,其中案例分析都不错.第三,不花哨,采用的工具及命令都是最基本的,有助于实际操作.但本人才疏学浅,译文大多数都是立足于自己对原文的理解,大家也可以自己去OSCAN上找原文,如果有什么较大出入,还望留言回复,甚是感激!

  1.0 性能监控介绍

  性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数管理员相信看一些相关的”cook book”就可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实是对OS 各子系统达到一种平衡的定义,这些子系统包括了:

  CPU

  Memory

  IO

  Network

  这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如:

  大量的页调入请求导致内存队列的拥塞

  网卡的大吞吐量可能导致更多的 CPU开销

  大量的CPU开销又会尝试更多的内存使用请求

  大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO问题

  所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统出现问题,其实有可能是别的子系统导致的.

  1.1 确定应用类型

  基于需要理解该从什么地方来入手优化瓶颈,首先重要的一点,就是理解并分析当前系统的特点,多数系统所跑的应用类型,主要为2种:

  IO Bound(译注:IO 范畴): 在这个范畴中的应用,一般都是高负荷的内存使用以及存储系统,这实际上表示IO 范畴的应用,就是一个大量数据处理的过程.IO 范畴的应用不对CPU以及网络发起更多请求(除非类似NAS这样的网络存储硬件).IO 范畴的应用通常使用CPU 资源都是为了产生IO 请求以及进入到内核调度的sleep 状态.通常数据库软件(译注:mysql,oracle等)被认为是IO 范畴的应用类型.

  CPU Bound(译注:CPU 范畴): 在这个范畴中的应用,一般都是高负荷的CPU 占用. CPU 范畴的应用,就是一个批量处理CPU 请求以及数学计算的过程.通常web server,mail server,以及其他类型服务被认为是CPU 范畴的应用类型.

  1.2 确定基准线统计

  系统利用率情况,一般随管理员经验以及系统本身用途来决定.唯一要清楚的就是,系统优化希望达成什么效果,以及哪些方面是需要优化,还有参考值是什么?因此就建立一个基准线,这个统计数据必须是系统可用性能状态值,用来比较不可用性能状态值.

  在以下例子中,1个系统性能的基准线快照,用来比较当高负荷时的系统性能快照.

  # vmstat 1

  procs memory swap io system cpu

  r b swpd free buff cache si so bi bo in cs us sy wa id

  1 0 138592 17932 126272 214244 0 0 1 18 109 19 2 1 1 96

  0 0 138592 17932 126272 214244 0 0 0 0 105 46 0 1 0 99

  0 0 138592 17932 126272 214244 0 0 0 0 198 62 40 14 0 45

  0 0 138592 17932 126272 214244 0 0 0 0 117 49 0 0 0 100

  0 0 138592 17924 126272 214244 0 0 0 176 220 938 3 4 13 80

  0 0 138592 17924 126272 214244 0 0 0 0 358 1522 8 17 0 75

  1 0 138592 17924 126272 214244 0 0 0 0 368 1447 4 24 0 72

  0 0 138592 17924 126272 214244 0 0 0 0 352 1277 9 12 0 79

  # vmstat 1

  procs memory swap io system cpu

  r b swpd free buff cache si so bi bo in cs us sy wa id

  2 0 145940 17752 118600 215592 0 1 1 18 109 19 2 1 1 96

  2 0 145940 15856 118604 215652 0 0 0 468 789 108 86 14 0 0

  3 0 146208 13884 118600 214640 0 360 0 360 498 71 91 9 0 0

  2 0 146388 13764 118600 213788 0 340 0 340 672 41 87 13 0 0

  2 0 147092 13788 118600 212452 0 740 0 1324 620 61 92 8 0 0

  2 0 147360 13848 118600 211580 0 720 0 720 690 41 96 4 0 0

  2 0 147912 13744 118192 210592 0 720 0 720 605 44 95 5 0 0

  2 0 148452 13900 118192 209260 0 372 0 372 639 45 81 19 0 0

  2 0 149132 13692 117824 208412 0 372 0 372 457 47 90 10 0 0

  从上面第一个结果可看到,最后一列(id) 表示的是空闲时间,我们可以看到,在基准线统计时,CPU 的空闲时间在79% – 100%.在第二个结果可看到,系统处于100%的占用率以及没有空闲时间.从这个比较中,我们就可以确定是否是CPU 使用率应该被优化.

[1][2][3][4]

踮起脚尖,我们就能离幸福更近点吗?

Linux性能监控、调优(CPU篇)

相关文章:

你感兴趣的文章:

标签云: