引言
所謂系統(tǒng)性能是指系統(tǒng)資源被利用的程度。而影響系統(tǒng)性能的因素有很多,但是我們知道最關鍵的系統(tǒng)資源是CPU、內存、磁盤I/O和網絡。從而我們知道對系統(tǒng)性能影響最大的四個因素也就是它們:
①CPU(處理器)
CPU資源主要是處理器速度及處理器數(shù)目。
②Memory(內存)
Memory資源主要是RAM速率、RAM大小、緩存、VMM性能。③磁盤I/O(磁盤輸入、輸出)
磁盤I/O資源主要是disk轉速、disk數(shù)目、I/O adpter的數(shù)目device driver和firmware新能。
④Network(網絡)
Network資源主要是網卡性能、網絡結構、網絡應用軟件的性能。在此我們只是對影響性能的四大因素做了簡要的介紹。怎樣利用工具或命令監(jiān)控服務器的這四項指標,找出正在影響我們服務器性能的根源,從而改善影響服務器性能的因素,來提高服務器的運行性能,我們將在下面的內容進行逐一詳細介紹。
1 CPU監(jiān)控分析方法
在CPU監(jiān)控分析方法中經常使用的命令有topas或vmstat,工具可以使用nmon工具。通過以上工具或命令,如果結果顯示在一段時間內CPU占用率為100%,或即使沒有達到100%,而是長時間高占用率,那我們如何把該進程找出來呢?
在vmstat報告中包含五大項分別是kthr(內核線程狀態(tài))、Memory(內存).page(頁面故障和頁面調度活動)、faults(每秒的陷阱和中斷率的平均值)、cpu(cpu時間的占用率百分比),其中kthr的兩列和cpu的四列非常有判斷價值。
1.1 Kthr列的數(shù)據(jù)是在采樣時間段內對隊列中的內核線程數(shù)進行計算得到的平均值。
r列表示可運行的內核線程平均數(shù)目,包括正在運行的線程和等待CPU的線程。如果這個數(shù)字大于CPU的數(shù)目,那么至少有一個線程要等待CPU。等待cpu的線程越多,對性能的影響越大。
b列表示等待隊列中的內核線程平均數(shù),包括正在等待文件系統(tǒng)I/O的線程,或由于內存裝入控制而被掛起的線程,如果block的值長時間連續(xù)非零,那就需要對cpu的運行狀況做進一步的分析。
1.2 cpu列表示在改時間間隔內使用cpu時間的百分比。
us列顯示了用戶模式所消耗的cpu時間。當在用戶模式下執(zhí)行時,進程在它自己的應用程序代碼中執(zhí)行,不需要內核資源來進行計算、管理內存或設置變量。
Sy列詳細顯示了cpu在系統(tǒng)模式下執(zhí)行一個線程所花時間的百分比,包括內核進程和其它需要訪問內核資源的進程所消耗的cpu資源。如果一個進程需要內核資源,它必須執(zhí)行一個系統(tǒng)調用,并因此被切換到系統(tǒng)模式從而可以使用該資源。例如,對一個文件的讀或寫操作需要內核資源來打開文件、尋找指定的位t和讀寫數(shù)據(jù)。
id列顯示了沒有未決本地磁盤I/O時cpu空閑或等待時間的百分比。
wa列詳細顯示了有未決本地磁盤I/O時cpu空閑的時間百分比。wa的值如果超過25%,就表明磁盤子系統(tǒng)可能沒有被正確平衡,或者可能是磁盤工作負荷很重。
通過以上的詳細介紹,可以了解vmstat可以監(jiān)控系統(tǒng),并形成報告,那么如何來確定哪個進程引起的cpu瓶頸呢,該如何查找問題的根源,可以通過下面幾個實用的命令來幫助我們好的問題的所在。
1.2.,階段性運行方法##ps sux(顯示使用cpu,memory最多的進程)
#ps -eflsort +3 -rlhead -15(以第4列為基準降序排序,只顯示前15個進程)
1.2.2持續(xù)運行一段時間的方法
使用tprof命令
#tprof-:sleep 60(找出進程的哪部分使用cpu)
除了上述方法外也可以通過一些簡單的方法判斷cpu是否存在瓶頸,例如使用vmstat命令,在single-user系統(tǒng)里,us+sy>90%,則表示cpu bound;蛟趍ufti-user系統(tǒng)里,us+sy >80%,則表示cpubound。
總的來說,如果us+sy時間低于90%,則不認為該單用戶系統(tǒng)epu受限制。但是,如果在一個多用戶系統(tǒng)中us+sy時間超過80%,其中的進程將要花時間在運行隊列中等待,響應時間和吞吐量會受到損害i對于這樣的系統(tǒng),我們應提高警惕。對于cpu性能可能存在瓶頸的系統(tǒng),我們可以用tprof命令找出占用cpu時間最多的進程,用nice或renice命令調整用戶進程優(yōu)先級。
2 Memory監(jiān)控分析方法
影響服務器運行系能的另一個重要因素是內存,檢測內存使用的工具比較多,常用的命令有vmstat、svmon、lsps、topas等。Svmon主要用來觀察進程是否存在內存泄露,執(zhí)行Isps可以觀察分頁空間的使用情況,topas命令每秒刷新一次,能全面的觀察到epu、memory、I/0和各進程使用資源的情況。下面詳細介紹如何使用vmstat監(jiān)測內存的使用情況。
在上面我們介紹了vmstat執(zhí)行結果中的kthr列和cpu列,現(xiàn)在將關注memory列和page列。Vmstat命令概況了系統(tǒng)中所有進程使用的活動的虛擬內存,同時還有空閑列表上實際內存頁的數(shù)量。在執(zhí)行結果中memory列和口age列報告了關于內存的運行狀況。下面對于memory列和page列的進行一下簡單的介紹。
Memory列主要是關于使用虛擬內存和實內存的信息。如果虛擬頁已經被訪問的話,虛擬頁可以被認為是活動的。一頁為4096個
字節(jié)。其中avm列為活動的虛擬頁面,即被分配在分頁空間中的頁面總數(shù)。需要注意這列高值并不代表性能差。Fre列為空閑列表RAM頁面大小,需要注意的是大部分實內存都用文件系統(tǒng)數(shù)據(jù)的高速緩存。對于較小的空閑列表,也是正常的。
Page列主要是關于頁面故障和頁面調度活動,這些是間隔的平均值,以秒為單位給出。其中re表示頁面調度程序輸入/輸出列表,pi表示從分頁空間調入頁面,po表示調出到分頁空間的頁面,fr表示自由的頁面,sr表示被頁面替換算法掃描的頁面,cv表示被頁面算法使用的時鐘周期。
在了解memory和page各列數(shù)值表示的內容意義上,可以利用其結果對memory瓶頸進行初步的判斷。正常情況下,r<5,b接近于0,fr的值和sr的值接近相同。fre最小值是120,如果fre的值<120,并持續(xù)一段時間,則表示有持續(xù)的paging in和paging out,即thrashing。Po/fr>1/h,則表示系統(tǒng)接近thrashing(h的值是來源于schedo一0 v_repage_hi命令)。Fr/sr=high,則表示系統(tǒng)缺少內存。如果pi和po的值持續(xù)非0,而不是偶爾為非O,則可能是memory bound。需要注意的是iostat命令中%iowait的值高,也表示系統(tǒng)缺少memory。
3 磁盤I/O監(jiān)控分析方法
對于磁盤YO監(jiān)控我們通常使用iostat命令,在iostat命令的輸出結果中有%iowait、%idle、%tin_act這三個指標,它們可以給我們提供可靠的信息。下面對這三列值得具體含義做一些具體解析。%iowait表示中央處理器空閑但系統(tǒng)中尚有為解決的磁盤I/O請求的時間百分比。如果iowait時間的百分比很高,表明該磁盤輸入輸出(I/O)可能是導致系統(tǒng)運行速度緩慢的主要原因。
%idh表示中央處理器空閑且系統(tǒng)中沒有未解決的磁盤I/O請求的時間百分比。
%tm_act表示物理磁盤繁忙程度的百分比,如果tin_act的值很高,表明物理磁盤存在I/0瓶頸。
我們了解了以上3個指標的具體含義,那么該指標到什么程度會影響到系統(tǒng)性能呢?我們繼續(xù)做進一步的介紹,如果%tm_act>40%,則該磁盤處于busy狀態(tài);如果%iowait接近于O,仍可能是磁盤I/O bottleneck。這只會發(fā)生在系統(tǒng)在進行大量的paging,作paging的磁盤過于繁忙:如果%idle的值很高,且%iowait>25%表示不存在cpu bound,但可能是磁盤I/0 bound;%tm_act值高而磁盤傳送率低,有可能是由于破裂的邏輯卷,文件系統(tǒng)或單個文件。
如果發(fā)現(xiàn)影響系統(tǒng)性能的因素來自磁盤I/O,那么定位到那些文件、邏輯卷、硬盤處于繁忙狀態(tài),就需要通過執(zhí)行filemon命令了。
在系統(tǒng)I/O處于繁忙狀態(tài)時運行下面的命令:
#filemon-u-O all_o/tmp/fmon.txt:sleep 30;trestop
30秒后會生成記錄跟蹤信息的文件/tmp/fmon.txt。從該文件中可以找出:
①最為繁忙的虛擬內存段、邏輯卷和物理卷;
②對頁空間的讀寫次數(shù),確認磁盤I/O是由于應用程序操作還是頻繁換頁操作。
③最為活躍的文件或邏輯卷,如果它們存放在繁忙的物理卷上,可以考慮將數(shù)據(jù)移至相對空閑的磁盤上,這樣有助于提高性能。
4 Network監(jiān)控分析方法
網絡性能分析可以采用一個簡答的方法,即比較法。比較涉及網絡的操作和那些和網絡無關的操作。如果正在運行的程序在進行相當距離的遠程讀取和寫入,而且運行緩慢,但是其他操作看起來運行正常,這時候可能就是網絡問題造成的。下面介紹一下我們可以利用來監(jiān)控分析網絡對性能造成影響的命令netstat。
Netstat命令其實這個命令在DOS系統(tǒng)里就出現(xiàn)了,是一個監(jiān)控TCP/IP網絡的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態(tài)信息。Netstat的功能顯示網絡連接、路由表和網絡接口這些信息,可以讓我們得知目前都有哪些網絡連接正在運作。如果輸入數(shù)據(jù)包中的錯誤比輸入數(shù)據(jù)包總數(shù)的1%還要大,Ierrs>0.01*Ipkts,那么就運行netstat—m命令來檢查存儲器的不足。如果輸出數(shù)據(jù)包中的錯誤次數(shù)比輸出數(shù)據(jù)包總數(shù)的1%還要大,Oerrs>O.Ol*Opkts,那么就為這個接口增加發(fā)送隊列的大小。如果沖突的比率比10%和還要大,coll/Opkts>O.1,那么網絡的使用率就比較高。
5 小結
在我們日常對小型機的維護和操作過程中可能會遇到很多問題,但是關于小型機系統(tǒng)性能優(yōu)化主要考慮的無外乎CPU、內存、磁盤I/O、網絡這幾個因素。上面我們簡單介紹了一些性能分析理論,我們在日常工作中可以利用這些工具簡單去快速判斷,發(fā)現(xiàn)問題,及時處理,提高日常維護操作水平及服務器性能,使系統(tǒng)在一個更加安全的環(huán)境中運行。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.ezxoed.cn/
本文標題:淺析影響小型機性能的根源