摘自:http://www.ccw.com.cn 作者: 陸成新 (2002-04-15 06:02:01)
性能優化以及確定系統中的性能瓶頸是系統管理員的主要任務之一。在一個計算機系統中,CPU、內存、硬盤和網絡是影響系統性能的主要因素,因此系統性能調整也主要在如何在這些資源中獲得某種平衡,以滿足人們對系統性能的期望。性能調制需要很多技巧,知識以及經驗,不能僅靠分析統計數字,圖表就可取得,性能調制有時是一件復雜甚至是非常困難的任務。
如同其它UNIX系統一樣,AIX也給系統管理員剪裁系統提供了非常豐富的手段。這裡我們簡單介紹RS/6000 AIX系統中幾個用監控和調制多項系統資源的工具,每個工具的功能都很強,如想更透徹地了解這些命令的用法,請參考有關技術資料或手冊。這裡講述的命令將不僅僅局限CPU、硬盤、內存或網絡資源的某個方面,它們可用其中的一項或多項資源。
AIX監控工具
1.iostat
iostat命令主要通過觀察物理磁盤的活躍時間以及他們的平均傳輸速度,監控系統輸入/輸出設備負載。根據iostat命令產生的報告,用戶可確定一個系統配置是否平衡,並據此在物理磁盤與適配器之間更好地平衡輸入/輸出負載。
iostat工具的主要目的是通過監控磁盤的利用率(tm_act字段),而探測到系統中的I/O瓶頸。iostat還可用確定CPU問題,輔助容量規劃,並可以為最終解決I/O問題提供相關材料。vmstat和iostat聯合使用,可捕獲到確定與CPU,內存和I/O子系統有關的性能問題的必需數據。
iostat命令可產生下面四種類型的報告:
- ﹒ tty和CPU利用情況
- ﹒ 磁盤的利用情況
- ﹒ 系統吞吐率
- ﹒ 適配器吞吐率
netpmon命令可以監控關網絡行為的系統事件和性能以及網絡行為對CPU的消耗。netpmon命令在指定的監控周期報告網絡行為。
netpmon命令還可以在一次先前產生的跟蹤中以脫機模式使用。在這樣的情況下,需要用gennames命令產生一個文件。該文件必須在trace終止立即產生。
所產生的報告中包括CPU使用情況、網絡設備驅動器I/O情況、互聯網絡套接字調用,以及網絡文件系統(NFS)I/O信息:
﹒ Network Device Driver I/O:netpmon命令監控網絡適配器上所通過的I/O統計。
﹒ Internet Socket Calls:netpmon命令在互聯網絡套接字上監控read,recv,recvfrom,write,send以及sendto子程序。ICMP,TCP,UDP這幾個協議的每個進程都會予以報告。
﹒ NFS I/O:netpmon命令監控客戶NFS文件上的read和write子程序,NFS客戶上的RPC請求以及NFS服務器的read和write請求。
3、PDT(性能診斷工具)
PDT通過收集和集中各種性能、配置和可用數據自動找出性能問題。PDT評估系統的當前狀態並跟蹤系統在工作量和性能上的變化。PDT數據收集和報告很容易起用,不需要更多的管理行為。
雖然許多常見的系統性能問題都有特定性,但PDT還試圖用一些被認為性能好的系統中的通用概念來幫助它查找問題。這些概念包括:
﹒ 資源的平衡使用
﹒ 在限定范圍操作
﹒ 確定的工作量趨勢
﹒ 無錯誤操作
﹒ 系統參數得到適當設置。
ps命令是UNIX系統中最常見的命令,它主要顯示系統中關進程的統計和狀態信息,如進程ID,I/O行為以及CPU利用率等。利用ps命令提供的信息,可決定一個進程運行了多長時間,進程使用了多少CPU時間,以及進程是否受系統的懲罰。還可用ps命令確定進程使用了多少內存,完成多少I/O,進程的優先級以及是誰創建了進程。
下面這幾個命令組合對管理RS/6000 AIX系統有幫助:
(1)顯示10個消耗CPU最多的進程:
# ps aux |head -1 ;ps aux |sort -rn +2 |head 10
# ps aux |head -1 ;ps aux |sort -rn +3 |head -10
(3)按順序顯示系統中受罰的進程:
#ps -eakl |head -1 ;ps -eakl |sort -rn +5
(4)按優先級順序顯示系統中的進程:
#ps -eakl |sort -n +6 |head
(5)按處理時間為順序顯示系統中的前十個進程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +3 |head 10
(6)按實際內存使用的多少順序顯示系統中的前十個進程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +6 |head 10
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +4 |head -10
5、vmstat
vmstat命令報告關核心線程,虛擬內存,自陷(trap),磁盤以及CPU行為的統計。而且每種行為報告都被更細致地用百分比分別表示用戶態、核態、空閑以及等待磁盤I/O等情況。
內核維持了對核心線程,換頁以及中斷行為的統計數據,而vmstat命令則通過使用knlist子程序和/dev/kmen偽設備驅動器訪問這些數據。磁盤的輸入/輸出統計是通過設備驅動器維持的。對磁盤,平均傳輸速度是通過使用活躍時間核傳輸信息數目決定的。而活躍時間百分比則是從報告期間驅動器忙的時間量計算出來的。
vmstat命令產生五種類型的報告:
﹒ 虛存行為報告
﹒ fork子進程情況報告
﹒ 每個設備產生的中斷情況報告
﹒ 匯總報告
﹒ 輸入/輸出行為報告
6、sar
sar命令報告CPU的使用情況,I/O以及其它系統行為。sar命令可以收集,報告以及保存系統行為信息。如果沒有指定輸入文件,則sar調用sarc命令訪問系統數據。
7、topas
8、truss
truss命令跟蹤一個進程的系統調用、所接收的信號以及招致的機器錯。要檢查的應用程序可在truss命令的命令行中指定,也可將truss命令掛在一個或多個已經在運行的進程上。
AIX調制工具
1、fdpr
fdpr命令改進用戶級程序和庫的執行時間和對實際內存的使用。fdr命令可以通過不同的操作,如刪除不必要的指令和重組代碼和數據,而實現這樣的目標。fdr命令安裝在目錄/usr/bin下。
fdpr命令在三個不同階段上,對原有的執行代碼應用先進的優化技術從而為其構築一個優化的可執行代碼。這三個階段分別是:
﹒ 在階段1,fdpr創建一個增加了某些裝置(instrumented)的可執行程序。原有的可執行程序被保存為__ProgramFile.save,而新版本被命名為__ProgramFile.instr。
﹒ 在階段2,fdpr運行該增加了某些裝置的可執行程序,並收集摘要(profiling)數據。該摘要數據被保存在一個叫__ProgramFile.prof的文件中。運行執行程序時需要為它提供典型的輸入數據,以使fdpr命令能夠找出代碼中可優化的部分。
﹒ 在階段3,fdpr命令使用階段2中收集到的重要信息對可執行代碼重新排序。這些重新排序涉及到這樣一些任務:
(1)將那些高頻度執行代碼序列包裝在一起。
(2)對條件分之重新排序,以改進硬件對分之條件的預測。
(3)將較少使用的代碼部分移出來。
(4)內嵌一些熱門函數。
(5)從重排序的代碼中刪除掉NOP(空操作)指令。
2、schedtune
schedtune命令可以給抖動、進程掛起、時間片以及線程在鎖上所能輪詢的時間長度等設置準則。
用schedtune,可調整AIX中所設立的一組影響其內存負載控制機制的參數。Schedtune命令用顯示和修改那些用檢測系統內存是否在過度使用以致造成抖動的參數。Schedtune命令還能用修改運行在系統上的進程的懲罰和衰減因子。在root用戶下,用schedtune命令可做下面的事情:
﹒ 決定用確定抖動的準則。
﹒ 決定哪個準則用掛起進程。
﹒ 決定在抖動終止要等待多長時間才重新激活那些先前被掛起的進程。
﹒ 決定被掛起的進程的最小數目。
﹒ 調制調度優先級公式。
﹒ 更改時間片數值。
﹒ 決定在一把鎖上輪詢多長時間。
﹒ 將schedtune值復位到它的缺省值。
3、vmtune
vmtune命令負責顯示和調整虛存管理器(VMM)和其它AIX部件使用的參數。系統中的根用戶可動態修改包括下面這些參數:
﹒ VMM頁替換
﹒ 永久文件讀寫
﹒ 文件系統緩沖區結構(bufstructs)
﹒ LVM緩沖區
﹒ 裸輸入/輸出
﹒ 換頁空間參數
﹒ 頁刪除
﹒ 內存固定參數
沒有留言:
張貼留言