獲取Linux系統使用率:proc文件系統簡介
"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)
(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文件系統介紹,也可以直接通過man proc查看相關的信息。
【編輯推薦】