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

發佈了44 篇原創文章 · 獲贊 44 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章