linux系統中獲取cpu利用率_第1頁
linux系統中獲取cpu利用率_第2頁
linux系統中獲取cpu利用率_第3頁
linux系統中獲取cpu利用率_第4頁
linux系統中獲取cpu利用率_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux下如何獲取cpu的利用率"proc文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。用戶和應用程序可以通過proc得到系統的信息,并可以改變內核的某些參數。"這里將介紹如何從/proc文件系統中獲取與防火墻相關的一些性能參數,以及如何通過/proc文件系統修改內核的相關配置。1、從/proc文件系統獲取相關的性能參數cpu使用率:/proc/stat內存使用情況:/proc/meminfo網絡負載信息:/proc/net/dev相應的計算方法:1)處理器使用率2)內存使用率3)流入流出數據包4)整體網絡負載這些數據分別要從/proc/stat、/proc/net/dev、/proc/meminfo三個文件中提取。如里有問題或對要提取的數據不太清楚,可以使用manproc來查看proc文件系統的聯機手冊。(1)處理器使用率這里要從/proc/stat中提取四個數據:用戶模式(user)、低優先級的用戶模式(nice)、內核模式(system)以及空閑的處理器時間(idle)。它們均位于/proc/stat文件的第一行。CPU的利用率使用如下公式來計算。CPU利用率=100*(user+nice+system)/(user+nice+system+idle)(2)內存使用率這里需要從/proc/meminfo文件中提取兩個數據,當前內存的使用量(cmem)以及內存總量(amem)。內存使用百分比=100*(cmem/umem)(3)網絡利用率為了得到網絡利用率的相關數據,需要從/proc/net/dev文件中獲得兩個數據:從本機輸出的數據包數,流入本機的數據包數。它們都位于這個文件的第四行。性能收集程序開始記錄下這兩個數據的初始值,以后每次獲得這個值后均減去這個初始值即為從集群啟動開始從本節點通過的數據包。利用上述數據計算出網絡的平均負載,方法如下:平均網絡負載=(輸出的數據包+流入的數據包)/22.通過/proc文件系統調整相關的內核配置允許ip轉發/proc/sys/net/ipv4/ip_forward禁止ping/proc/sys/net/ipv4/icmp_echo_ignore_all可以在命令行下直接往上述兩個“文件”里頭寫入"1"來實現相關配置,如果寫入"0"將取消相關配置。不過在系統重啟以后,這些配置將恢復默認設置,所以,如果想讓這些修改生效,可以把下面的配置直接寫入/etc/profile文件,或者其他隨系統啟動而執行的程序文件中。echo1>/proc/sys/net/ipv4/ip_forwardecho1>/proc/sys/net/ipv4/icmp_echo_ignore_all注:文件里面是一個增量,每過一個時間間隔對應的項使用了CPU都會有增加,要算百分比,得用上上一次的狀態值.這里計算cpu使用率是有問題的,需要使用上一狀態的值來計算。正確的計算方法是,等上一個時間:1、記錄某個時刻cpu的使用情況2、等上一個時間段3、再記錄此刻的cpu使用情況4、計算總的時間片把第一次的所有cpu使用情況求和,得到j1把第二次的所有cpu使用情況求和,得到j2j2-jl得到這個時間段的所有時間片即total=j2-j1=第二次的所有列的和-第一次的所有列的和5、計算idle時間idle對應第五列的數據,用第二次的減去第一次的即可idle=第二次的第五列-第一次的第五列6、計算cpu使用率rate=(total-idle)/total在搞性能測試的時候,對后臺服務器的CPU利用率監控是一個常用的手段。服務器的CPU利用率高,則表明服務器很繁忙。如果前臺響應時間越來越大,而后臺CPU利用率始終上不去,說明在某個地方有瓶頸了,系統需要調優。這個是即使不懂技術的人都容易理解的事情。上面理解對嗎?個人覺得不十分準確。這個要看后臺你測試的進程是什么類型的。如果是計算密集型的進程,當前端壓力越來越大的時候,很容易把CPU利用率打上去。但是如果是I/O網絡密集型的進程,即使客戶端的請求越來越多,但是服務器CPU不一定能上去,這個是你要測試的進程的自然屬性決定的。什么是CPU利用率呢?在Linux/Unix下,CPU利用率分為用戶態,系統態和空閑態,分別表示CPU處于用戶態執行的時間,系統內核執行的時間,和空閑系統進程執行的時間。從計算機加電開始,CPU就一直忙個不停,所以CPU的利用率始終是100%。當沒有用戶進程需要執行的時候,CPU就執行系統缺省的空閑進程。我們所指的CPU利用率是指CPU執行非系統空閑進程的時間/CPU總的執行時間。在Linux的內核中,有一個全局變量:Jiffies。Jiffies代表時間。它的單位隨硬件平臺的不同而不同。系統里定義了一個常數HZ,代表每秒種最小時間間隔的數目。這樣jiffies的單位就是1/HZ。Intel平臺jiffies的單位是1/100秒,這就是系統所能分辨的最小時間間隔了。每個CPU時間片,Jiffies都要加1。CPU的利用率就是用執行用戶態+系統態的Jiffies除以總的Jifffies來表示。在Linux系統中,CPU利用率的計算來源在/proc/stat文件,這個文件的頭幾行記錄了每個CPU的用戶態,系統態,空閑態等狀態下的不同的Jiffies,常用的監控軟件就是利用/proc/stat里面的這些數據來計算CPU的利用率的。包含了所有CPU活動的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。/proc/stat/[work@builder~]$cat/proc/statcpu43266113295866564221459681714742335346cpu01230752462234941055436941658604615cpu111191741242385810550382069697123371cpu210316435542153010552116764032106334cpu39450431531777210557728521158424intr1065711094105727577992066040352700070020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000737695800000001054602000000030000000000000000000000ctxt19067887btime1139187531processes270014procs_running1procs_blocked0輸出解釋CPU以及CPUO、CPU1、CPU2、CPU3每行的每個參數意思(以第一行為例)為:參數解釋user(432661)從系統啟動開始累計到當前時刻,用戶態的CPU時間(單位:jiffies),不包含nice值為負進程。1jiffies=0.01秒nice(13295)從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間(單位:jiffies)system(86656)從系統啟動開始累計到當前時刻,核心時間(單位:jiffies)idle(422145968)從系統啟動開始累計到當前時刻,除硬盤10等待時間以外其它等待時間(單位:jiffies)iowait(171474)從系統啟動開始累計到當前時刻,硬盤I0等待時間(單位:jiffies),irq(233)從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies)softirq(5346)從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)CPU時間=user+system+nice+idle+iowait+irq+softirq“intr”這行給出中斷的信息,第一個為自系統啟動以來,發生的所有的中斷的次數;然后每個數對應一個特定的中斷自系統啟動以來所發生的次數。“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。“btime”給出了從系統啟動到現在為止的時間,單位為秒。“processes(total_forks)自系統啟動以來所創建的任務的個數目。“procs_running”:當前運行隊列的任務的數目。“procs_blocked”:當前被阻塞的任務的數目。那么CPU利用率的計算方法:可以使用取兩個采樣點,計算其差值的辦法。(idle2-idle1)/cpu2-cpu1附改進過后的shell代碼:#!/bin/sh#功能:計算CPU的利用率,選取采樣點#計算公式:#方法1:cpuusage=(idle2-idle1)/(cpu2-cpu1)*100#方法2:cpuusage=[(user_2+sys_2+nice_2)-(user_1+sys_1+nice_1)]/(total_2-total_1)*100#方法3:(本腳本采用)#total_0=USER[0]+NICE[0]+SYSTEM[0]+IDLE[0]+IOWAIT[0]+IRQ[0]+SOFTIRQ[0]#total_1=USER[1]+NICE[1]+SYSTEM[1]+IDLE[1]+IOWAIT[1]+IRQ[1]+SOFTIRQ[1]#cpuusage=(IDLE[0]-IDLE[1])/(total_0-total_1)*100##echousernicesystemidleiowaitirqsoftirqCPULOG_1=$(awk'/\<cpu\>/{print$2""$3""$4""$5""$6""$7""$8}'/proc/stat)SYS_IDLE_1=$(echo$CPULOG_1|awk'{print$4}')Total_1=$(echo$CPULOG_1|awk'{print$1+$2+$3+$4+$5+$6+$7}')sleep5CPULOG_2=$(awk'/\<cpu\>/{print$2""$3""$4""$5""$6""$7""$8}'/proc/stat)SYS_IDLE_2=$(echo$CPULOG_2|awk'{print$4}')Total_2=$(echo$CPULOG_2|awk'{print$1+$2+$3+$4+$5+$6+$7}')SYS_IDLE='expr$SYS_IDLE_2-$SYS_IDLE_1'Total='expr$Total_2-$Total_1'#method1#SYS_USA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論