1. 性能監控介紹
性能優化是找出系統的瓶頸並優化操作系統來消除這些瓶頸的過程。許多系統管理員認為性能優化可以通過閱讀cook book,設置一些內核參數就可以簡單解決,但事實並非如此。性能優化是實現各個子系統之間性能平衡。這些子系統包括
CPU
內存
I/O
網絡
這些子系統是高度相互依賴的。其中任何一個子系統的高負載都很容易導致其他子系統出現問題。比如
大量的頁面調入I/O請求會使內存隊列堵塞
全負荷的網卡會使CPU繁忙
維護閒置內存隊列會使CPU繁忙
大量的內存寫入硬盤的請求會使CPU和I/O通道繁忙
為了做修改來優化系統,必須找到出現瓶頸的地方。有時候某個子系統看似出現了問題,其實有可能是其他子系統的超負載造成的。
1.1 確定應用類型
為了知道從何處著手優化瓶頸,第一要點是理解要分析的系統的特點。一般系統的應用程序堆棧分為兩種類型:
I/O約束的。I/O約束的應用需要大量使用內存和其他存儲設備。原因是I/O約束的應用處理大量的數據(在內存中),但不需要太多的CPU和網絡資源(除非是使用網絡上的存儲設備)。I/O約束的應用使用CPU來處理I/O請求,然後一般會進入休眠狀態。數據庫類型的應用一般都是I/O約束的。
CPU約束的。CPU約束的應用需要使用大量的CPU,來批處理或者數學計算。大容量的網站服務器,郵件服務器和其他類型的服務器一般都是CPU約束的。
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
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
比較一下最後一列的數字,其代表了CPU的空閒時間比,我們可以看到,在基准統計下,CPU的空閒時間占70%-90%。在第二次輸出中,系統百分之百運行而沒有空閒。由此我們可以確定系統的CPU是否被充分利用。
.