没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
1.0 性能监测简介
性能调优是找出系统瓶颈并消除这些瓶颈的过程 。 很多系统管理员认为性能调优仅仅是
调整一下内核的参数即可解决问题 , 事实上情况并不是这样 。 性能调优是实现操作系统的各
个子系统之间的平衡性,这些子系统包括:
*
*
*
* CPU
CPU
CPU
CPU
*
*
*
* Memory
Memory
Memory
Memory
*
*
*
* IO
IO
IO
IO
*
*
*
* Network
Network
Network
Network
子系统之间相互依存,任何一个子系统的负载过度都能导致其他子系统出现问题,例如:
*
*
*
* 大量的 page-in
page-in
page-in
page-in IO
IO
IO
IO 请求可能导致内存队列被塞满
*
*
*
* 网卡的巨量吞吐可能导致 CPU
CPU
CPU
CPU 资源耗尽
*
*
*
* 系统尝试保持释放内存队列时可能耗尽 CPU
CPU
CPU
CPU 资源
*
*
*
* 来自内存的大量磁盘写入请求可能导致 CPU
CPU
CPU
CPU 资源和 IO
IO
IO
IO 通道耗尽
性能调优的前提是找出系统瓶颈之所在 , 尽管问题看似由某个子系统所导致 , 然而这很
可能是另外一个子系统的过载所引起的。
1.1
判定应用的类型
为了明白从何处开始着手调整性能瓶颈 , 弄清被分析系统的性能表现是首要任务 。 任何
系统的应用常可分为以下两类:
*
*
*
* IO
IO
IO
IO 限制型 —— 一个 IO
IO
IO
IO 限制型的应用需要大量的内存和基础存储设备占用 。 因其需要
大量的数据读写请求,此类应用对 CPU
CPU
CPU
CPU 和网络需求不高(除非存储系统在网络上 ) 。
IO
IO
IO
IO 限制型应用使用 CPU
CPU
CPU
CPU 资源来进行 IO
IO
IO
IO 操作且常进入睡眠状态 。 数据库应用常被认为
属于此类。
*
*
*
* CPU
CPU
CPU
CPU 限制型 —— 一个 CPU
CPU
CPU
CPU 限制型应用需要大量的 CPU
CPU
CPU
CPU 资源,来进行批量的处理或
大量的计算。大容量 web
web
web
web 服务, mail
mail
mail
mail 服务,以及任何类型的渲染服务都被归到此类。
1.2
判定基准信息
系统的利用率因管理员的期望值和系统的参数值而异 , 判断一个系统是否有性能问题的
唯一途径是弄清楚对系统的期望是神马 , 需求的性能是神马 , 应该得到的数据是神马?而为
了建立这些信息的唯一途径是为系统建立一个基准 。 在性能可接受的状态下必须为系统建立
统计信息,这样就可以在性能不可接受时进行对比。
在下面的例子中,将对两种状态下的统计信息进行对比:
# 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
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
2
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
只需要看代表 idle 时间的最后一列( id )就能发现问题,在基准数据中 CPU 空闲时间 在
79%-100% 之间,在高负荷状态下系统利用率 100% 且无空闲。需要考虑的是 CPU 这块的问
题。
2.0 安装监测工具
大多 *nix 系统均自带了很多标准监测命令,也有的是第三方工具:
工具名称 描述 基础安装包 可选安装包
vmstat 多功能 Y Y
mpstat CPU 性能 N Y
sar 多功能 N Y
iostat 磁盘性能 N Y
netstat 网络性能 Y Y
dstat 多功能 N 大多数
iptraf 流量监测 N Y
netperf 网络带宽 N 大多数
ethtool 网卡监测 Y Y
iperf 网络带宽 N Y
tcptrace 数据包监测 N Y
iotop IO 监测 N Y
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
3
3.0 CPU 介绍
CPU 利用率很大部分取决于试图访问它的资源 , 内核拥有一个管理两种资源的调度器 :
线程(单或多)和中断。调度器给予不同资源以不同的优先级,以下由优先级从高到低:
*
*
*
* 中断 —— 设备通知内核它们处理完成。例如网卡发送一个数据包或硬盘驱动器提供
一次 IO
IO
IO
IO 请求
*
*
*
* 内核(系统)进程 —— 所有的内核进程都在此级别的优先级进行处理
*
*
*
* 用户进程 —— 通常被称为 “ 用户空间 ” , 所有应用软件运行在用户空间 , 拥有最低的
优先级
为了弄明白内核是如何管理不同的资源的,几个关键概念需要提及一下: context
switches , run queues , utilization 。
3.1 Context Switches(
上下文切换
)
大多数处理器在同一时间只能处理一个进程或线程,多线程处理器可同时处理 n 个线
程。然而, linux 内核把多核处理器的各个核心当做独立核心。例如,内核把一个双核的处
理当做两个独立处理器。
一个标准的内核可同时处理 50 到 50000 个进程 , 在只有一颗 CPU 的情况下 , 内核必须调度
和平衡这些进程和线程 。 每个线程在处理器上都拥有一个时间分配单元 , 当一个线程超过自
己的时间单元或被更高优先级的程序抢占时 , 此线程及被传回队列而此时更高优先级的程序
将在处理器上执行。这种线程间的切换操作即是上下文切换。
3.2
运行队列
每个 CPU 维持着一个线程的运行队列 , 理论上 , 调度器应该是不断地运行和执行线程
。
线程要么处于睡眠状态,要么处于可运行状态。假如 CPU 子系统处于高负载状态,那么内
核调度器罢工是有可能的 , 其结果将导致可运行状态的进程开始阻塞运行队列 。 运行队列越
大,执行进程所花费的时间也越长。
一个很流行的术语叫 “ load (负载 ) ” 经常被用来描述运行队列的状态,系统负载是由正在
执行的进程和 CPU 运行队列中的进程的结合,如果有 2 个线程正在一个双核系统中执行 且
4 个正在运行队列中 , 那么负载数即是 6 , 像 top 等工具可查看过去 1,5,15 分钟的负载均值 。
3.3 CPU
利用率
CP U 利用率被定义 为 CP U 使用的百分比 , CP U 如何被利用是衡量一个系统的重要标准
。
多数性能监测工具把 CPU 利用分为以下几个类型:
*
*
*
* 用户时间 —— CPU
CPU
CPU
CPU 花在执行用户空间进程的时间百分比
*
*
*
* 系统时间 —— CPU
CPU
CPU
CPU 花在执行内核进程和中断的时间百分比
*
*
*
* IO
IO
IO
IO 等待 —— CPU
CPU
CPU
CPU 花在等待 IO
IO
IO
IO 请求完成的时间百分比
*
*
*
* IDLE
IDLE
IDLE
IDLE —— CPU
CPU
CPU
CPU 的空闲时间百分比
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
4
4.0 CPU 性能监测
理解 CPU 的性能状态即是理解中断,运行队列和上下文切换的状态。之前有提到过性
能与基准信息有密切关系,但是有些常规的性能预期:
*
*
*
* 运行队列 —— 每个处理器上的运行队列不应该有超过 1-3
1-3
1-3
1-3 个排队的线程 。 例如 , 一个
双核系统不应该有超过 6
6
6
6 个进行在运行队列里。
*
*
*
* CPU
CPU
CPU
CPU 利用率 —— 假如一个 CPU
CPU
CPU
CPU 满状态负荷,那么以下的平衡关系需要达到:
65%--70%
65%--70%
65%--70%
65%--70% 的用户时间
30%--35%
30%--35%
30%--35%
30%--35% 的系统时间
0%--5%
0%--5%
0%--5%
0%--5% 的空闲时间
*
*
*
* 上下文切换 —— 上下文切换的数量与 CPU
CPU
CPU
CPU 的利用率有直接关系。如果 CPU
CPU
CPU
CPU 处于高
负荷状态下那么大量的上下文切换是正常的。
linux 系统里有很多可以监测以上数据的工具,如 vmstat 和 top 。
4.1 vmstat
工具的使用
vmstat 工具的低开销使得它可以在一个高负载的系统上持续运行,它有两种工作模式
:
均值模式和采样模式。采样模式如下:
# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0
0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0
0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0
每个区域的含义:
区域 描述
r run queue 运行队列中的进程数
b blocked 等待 IO 请求完成的阻塞进程数
in interrupts 正在处理的中断数
cs context switches 正在发生的上下文切换数
us user 用户 CPU 时间百分比
sys system 内核 CPU 时间百分比
wa wait 可运行进程等待 IO 百分比
id idle CPU 空闲时间百分比
4.2 案例分析: CPU 持续性利用
# vmstat 1
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
3 0 206564 15092 80336 176080 0 0 0 0 718 26 81 19 0 0
2 0 206564 14772 80336 176120 0 0 0 0 758 23 96 4 0 0
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
剩余30页未读,继续阅读
TONYYan
- 粉丝: 138
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页