Linux kernel 性能优化(一)之优化简介

摘要:
这个系列文档主要是描述如何监控Linux操作系统的性能。检查如何解释Linux性能工具的输出。在搜集这些输出以后,做出关于性能瓶颈的分析。不过不包括如何优化内核。

题目涵盖以下几个部分:
1. 优化简介
2. CPU术语
3. CPU监控
4. 内核CPU线程调度

1.0优化简介
性能优化就是找到系统的瓶颈并且消除瓶颈的过程。许多管理员以为性能优化就像在百度上搜个菜谱然后按步骤改参数就能解决问题了,其实不然,性能优化是在OS的不同子系统中不断调整以至于达到平衡的过程。这些子系统包括: CPU, 内存,IO,网络。这些子系统是高度彼此依赖,而其中任何一个如果被过度使用的话就会影响到其他。譬如说:
•大量的页内IO请求会占满内存队列
•以太网控制器上Gigabit的吞吐量可能会消耗掉一个CPU
•一个CPU可能在维护内存队列时被消耗掉
•大量从内存中的磁盘写操作可能会消耗掉一个CPU和IO通道
为了优化一个系统,必须找到瓶颈位置。虽然一个子系统可能看起来是导致问题的原因,但很有可能这是因为另一个子系统已经超负荷运转了。

1.1 确认应用类型

为了理解从何处开始找到优化瓶颈,首先重要的是分析理解系统的行为模式。任何系统的应用通常都可以分成以下两种类型:
• IO 消耗型
—— 一个IO消耗型的应用需要使用大量的内存和潜在的存储系统。这个是由于IO消耗型的应用会处理大量数据。一个IO消耗型的应用不会要求使用大量CPU或网络。通常它们都用CPU做出一个IO请求然后就进入休眠模式。数据库的应用通常被认为是IO消耗型应用。
• CPU 消耗型
—— 一个CPU消耗型应用要求大量使用CPU。比如要求CPU做批处理或/和数学计算。web服务器,邮箱服务器,任何一种渲染型服务器通常都被认为是CPU绑定的应用。

1.2 确认基准统计数据
系统使用率从管理员的角度来说是一个依情况而定的。想要明白系统是否有性能问题的唯一办法就是要理解对这个系统的期望值。什么样的性能应该是在期望中的并且数据看起来应该是如何的?唯一的办法就是创建一个基准。统计数据必须在系统处于性能可接受范围时可用,这样才能用来比较不可接受范围的状况。
在下面的例子中,一个系统性能的基准数据被拿来和一个超负荷的系统相比较:
alpha -> 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
alpha -> 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——idle时间),我们可以看到在基准情况下,CPU79% ~100%的时间都是处于idle状态。而在第二个输出,我们可以看到系统是100%都在使用中而没有idle。

参考文献:Extreme Linux Performance Monitoring and Tuning

你可能感兴趣的:(performance,Linux,Kernel,linux,kernel,性能优化)