2008年3月7日 星期五

Linux性能分析工具

今天公司請來一位精X(請唸成艾克斯,不要唸成差,OK。)的工程師。
主要是請他來看我們的ORACLE 10G的機器,看看效能要怎麼調校。
因為只要一到財會結轉的作業一進行,oracle DB主機,好像就幾乎快成罷工狀態。
要是有印報表的需求,跑個報表程式就花了半天時間,才能看到資料。
據主管說,我們shared pool滿到要爆!
本來去年的年底,是要我想辦法把oracle 10g 的SGA加大,
看看能不能增加DB主機的效能,把財會的抱怨申訴給解決掉!

可是我是個半調子DBA,才學會一些基本的安裝和備份技術。
shared pool的內容是什麼?加大SGA就能解決問題嗎?
沒受過正統的oracle教育訓練,要我調校oracle 10g!
這麼進階的工作,我實在作不來。
加上我已經搞掛DB主機一次了,實在沒膽子再硬幹下去!

總算主管知道對我這樣的要求,是有點強人所難,還是去找精X的人來幫忙。
該給人家賺的,還是要給人家賺,不然他們那些技術支援廠商的人要靠什麼過活。是吧!
精X的工程師一來,就說要先裝個PA來分析,才知道問題可能出在那裡?
嗯!QUEST出的PA,要記起來,借機偷學個幾招,也許日後還用得到。
使用的過程,我這先略過,因為安裝的過程也還好。
QUEST用java寫好的軟體,在LINUX平台安裝,感覺和在windows平台安裝一樣。
看來這就是用java寫軟體,可以在各種平台執行的優點吧。

分析的過程中,他也使用一些LINUX的命令來觀察機器的效能狀況。
用的是sar和iostat兩個指令!這我在看oracle的技術介紹書中有提到。
但其體的用法,看精X的工程師一邊使用,一邉解說,才知道原來這些命令的奧妙在那!
LINUX,我愈來愈喜愛它OS的設計理念和管理方式了。簡潔!強大!

以下是我找的一篇,解說LINUX效能分析的命令使用。
覺的用法不難,但要真的懂得使用時機和看懂它輸出的訊息,才是一個LINUX高手的內涵所在。

+==========================================================================+

使用Linux性能分析工具
Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴展性,
能夠針對不同的應用和硬件環境調整,優化出滿足當前應用需要的最佳性能。
因此企業在維護Linux系統、進行系統調優時,了解系統性能分析工具是至關重要的。

在Linux下有很多系統性能分析工具,
比較常見的有top、free、ps、time、timex、uptime等。
下文將介紹几個較為重要的性能分析工具vmstat、iostat和sar及其使用。

用vmstat監視內存使用情況
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監視。
它是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。

vmstat的語法如下:
vmstat [-V] [-n] [delay [count]]

其中,-V表示打印出版本信息;-n表示在周期性循環輸出時,輸出的頭部信息僅顯示一次;
delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。
對于vmstat輸出各字段的含義,可運行man vmstat查看。



用iostat監視I/O子系統情況
iostat是I/O statistics(輸入/輸出統計)的縮寫,iostat工具將對系統的磁盤操作活動進行監視。
它的特點是匯報磁盤活動統計情況,同時也會匯報出 CPU使用情況。
同vmstat一樣,iostat也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。

iostat的語法如下:
iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]

其中,-c為匯報CPU的使用情況;-d為匯報磁盤的使用情況;-k表示每秒按kilobytes字節顯示數據;
-t為打印匯報的時間;-v表示打印出版本信息和用法;-x device指定要統計的設備名稱,默認為所有的設備;
interval指每次統計間隔的時間;count指按照這個時間間隔統計的次數。



使用sar進行綜合分析
sar是System Activity Reporter(系統活動情況報告)的縮寫。
顧名思義,sar工具將對系統當前的狀態進行取樣,然后通過計算數據和比例來表達系統的當前運行狀態。
它的特點是可以連續對系統取樣,獲得大量的取樣數據;取樣數據和分析的結果都可以存入文件,所需的負載很小。
sar是目前Linux上最為全面的系統性能分析工具之一,可以從14個大方面對系統的活動進行報告,
包括文件的讀寫情況、系統調用的使用情況、串口、CPU效率、內存使用狀況、進程活動及IPC有關的活動等,使用也是較為複雜。

sar的語法如下:

sar [-option] [-o file] t [n]
它的含義是每隔t秒取樣一次,共取樣n次。其中-o file表示取樣結果將以二進制形式存入文件file中。

sar option參數說明

選項 功能
  -A 匯總所有的報告
  -a 報告文件讀寫使用情況
  -B 報告附加的緩存的使用情況
  -b 報告緩存的使用情況
  -c 報告系統調用的使用情況
  -d 報告磁盤的使用情況
  -g 報告串口的使用情況
  -h 報告關于buffer使用的統計數據
  -m 報告IPC消息隊列和信號量的使用情況
  -n 報告命名cache的使用情況
  -p 報告調頁活動的使用情況
  -q 報告運行隊列和交換隊列的平均長度
  -R 報告進程的活動情況
  -r 報告沒有使用的內存頁面和硬盤塊
  -u 報告CPU的利用率
  -v 報告進程、i節點、文件和鎖表狀態
  -w 報告系統交換活動狀況
  -y 報告TTY設備活動狀況


另一種語法如下:

sar [-option] [-s time] [-e time] [-i sec] [-f file]

含義是表示從file文件中取出數據,如果沒有指定-f file,
則從標准數據文件/var/adm/sa/sadd取數據,其中dd表示當前天。
另外,-s time表示起始時間;-e time表示停止時間;
-i sec表示取樣的時間間隔,如果不指定則表示取文件中所有的數據。

一般它與-q和-u聯合使用,以便對每個CPU的使用情況進行分析,比如運行如下命令:
sar -q -u 5 1

由于sar命令太複雜,只有通過熟練使用才能了解每個選項的含義,
對于sar輸出中每個字段的含義運行man sar命令可以得到詳細的解釋。

+==========================================================================+

沒有留言:

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!