1:系統性能管理
2:系統管理者的使命
3:資源與瓶頸
4:影響系統性能的因素
5:系統性能調試的一般原則
系統性能管理
要對系統進行性能分析和調試,其前提條件是知道好的性能是什麼含義,一般我們可以從以下兩個角度來衡量系統性能狀态:
1)響應時間(Response Time)
從使用者的角度來看,系統處于良好的性能狀态是指系統能夠快速響應使用者的請求,即系統響應時間短。
具體地說,響應時間是指送出請求的時刻到使用者的請求的相應結果傳回使用者的時間間隔。
2)吞吐量(Throughput)
從系統管理者角度來看,系統的吞吐量成為系統處于良好的性能狀态的名額。
具體地說,吞吐量是在給定時間段内系統完成的交易數量。即系統的吞吐量越大,說明系統在機關時間内完成的使用者或系統請求越多, 系統的資源得到充分利用。
系統管理者的使命
一般地,系統管理者的主要功能為:
Making the system available to others
Monitoring the usage of the system
Maintaining a certain level of performance
Planning for future processing needs
資源與瓶頸
要使系統處于良好性能狀态,就必須讓所有的系統資源協調工作。
1)系統資源(System Resource)
計算機組成十分複雜,但關鍵的系統資源不外如下這些:
CPU
記憶體
磁盤
輸入輸出,尤其是網絡和串行通信
2)瓶頸(Bottleneck)
在計算機的衆多資源中,由于系統配置的原因,某種資源成為系統性能的瓶頸是很自然的事情。
當所有使用者或系統請求對某種資源的需求超過它的可用數量範圍時,我們稱這種資源成為瓶頸。
當系統出現瓶頸時,消除瓶頸是方法通常有兩種:
增加成為瓶頸的資源的數量;
減少請求的數量;
影響系統性能的因素
應該說,影響系統性能的因素很多,但歸納起來主要有以下幾個因素:
硬體因素:CPU個數夠不夠?記憶體夠不夠?等等
作業系統:作業系統的配置是否合理?
應用軟體:應用系統設計得如何;
人的因素:操作人員是否有充分的教育訓練,以完全懂得作業系統?
經常性的變化因素:使用者的需求是否經常性變化?使用者對系統負載的要求是否經常性變化?
系統性能調試的一般原則
對系統進行性能調試必須遵循一定的原則,這些原則都經驗豐富的工作師經過多年的實踐總結出來的。
性能調試是一件嚴肅的事情,不要對系統的各種參數進行随意的改動;
一次隻對某個領域進行性能調試,例如對CPU的使用情況進行分析;
每次隻改動一個設定;
每次對系統性能進行分析時,至少使用兩種性能分析和調試工具;
經驗是最好的分析和調試工具;
知道什麼情況下該停止操作;
一般地,我們有以下四條性能調試的規則:
1)當你回答一個關于計算機系統性能的問題時,最初的回答總是“可能吧,視具體情況而定(It depends)”。
當然這個回答不會讓使用者滿意的,是以,我們必須進一步可能對系統性能産生影響的各種因素進行分析, 它們所有作用是什麼,起多大的作用。
2)性能分析和調試總是存在着折衷。
當系統管理者試圖對計算機系統的性能進行調整時,們可能需要修改系統參數,或修改應用。然而,性能調試 不存在唯一回答或最優答案。
比如:tuning to improve memory utilization may degrade file system performance;Choosing RAID disk comfigurations for data integrity may be less expersive than altternative mirroring solutions that often improve performance.It is may be more cost-effective to purchase a CPU upgrade rather than spend days or weeks analyzing how the application could be changed to improve performance.
3)在分析系統性能的同時,系統性能将會受到影響。
由于在進行系統性能分析時,性能分析工具本身将會占用一定的系統資源,如CPU資源、記憶體資源等等。我們必須注意到這點, 即分析工具本身運作可能會導緻系統某方面的資源瓶頸情況更加嚴重。
4)隻用一種工具是無法全面、正确地分析出系統的資源瓶頸所在。
性能調試---(二)性能分析工具
1:性能分析工具綜述
2:如何知道系統安裝了哪些性能分析工具?
3:SAR
4:time和timex
5:iostat
6:vmstat
7:GlancePlus
性能分析工具綜述
目前,對系統進行性能調試的工具有很多,這些可以兩大類:一類是标準的分析工具,即所有的UNIX都會帶的分析工具; 另一類是不同廠商的UNIX所特有的性能分析工具,比如HP-UX就有自己的增值性能分析工具。
标準的分析工具,即所有的UNIX都會帶的分析工具:
sar
iostat
vmstat
time
ps
bdf
top
ipcs
uptime
HP-UX自己的增值性能分析工具:
glance/gpm
puma
xps
按性能分析工具的用途來說,它可以分為:
CPU的使用情況:sar,time,top,ps,puma,xps
記憶體的使用情況:vmstat,ipcs
檔案系統狀态:dbf,iostat,sar,swapinfo,nfsstat
I/O子系統狀态:iostat
網絡性能:netstat
按分析時間點來分,性能分析工具可以分為:
日志型分析工具,如puma,xps,它們将在對系統在某一段時間的運作情況進行取樣,然後得出某此結果。這種分析工具非常适合于 針對那些時斷時續發生的問題進行分析,因為通過取樣,可以得出結論;
實時型分析工具,如glance,它們又稱“快照型分析工具”,即它們将實時取出系統運作環境的資料,這種分析工具非常适合于 那些在分析工具正在運作時發生的問題,或一直發生的問題。
如何知道系統安裝了哪些性能分析工具?
想知道系統中安裝了何種性能分析工具,運作指令:
#/opt/perf/perfstat -v
SAR-System Activity Reporter
顧名思義,SAR工具将對系統的目前狀态進行取樣,然後通過計算資料和比例來表達系統的目前運作狀态。它的特點是:
System V-based,在很多的UNIX版本中都存在;
可以連續對系統取樣,獲得大量的取樣資料;
取樣資料和分析的結果都可以入檔案;
自己所需的負載很小
SAR也有一個緻命的不足,這就是:SAR不能對某個程序進行深入分析,它僅是一對系統的整體情況進行分析。
SAR的文法為:
#sar [-ubdycwaqvmAMS] [-o file] t [n]:每隔t秒取樣一次,共取樣n次,其中-o file表示取樣結果将以二進制形式存入檔案file中;
#sar [-ubdycwaqvmAMS] [-s time] [-e time] [-i sec] [-f file]:表示從file檔案中取出資料,如果沒有指定-f file,則從标準資料檔案/var/adm/sa/sadd取資料,其中dd表示目前日子。另外, -s time表示起始時間;-e time表示停止時間;-i sec表示取樣的時間間隔,如果不指定則表示取檔案中所有的資料。
對[-ubdycwaqvmAMS]的解釋請參閱相關的系統分析領域,如-u表示對CPU的分析;-A表示彙總所有資料,即等于-ubdycwaqvm,-M表示對多個CPU環境中每個CPU都進行各自的分析, 一般它與-q和-u聯合使用,以對每個CPU的使用情況進行分析
從前面的指令文法中可知,sar可以從一個檔案中讀取性能資料,這個檔案可以通過sar來産生(如sar -o file 2 3),也可以通過其他的指令來産生,具體地說,可以通過以下幾個指令來産生:
#/usr/lbin/sa/sadc [t n] [ofile]:以t秒為時間間隔,共取樣n次,所有資料存入檔案ofile。如果我們要對系統進行分析,則通常的做法是:第一步,mkdir /var/adm/sa;第二步,chown adm:adm /var/adm/sa; 第三步,/usr/lbin/sa/sadc /var/adm/sa/sa`date +%d`,它會在/var/adm/sa目錄下建立一個sadd檔案,其中dd表示目前日期,這個指令将對以前取樣進行清零。
運作shell指令:#/usr/lbin/sa/sa1 [t n]:表示以t秒為時間間隔,共取樣n次,所有資料存入檔案/var/adm/sa目錄下的sadd檔案,其中dd表示目前日期;
運作shell指令:#/usr/lbin/sa/sa2 [-ubdycwaqvmA] [-s time] [-e time] [i sec]:
一個通過crontab指令來設定定時執行的方案:
0 * * * 0,6 su adm -c "/usr/lbin/sa/sa1":表示以adm使用者執行sa1,每個星期的日、六兩天是每小時執行一次sa1指令;
0 8-17 * * 1-5 su adm -c "/usr/lbin/sa/sa1 3 3"
0 8-17 * * 1-5 su adm -c "/usr/lbin/sa/sa1"
在通過sadc或sa1、sa2等背景指令收集資料時,我們必須注意如下兩點:
/usr檔案系統的空閑空間夠不夠
本月資料将覆寫上月所取樣的資料,是以,在系統即将進入下一個月時,必須對本月資料進行備份;
sa1和sa2是兩個shell指令,在目錄/usr/lbin/sa下,我們可以修改這兩shell檔案,以改變預設的取樣方法。
time和timex
TIME
Time指令可以彙報出執行某條指令所花的時間。它的輸出包括:實際時間,使用者時間和系統時間。
它的文法:#time ls
TIMEX
和time一樣,timex可以彙報出執行某條指令所花的時間,不過它可以給出更多的資訊。
選項-s:prints sar data for the interval in which the program ran.
option -p: List process accounting records for command and all its children.This option works only if the process accounting software is installed and /usr/lib/acct/turnacct has been invoked to create /var/adm/pacct
iostat-I/O statistics Reporter
iostat(輸入/輸出統計)工具将對系統的磁盤操作活動進行監視,它的輸出結果會比sar -d的輸出結果更有用。它的特點是:
Berkeley-based,在很多的UNIX版本中都存在;
彙報磁盤活動統計情況,同時也會彙報出終端和CPU使用情況;
looks at information on a per-spindle basis
和SAR一樣,它也有一個緻命的不足,這就是:iostat不能對某個程序進行深入分析,它僅是一對系統的整體情況進行分析。
iostat的文法為:
iostat [-t] [interval [count]]
interval: Display successive lines which are summaries of the last interval seconds. The first line reported is for the time since a reboot and each subsequent line is for the last interval only.
count: Repeat the statistics count times.
-t: Report terminal statistics as well as disk statistics.
vmstat-Virtual Meomory Statistics
vmstat工具将對系統的虛拟記憶體、程序、CPU活動進行監視,同時它也對磁盤和forks和vforks操作的個數進行彙總。它的特點是:
彙報虛拟記憶體、程序、CPU活動統計情況,同時也會彙報出磁盤活動情況和forks和vforks操作的個數;
和iostat一樣,它也有一個緻命的不足,這就是:vmstat不能對某個程序進行深入分析,它僅是一對系統的整體情況進行分析。
vmstat的文法為:
vmstat [-dnS] [interval [count]]
vmstat -f | -s | -z
GlancePlus
GlancePlus是HP公司的性能分析工具,它是一個聯機性能分析和診斷工具,用于監控正在發生的系統活動情況。它的特點是:
聯機性能分析和診斷;
監控系統資源的使用情況;
多螢幕輸出;
帶有聯機幫助;
程序閥值識别和報警,這個閥值可以基于被監控的程序、資源的使用率、使用者、程序名或者終端名;
和前面介紹的其他性能分析工具,如:SAR,iostat,vmstat等相比,GlancePlus有一最大好處,這就是:GlancePlus不僅能對系統的整體情況進行分析,而且還可以對某個程序進行深入分析。
GlancePlus所有監控的系統資源主要有以下這些,應該說,它們已經包括了主要的系統資源。
CPU、磁盤、記憶體和交換區的整體使用情況;
全局程序的活動情況;
CPU的詳細使用情況;
記憶體的詳細使用情況;
檔案系統、裝置和邏輯卷的磁盤輸入/輸出;
磁盤隊列和長度;
交換區的詳細使用情況;
系統表的使用情況;
單個程序的活動情況;
GlancePlus的運作形式有兩種:
圖形方式:#/opt/perf/bin/gpm,或以背景方式運作#gpm&;不過,我們必須先設定環境變量DISPLAY,因為它是圖形輸出的目的地,比如:export DISPLAY=主機名(IP位址):0.0;如果是工作站telnet别的主機上,則本工作站還要運作#xhost +,表示别的機器上輸出可以到本工作站;
終端方式:#/opt/perf/bin/glance
GlancePlus的界面主要有兩部分,上面部分是系統資源的整體使用情況,下面部分則按不同的資源的詳細使用情況。
GlancePlus的界面的上面部分的詳細說明,其中字母表示誰用了資源,而字母之間的長度資源占用率。
CPU的使用率:S-系統CPU使用率,U-使用者CPU使用率,R-實時CPU使用率,N-nice CPU使用率,A-negative-nice CPU使用率;
磁盤的使用率:F-檔案系統I/O,V-虛拟記憶體I/O
記憶體的使用率:S-用于系統代碼和資料的記憶體,U-用于使用者代碼和資料的記憶體,B-用作緩存的記憶體
交換區的使用率:U-正在使用的交換區,R-預留的交換區
前面講到,GlancePlus是一個聯機分析診斷工具,其實,GlancePlus還可以與MeasureWare Agent一起使用,MeasureWare Agent将可以 在一段時間内幫助GlancePlus收集基本資料,然後由GlancePlus進行分析。
Glance可以運作在HP-UX,Solaris和AIX上。
與其他的工具相比,Glance占用的系統資源會更多一些。
通常情況下,啟動工具的指令的文法如下:
#glance [-j interval][-p dest][-f dest][maxpagers n][-command][-nice n][-nosort][lock][]
其中,各選項的含義為:
-j :指定資料重新整理的時間間隔;
-p :使得結果送到列印機隊列;
-f :enbles printing to a file;
-maxpages :limits the number of pages to be printed;
-command:selects the inital metric screen;
-nice :nice value at which glance runs;
-nosort:don't sort processes on the screen;
-lock:locks glance into memory
性能調試---(三)CPU性能分析
2005年04月05日
列印自: unix中文寶庫
位址: http://www.douzhe.com/article/article.php/634
1:CPU的體系結構和工作原理
2:作業系統和程序
3:衡量CPU閑忙程度的名額
4:CPU資源成為系統性能的瓶頸的征兆
5:哪些程序是占用CPU資源的大戶?
6:利用SAR工具分析CPU的使用率
7:利用SAR工具分析運作程序隊列長度
8:利用SAR工具分析系統調用
9:利用time指令測試某個指令和程式的執行效率
10:利用top指令檢視最耗CPU資源的程序
11:利用uptime指令檢視系統整體情況
12:利用GlancePlus分析系統CPU資源使用率
13:對CPU需求密集型系統的性能調試
CPU的體系結構和工作原理
我們所說的CPU一般是指微處理器,即Microprocessor,一般地,一個CPU的主要組成部分為:
CPU(central processing unit)
cache:cache就是高速記憶體,它的存取時間一般是10-20微秒(ns),這樣,CPU可以在一個時鐘周期内通路一次cache;而一般的記憶體的存取時間為80-90微秒(ns),它的大小對CPU的性能有很大的影響。
TLB(translation lookaside boffer):TLB是高速cache,它用于存放最近通路的虛拟位址和與其對應的實體位址對,這樣TLB将可以把虛拟位址轉換為實體位址。TLB是記憶體中系統轉換表的一個子集;TLB通常是指向一個記憶體頁面,而不是一個記憶體位址;它的大小對CPU的性能有很大的影響。
coprocessor
不同的CPU,一般有不同的時鐘頻率和高速緩存容量。
CPU在一次時鐘周期内一般可以從高速緩存内取到一個指令并執行它。是以,從理論上說,隻要CPU的主頻越快,機關時間内所能執行的指令則越多。目前,有些CPU可以在一個時鐘周期内執行多條指令,如PA8500可以執行4條指令。
高速緩存的大小會制約CPU的執行效率,雖然CPU主頻很快,但它取不到資料,則隻有空運作。是以,高速緩存的大小很重要;高速緩存又分資料高速緩存和指令高速緩存,分别存放從記憶體預先取來的即将執行的資料和指令單元。
虛拟尋址
一般,系統中的虛拟位址空間要比實體位址空間大得多,例如,如果系統是64位的,則理論上,它的尋址空間可以達到2的64次幂(2**64=18,447PB),但由于受費用的因素的影響,實際上的實體記憶體最大隻有十幾GB的記憶體。
每個程序都有自己的唯一虛拟位址空間,然而,程序的運作必須把虛拟位址映射到實體位址,這需要TLB、高速緩存和記憶體三者的配合。如果需要的資訊不在記憶體,則導緻一個頁面錯。
流水線(Pipelining)
TLB和高速緩存試圖在一個時鐘周期内給CPU提供它所需的資訊,然而,這個過程是100%的使用率,對CPU來說,它必須先用一個時鐘周期去取下一個指令,再一個時鐘周期去執行這條指令,這樣,CPU的使用率也隻有50%。為了讓CPU更忙,通常的做法是,采用流水線的方法。如PA8500是采用7個步驟的流水線。
作業系統和程序
HP-UX一個多使用者、多任務的UNIX作業系統。它的性能依賴于使用者數的多少、使用者任務的類型、硬/軟體件的配置。
HP-UX有兩種運作級别:
使用者級:系統使用者可以與作業系統進行互動操作,如運作應用和系統指令。使用者級通過系統調用接口通路核心級。
核心級:作業系統自動運作一些功能,它們主要對硬體進行操作。
在作業系統中,使用者程式是以程序方式運作。程序的狀态有以下幾種:
SRUN
SSLEEP
SZOMB
SIDL
SSTOP
CPU的排程
一旦程序所需的資料調入記憶體後,它将等待CPU排程者來配置設定CPU時間。一般,在HP-UX中,每個程序都可以得一個 固定的時間片來運作,這個時間片的長度為十分之一秒(1/10秒)。
由于HP-UX是一個多任務的作業系統,它需要一種手段來程序的執行次序,這就是中斷。在系統中,時鐘中斷處理器是用來處理時鐘中斷的系統軟體。具體地說, 它将收集系統和accounting statistics and does context switching.系統性能也與這種中斷發生的頻率有關。
程序何優先級
每個程序都有自己的優先級;
實時優先級:-32~127,一個程序如果想以實時優先級運作,則必須用指令#rtprio來設定;
分時系統優先級:128~177;
分時使用者優先級:178~251;
優先級:252~255 are used by the system as virtual memory management priorities for process deactivation.
分時程序在初始優先級是由系統配置設定的,為一個定值。使用者可以通過改變程序的nice值來改變分時程序的優先級。因為程序會随着它的執行,将以nice值來降低它的優先級,當 它在等待執行時,又将以nice值來增加其優先級。nice值的系統缺值為20。
在系統性能分析過程中,我關心不僅僅在完成一個程序耗時多少,還包括時間花在哪以及它的時間多少。
衡量CPU閑忙程度的名額
要分析系統的CPU資源是否夠的前提誰占用了CPU資源,占用了多少,時間多長。 下面是一些衡量CPU閑忙程度的經用名額:
1)使用者使用CPU的情況
CPU運作正常使用者程序
CPU運作niced process
CPU運作實時程序
2)系統使用CPU的情況
用于系統調用
用于I/O管理:中斷和驅動
用于記憶體管理:paging and swapping
用于程序管理:context switch and process start
3)WIO:由于程序等待I/O而使CPU處于空閑狀态的比率,這些I/O主要指block I/O,raw I/O,VM paging/swapins;
4)CPU的空閑率,即除了上面的WIO以外的空閑情況;
5)CPU用于上下文交換的比率(Context Switch CPU utilization)
6)nice
7)real-time
8)運作程序隊列的長度,即處于可運作狀态的程序個數的大小,不過我們關心的是這些在等待CPU排程執行時所花的時間;
9)平均負載(load average)
CPU資源成為系統性能的瓶頸的征兆
CPU就像人的大腦,完成各種交給它的任務。如果任務太多,CPU就要忙不過來,它的運作效率就要下降。就像人生病會有一典型症狀一樣,當CPU資源 成為系統性能的瓶頸時,它也有一些典型的症狀:
很慢的響應時間(slow response time)
CPU空閑時間為零(zero percent idle CPU)
過高的使用者占用CPU時間(high percent user CPU)
過高的系統占用CPU時間(high percent system CPU)
長時間的有很長的運作程序隊列(large run queue size sustained over time)
processes blocked on prority
必須注意的是,如果系統出現上面的這些症狀并不能說一定是由于CPU資源不夠,事實,有些症狀 的出現很可能是由于其他資源的不足而引起,如記憶體不夠時,CPU會忙記憶體管理的事,這時從表面上, CPU的利用是100%,甚至顯得不夠,如果據此就簡單地認為增加CPU就可以解決問題是大錯特錯了。
是以,還是那句話,必須用不同的工具、從不同的方面對系統進行分析後,才能做出結論,即使這樣,經驗将 起到不可替代的作用。
哪些程序是占用CPU資源的大戶?
在作業系統中,并不是所有的程序都以同樣的方式使用CPU資源。通常情況下,有些程序需要比其他程序更多的CPU時間片才能順利地完成任務。 下面是一些典型的占用CPU資源的大戶:
程序建立(process creation)
終端字元程序(teminal character processes(MUX- and LAN-based)
計算密集型程序和實時程序
X-終端和X-伺服器程序(X-terminals and X-servers)
利用SAR工具分析CPU的使用率
利用SAR進行CPU的使用率分析的指令形式:
#sar -u,這時資料是通過sa1在背景定時生成;
#sar -u 5 100,每隔5秒取樣一次,共取100次;
SAR -u:Report CPU utilization (the default); portion of time running in one of several modes. On a multi-processor system, if the -M option is used together with the -u option, per-CPU utilization as well as the average CPU utilization of all the processors are reported. If the -M option is not used, only the average CPU utilization of all the processors is reported:
cpu: cpu number (only on a multi-processor system with the -M option);
%usr: user mode;
%sys: system mode;
%wio: idle with some process waiting for I/O (only block I/O, raw I/O, or VM pageins/swapins indicated);
%idle: otherwise idle;
對結果的分析
首先,我們看%idle列的值,如果為接近零,則再看對應%wio列的值,如果這列的大于7,則表明系統的磁盤或其他I/O可能有問題,需要進一步的分析:
用iostat指令分析各個磁盤的傳輸閑忙狀況,如#iostat -t 5 2,每隔5秒取樣一次,共取2次;
用sar -d指令分析各塊裝置(磁盤、錄音帶)活動情況;
用sar -b指令分析系統的緩存的活動情況;
用sar -w指令分析程序的deactivation/reactivation and switching activities of the system;
如果%idle列很小,而對應的%wio列的值也很小,這時,我們檢視%usr列和%sys列的值。如果%usr列的值很大,說明有使用者程序占用很多CPU時間;如果%sys列的值很大,則說明系統管理方面花了很多時間。需要進一步的分析:
用GlancePlus對占用CPU時間最大的程序進行單獨分析,為什麼它會占用如此多的CPU時間。
如果%sys列的值很大,可以用SAR -C指令對系統調用進行進一步分解,看這些系統調用主要是做些什麼。同時,還必須分析是否有其他瓶頸,如paging也會引起%sys的值很大,這時,可以用sar -q檢視系統的運作程序隊列長度,也可以用GlancePlus和vmstat檢視記憶體的使用情況;
利用SAR工具分析運作程序隊列長度
利用SAR進行運作程序隊列長度分析的指令形式:
#sar -q,這時資料是通過sa1在背景定時生成;
#sar -q 5 100,每隔5秒取樣一次,共取100次;
SAR -q: Report average queue length while occupied, and percent of time occupied. On a multi-processor machine, if the -M option is used together with the -q option, the per-CPU run queue as well as the average run queue of all the processors are reported. If the -M option is not used, only the average run queue information of all the processors is reported:
runq-sz: Average length of the run queue(s) of processes (in memory and runnable);
%runocc: The percentage of time the run queue(s) were occupied by processes (in memory and runnable);
swpq-sz: Average length of the swap queue of runnable processes (processes swapped out but ready to run);
%swpocc: The percentage of time the swap queue of runnable processes (processes swapped out but ready to run) was occupied.
對結果的分析:
這些資料越小越好。
如果runq-sz大于4,或者%swapocc大于5時,則表明系統的CPU或記憶體可能有問題,需要進一步的分析:
用sar -u指令分析CPU的使用情況;
也可以用GlancePlus;
利用SAR工具分析系統調用
利用SAR進行系統調用分析的指令形式:
#sar -c,這時資料是通過sa1在背景定時生成;
#sar -c 5 100,每隔5秒取樣一次,共取100次;
SAR -c: Report system calls:
scall/s: Number of system calls of all types per second;
sread/s: Number of read() and/or readv() system calls per second;
swrit/s: Number of write() and/or writev() system calls per second;
fork/s: Number of fork() and/or vfork() system calls per second;
exec/s: Number of exec() system calls per second;
rchar/s: Number of characters transferred by read system calls block devices only) per second;
wchar/s: Number of characters transferred by write system calls (block devices only) per second.
如果scall/s列的值很大,那麼這麼多的系統調用的原因就必須仔細分析了。
我們可以檢視fork/s和exec/s列的值,看看系統是否在建立大量新的程序。
利用time指令測試某個指令和程式的執行效率
我們可以利用time指令來測試一個指令的執行效率,文法為:
time command
command is executed. Upon completion, time prints the elapsed time during the command, the time spent in the system, and the time spent executing the command. Times are reported in seconds.
Execution time can depend on the performance of the memory in which the program is running.
當我們覺得某個程序的性能不好時,最簡單的方法就是利用time指令來檢視一下程序執行時它的 時間分布情況,然後再用其他工具進一步分析。
利用top指令檢視最耗CPU資源的程序
我們可以利用top指令來檢視最耗CPU資源的程序。top指令還會根據程序占用CPU資源的多少而動态改變。
它的文法為:
top [-s time] [-d count] [-q] [-u] [-h] [-n number]
其中各選項的含義為:
-s time: 螢幕重新整理的時間間隔time,預設為5秒;
-d count: 螢幕重新整理count次後,top指令自己也退出;
-q: This option runs the top program at the same priority as if it is executed via a nice -20 command so that it will execute faster (see nice(1)). This can be very useful in discovering any system problem when the system is very sluggish. This option is accessibly only to users who have appropriate privileges.
-u: User ID (uid) numbers are displayed instead of usernames. This improves execution speed by eliminating the additional time required to map uid numbers to user names.
-h: Hides the individual CPU state information for systems having multiple processors. Only the average CPU status will be displayed.
-n number: Show only number processes per screen. Note that this option is ignored if number is greater than the maximum number of processes that can be displayed per screen.
在top指令運作時,我們可用以下幾個快捷鍵來翻屏:
j: 向前翻;
k: 向後翻;
t: 回到第一頁;
通過top指令,我們可以快速了解到目前系統的CPU資源使用情況,尤其是占用CPU資源最多的程序是我們必須關注的對象。
我們通過RES(the current size of the process resident in memory)列可以知道每個程序占用記憶體的數量。
我們通過NICE列可以知道系統是否使用NICE值來調節該程序的工作負載平衡。
利用uptime指令檢視系統整體情況
uptime prints the current time, the length of time the system has been up, the number of users logged on to the system, and the average number of jobs in the run queue over the last 1, 5, and 15 minutes.
w is linked to uptime and prints the same output as uptime -w, displaying a summary of the current activity on the system.
uptime [-hlsuw] [user]
w [-hlsuw] [user]
-h: Suppress the first line and the heading line. This option should not be used with the -u option. This option assumes the use of the -w option to uptime.
-l: Use long output. This option assumes the use of the -w option to uptime.
-s: Use the short form of output for displaying terminal information. The terminal name is abbreviated; the login time and CPU times are suppressed.
-u: Print only the first line describing the overall state of the system. This is the default for the uptime command.ormation for systems having multiple processors. Only the average CPU status will be displayed.
-w: Print a summary of the current activity on the system for each user. This is the default for the w command.
利用GlancePlus分析系統CPU資源使用率
利用HP的GlancePlus工具可以對程序的整體情況和單獨的某個程序都詳細分析。
1)對CPU的整體使用情況的分析:
進入GlancePlus;
按?鍵進入聯機幫助界面;
按c鍵進入CPU的詳細界面;
按b鍵表示向後翻頁,按f鍵表示向前翻頁;
通過CPU Detail Screen,我們可以知道CPU時間的分布情況,使用者用了多少,系統用了多少等。
2)對單個程序的CPU資源占用情況分析:
按g鍵進入程序清單界面;
按s鍵進入程序選擇界面,通常最忙的程序會作為預設程序;
輸入想檢視的程序号;
在對單個程序的分析中,我們通常要關注以下幾個值:
CPU Usage;
User CPU;
System CPU;
Priority;
Logical and Physical Reads and Writes;
Total RSS/VSS;
blocked on(通過按shift+>來得到);
對CPU需求密集型系統的性能調試
1)基于硬體的方法:
更新到更快的CPU;
更新到更大的高速緩存;
增加CPU個數;
把應用分布到多個系統中;
使用無盤結點;
增加浮點處理器;
2)基于軟體的方法:
在不是高峰時間運作批處理;
Nice umimportant application;
使用rtpio指令來幫助重要的應用;
使用plock指令來幫助重要的應用;
Turn off system accounting;
Consider using Taskbroker or DCE;
優化應用;
考慮使用程序資料總管(Process Resource Manager),不過PRM隻有在HP-UX平台上有。
性能調試---(五)I/O性能分析
--------------------------------------------------------------------------------
http://www.chinaunix.net 作者:南非蜘蛛 發表于:2003-06-11 22:01:31
【發表評論】【檢視原文】【Solaris讨論區】【關閉】
1:衡量I/O閑忙程度的名額
2:I/O資源成為系統性能的瓶頸的征兆
3:哪些活動是占用I/O資源的大戶?
4:利用iostat分析I/O的使用率
5:利用SAR指令分析磁盤活動
6:利用SAR指令分析緩沖區的活動
7:利用SAR指令分析交換區的活動
8:利用GlancePlus分析系統的I/O活動情況
9:對I/O需求密集型系統的性能調試
衡量I/O閑忙程度的名額
下面是一些衡量I/O閑忙程度的經用名額:
磁盤使用率(disk utilization)
磁盤隊列長度(disk queue length)
磁頭/邏輯卷的讀/寫速率(read/write rates per spindle/logical volume)
原始I/O(raw I/O):主要用于資料庫應用
交換隊列的長度(swap queue length)
緩存命中率(buffer cache hit ratio)
網絡檔案系統和無盤工作站速率(NFS and diskless rates(server))
I/O資源成為系統性能的瓶頸的征兆
當I/O成為瓶頸時,會出現下面這些典型的症狀:
過高的磁盤使用率(high disk utilization)
太長的磁盤等待隊列(large disk queue length)
等待磁盤I/O的時間所占的百分率太高(large percentage of time waiting for disk I/O)
太高的實體I/O速率:large physical I/O rate(not sufficient in itself)
過低的緩存命中率(low buffer cache hit ratio(not sufficient in itself))
太長的運作程序隊列,但CPU卻空閑(large run queue with idle CPU)
哪些活動是占用I/O資源的大戶?
下面是一些占用大量I/O資源的活動:
換頁(paging):paging不僅會引起記憶體問題,還可能引起磁盤問題;
open,creat,and stat system calls:系統調用會引起大量的磁盤I/O;
multiuser I/O and random I/O
relational database
core dumps
利用iostat分析I/O的使用率
iostat - report I/O statistics
iostat iteratively reports I/O statistics for each active disk on the system.
If two or more disks are present, data is presented on successive lines for each disk.
With the advent of new disk technologies, such as data striping, where a single data transfer is spread across several disks, the number of milliseconds per average seek becomes impossible to compute accurately. At best it is only an approximation, varying greatly, based on several dynamic system conditions. For this reason and to maintain backward compatibility, the milliseconds per average seek ( msps ) field is set to the value 1.0.
它的文法為:
iostat [-t] [interval [count]]
其選項的含義為:
-t:Report terminal statistics as well as disk statistics.
interval: Display successive lines which are summaries of the last interval seconds. The first line reported is for the time since a reboot and each subsequent line is for the last interval only.
count: Repeat the statistics count times.
對結果的分析:
通過檢視bps列和sps列的值我們可以知道哪些磁盤比較忙,哪些磁盤比較閑。
利用SAR指令分析磁盤活動
通過指令sar -d,我們可以分析系統中的每個磁盤和錄音帶的活動情況。
Report activity for each block device, e.g., disk or tape drive. One line is printed for each device that had activity during the last interval. If no devices were active, a blank line is printed.Each line contains the following data:
device:裝置名;
%busy: Portion of time device was busy servicing a request; statistics.
avque: Average number of requests outstanding for the device;
r+w/s: Number of data transfers per second (read and writes) from and to the device;
blks/s: Number of bytes transferred (in 512-byte units) from and to the device;
avwait: Average time (in milliseconds) that transfer requests waited idly on queue for the device;
avserv: Average time (in milliseconds) to service each transfer request (includes seek, rotational latency, and data transfer times) for the device.
如果某個磁盤的%busy列的值大于50%,則說明該磁盤可能存在瓶頸;
如果某個磁盤的avwait珍的值大于avserv列的值,也說明該磁盤可能存在瓶頸;
利用SAR指令分析緩沖區的活動
通過指令sar -b,我們可以分析系統中的緩沖區的活動情況。
bread/s Number of physical reads per second from the disk (or other block devices) to the buffer cache;
bwrit/s: Number of physical writes per second from the buffer cache to the disk (or other block device);
lread/s: Number of reads per second from buffer cache;
lwrit/s: Number of writes per second to buffer cache;
%rcache: Buffer cache hit ratio for read requests e.g., 1 - bread/lread;
%wcache: Buffer cache hit ratio for write requests e.g., 1 - bwrit/lwrit;
pread/s: Number of reads per second from character device using the physio() (raw I/O) mechanism;
pwrit/s: Number of writes per second to character device using the physio() (i.e., raw I/O ) mechanism; mechanism.
如果%rcache列的值小于90%,并且%wcache列的值不在70-70%之間,我們必須觀察系統中什麼應用在做什麼樣的讀/寫操作,我們是否需要增加緩沖歐的大小。
利用SAR指令分析交換區的活動
通過指令sar -w,我們可以分析系統中的交換區的活動情況。
swpin/s: Number of process swapins per second;
swpot/s: Number of process swapouts per second;
bswin/s: Number of 512-byte units transferred for swapins per second;
bswot/s: Number of 512-byte units transferred for swapouts per second;
pswch/s: Number of process context switches per second.
如果swpin/s的值大于零,那麼swpot的值必須引起注意;
同時必須注意pswch/s的值,如果很大,說明程序切換頻繁。
利用GlancePlus分析系統的I/O活動情況
1)對磁盤的整體使用情況的分析:
進入GlancePlus;
按?鍵進入聯機幫助界面;
按d鍵進入磁盤的詳細界面;
按b鍵表示向後翻頁,按f鍵表示向前翻頁;
通過Disk Detail Screen,我們可以知道所有的邏輯和實體I/O請求的分布情況。
2)對Disk I/O by File System
按i鍵Disk I/O by File System表界面;
這個界面很有用,因為它按不同的檔案顯示I/O的繁忙程度。
3)對邏輯卷的分析
按v鍵I/O by logical volumes表界面;
通過把對檔案系統的分析和邏輯卷的分析結合起來,能夠知道哪個磁盤的I/O最忙。
4)對磁盤的分析
5)對交換區的分析
GlancePlus
GlancePlus是HP公司的性能分析工具,它是一個聯機性能分析和診斷工具,用于監控正在發生的系統活動情況。它的特點是:
聯機性能分析和診斷;
監控系統資源的使用情況;
多螢幕輸出;
帶有聯機幫助;
程序閥值識别和報警,這個閥值可以基于被監控的程序、資源的使用率、使用者、程序名或者終端名;
和前面介紹的其他性能分析工具,如:SAR,iostat,vmstat等相比,GlancePlus有一最大好處,這就是:GlancePlus不僅能對系統的整體情況進行分析,而且還可以對某個程序進行深入分析。
GlancePlus所有監控的系統資源主要有以下這些,應該說,它們已經包括了主要的系統資源。
CPU、磁盤、記憶體和交換區的整體使用情況;
全局程序的活動情況;
CPU的詳細使用情況;
記憶體的詳細使用情況;
檔案系統、裝置和邏輯卷的磁盤輸入/輸出;
磁盤隊列和長度;
交換區的詳細使用情況;
系統表的使用情況;
單個程序的活動情況;
GlancePlus的運作形式有兩種:
圖形方式:#/opt/perf/bin/gpm,或以背景方式運作#gpm&;不過,我們必須先設定環境變量DISPLAY,因為它是圖形輸出的目的地,比如:export DISPLAY=主機名(IP位址):0.0;如果是工作站telnet别的主機上,則本工作站還要運作#xhost +,表示别的機器上輸出可以到本工作站;
終端方式:#/opt/perf/bin/glance
GlancePlus的界面主要有兩部分,上面部分是系統資源的整體使用情況,下面部分則按不同的資源的詳細使用情況。
GlancePlus的界面的上面部分的詳細說明,其中字母表示誰用了資源,而字母之間的長度資源占用率。
CPU的使用率:S-系統CPU使用率,U-使用者CPU使用率,R-實時CPU使用率,N-nice CPU使用率,A-negative-nice CPU使用率;
磁盤的使用率:F-檔案系統I/O,V-虛拟記憶體I/O
記憶體的使用率:S-用于系統代碼和資料的記憶體,U-用于使用者代碼和資料的記憶體,B-用作緩存的記憶體
交換區的使用率:U-正在使用的交換區,R-預留的交換區
前面講到,GlancePlus是一個聯機分析診斷工具,其實,GlancePlus還可以與MeasureWare Agent一起使用,MeasureWare Agent将可以 在一段時間内幫助GlancePlus收集基本資料,然後由GlancePlus進行分析。
Glance可以運作在HP-UX,Solaris和AIX上。
與其他的工具相比,Glance占用的系統資源會更多一些。
通常情況下,啟動工具的指令的文法如下:
#glance [-j interval][-p dest][-f dest][maxpagers n][-command][-nice n][-nosort][lock][]
其中,各選項的含義為:
-j :指定資料重新整理的時間間隔;
-p :使得結果送到列印機隊列;
-f :enbles printing to a file;
-maxpages :limits the number of pages to be printed;
-command:selects the inital metric screen;
-nice :nice value at which glance runs;
-nosort:don't sort processes on the screen;
-lock:locks glance into memory
http://thor.prohosting.com/~nlingym/os/hpux/tuning/io/cputuning.html