(學習筆記)linux下CPU佔用率計算

2021-08-25 20:51:55 字數 1659 閱讀 9431

"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檢視相關的資訊。

linux下Bochs模擬占用CPU過高問題解決

在配置檔案bochsrc中新增下面兩行配置 clock sync slowddown,time0 local cpu count 1,ips 1000000 其中clock指的是,將內部時鐘調到最慢,cpu選項中count指的是使用單核心,ips則是指指令的執行速度。可以通過更改iaips值和col...

Linux下java程序占用CPU 100 排查

網上已經有老哥分享了。原文 主要是做個記錄備查 幾個命令 1.top檢視程序pid pid 37654 2.top p 37654 shift h 檢視子執行緒的pid 559 3.printf x n 559 轉成16進製制 0x22f,使用jstack的時候使用 4.jstack 37654 g...

linux下模擬CPU占用100 小程式

在做乙個測試時,需要模擬伺服器cpu占用滿的情況,在查閱相關資料後,發現網上程式不太好用,原文在這 優化後如下 bin sh filename killcpu.shif ne 1 then echo usage 0 stop exit 1 fistop start do echo pid is i ...