proc檔案系統 查詢cpu使用率 記憶體使用率

2021-05-04 05:04:59 字數 1819 閱讀 9777

"proc檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些引數。"

這裡將介紹如何從/proc檔案系統中獲取與防火牆相關的一些效能引數,以及如何通過/proc檔案系統修改核心的相關配置。

1、從/proc檔案系統獲取相關的效能引數

cpu使用率:    /proc/stat

記憶體使用情況:      /proc/meminfo

網路負載資訊:    /proc/net/dev

相應的計算方法:(摘自:什麼是proc檔案系統,見參考資料)

(1)   處理器使用率   

(2)   記憶體使用率   

(3)   流入流出資料報   

(4)   整體網路負載   

這些資料分別要從/proc/stat、/proc/net/dev、/proc/meminfo三個檔案中提取。如里有問題或對要提取的資料不太清楚,可以使用man   proc來檢視proc檔案系統的聯機手冊。   

(1)   處理器使用率   

這裡要從/proc/stat中提取四個資料:使用者模式(user)、低優先順序的使用者模式(nice)、核心模式(system)以及空閒的處理器時間(idle)。它們均位於/proc/stat檔案的第一行。cpu的利用率使用如下公式來計算。   

cpu利用率   =   100   *(user   +   nice   +   system)/(user   +   nice   +   system   +   idle) 

c預言實現如下:

int get_cpu_usage(void)

printf("%d %d %d %d/n", user, nice, system, idle);

fclose(fp);

total = (user + nice + system + idle);

usage = ((user + nice + system )*100)/total ;

return usage;

}(2)   記憶體使用率   

這裡需要從/proc/meminfo檔案中提取兩個資料,當前記憶體的使用量(cmem)以及記憶體總量(amem)。   

記憶體使用百分比   =   100   *   (cmem   /   umem)   

(3)網路利用率   

為了得到網路利用率的相關資料,需要從/proc/net/dev檔案中獲得兩個資料:從本機輸出的資料報數,流入本機的資料報數。它們都位於這個檔案的第四行。   

效能收集程式開始記錄下這兩個資料的初始值,以後每次獲得這個值後均減去這個初始值即為從集群啟動開始從本節點通過的資料報。   

利用上述資料計算出網路的平均負載,方法如下:   

平均網路負載   =   (輸出的資料報+流入的資料報)   /   2

2. 通過/proc檔案系統調整相關的核心配置

允許ip**   /proc/sys/net/ipv4/ip_forward

禁止ping    /proc/sys/net/ipv4/icmp_echo_ignore_all

可以在命令列下直接往上述兩個「檔案」裡頭寫入"1"來實現相關配置,如果寫入"0"將取消相關配置。不過在系統重啟以後,這些配置將恢復預設設定,所以,如果想讓這些修改生效,可以把下面的配置直接寫入/etc/profile檔案,或者其他隨系統啟動而執行的程式檔案中。

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

使用proc檔案系統

以下是核心提供的幾個重要的proc檔案系統介面 1 read proc int read proc char page,char start,off t offset,int count,int eof,void data read proc是proc檔案輸出資訊介面,page是將要寫入資料的緩衝區...

linux 檢視cpu資訊 proc檔案系統

總核數 物理cpu個數 x 每顆物理cpu的核數 總邏輯cpu數 物理cpu個數 x 每顆物理cpu的核數 x 超執行緒數 檢視物理cpu個數 cat proc cpuinfo grep physical id sort uniq wc l 檢視每個物理cpu中core的個數 即核數 cat pro...

Proc檔案系統

include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...