獲取Linux系統(tǒng)使用率:proc文件系統(tǒng)簡介
"proc文件系統(tǒng)是一個偽文件系統(tǒng),它只存在內(nèi)存當(dāng)中,而不占用外存空間。它以文件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口。用戶和應(yīng)用程序可以通過proc得到系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。"
這里將介紹如何從/proc文件系統(tǒng)中獲取與防火墻相關(guān)的一些性能參數(shù),以及如何通過/proc文件系統(tǒng)修改內(nèi)核的相關(guān)配置。
1、從/proc文件系統(tǒng)獲取相關(guān)的性能參數(shù)
cpu使用率:/proc/stat
內(nèi)存使用情況: /proc/meminfo
網(wǎng)絡(luò)負(fù)載信息:/proc/net/dev
相應(yīng)的計算方法:(摘自:什么是proc文件系統(tǒng))
(1) 處理器使用率
(2) 內(nèi)存使用率
(3) 流入流出數(shù)據(jù)包
(4) 整體網(wǎng)絡(luò)負(fù)載
這些數(shù)據(jù)分別要從/proc/stat、/proc/net/dev、/proc/meminfo三個文件中提取。如里有問題或?qū)σ崛〉臄?shù)據(jù)不太清楚,可以使用man proc來查看proc文件系統(tǒng)的聯(lián)機手冊。
(1) 處理器使用率
這里要從/proc/stat中提取四個數(shù)據(jù):用戶模式(user)、低優(yōu)先級的用戶模式(nice)、內(nèi)核模式(system)以及空閑的處理器時間(idle)。它們均位于/proc/stat文件的第一行。CPU的利用率使用如下公式來計算。
CPU利用率 = 100 *(user + nice + system)/(user + nice + system + idle)
(2) 內(nèi)存使用率
這里需要從/proc/meminfo文件中提取兩個數(shù)據(jù),當(dāng)前內(nèi)存的使用量(cmem)以及內(nèi)存總量(amem)。
內(nèi)存使用百分比 = 100 * (cmem / umem)
(3)網(wǎng)絡(luò)利用率
為了得到網(wǎng)絡(luò)利用率的相關(guān)數(shù)據(jù),需要從/proc/net/dev文件中獲得兩個數(shù)據(jù):從本機輸出的數(shù)據(jù)包數(shù),流入本機的數(shù)據(jù)包數(shù)。它們都位于這個文件的第四行。
性能收集程序開始記錄下這兩個數(shù)據(jù)的初始值,以后每次獲得這個值后均減去這個初始值即為從集群啟動開始從本節(jié)點通過的數(shù)據(jù)包。
利用上述數(shù)據(jù)計算出網(wǎng)絡(luò)的平均負(fù)載,方法如下:
平均網(wǎng)絡(luò)負(fù)載 = (輸出的數(shù)據(jù)包+流入的數(shù)據(jù)包) / 2
2. 通過/proc文件系統(tǒng)調(diào)整相關(guān)的內(nèi)核配置
允許ip轉(zhuǎn)發(fā) /proc/sys/net/ipv4/ip_forward
禁止ping/proc/sys/net/ipv4/icmp_echo_ignore_all
可以在命令行下直接往上述兩個“文件”里頭寫入"1"來實現(xiàn)相關(guān)配置,如果寫入"0"將取消相關(guān)配置。不過在系統(tǒng)重啟以后,這些配置將恢復(fù)默認(rèn)設(shè)置,所以,如果想讓這些修改生效,可以把下面的配置直接寫入/etc/profile文件,或者其他隨系統(tǒng)啟動而執(zhí)行的程序文件中。
- echo 1 > /proc/sys/net/ipv4/ip_forward
- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
如果需要獲取其他的性能參數(shù),或者需要對內(nèi)核進(jìn)行更多的配置,可以參考proc文件系統(tǒng)介紹,也可以直接通過man proc查看相關(guān)的信息。
【編輯推薦】