proc檔案系統中cpu,記憶體,網路資料使用情況獲取(附檢測網速原始碼)
(1) 處理器使用率
(2) 記憶體使用率
(3) 流入流出資料包
(4) 整體網路負載
這些資料分別要從/proc/stat、/proc/meminfo、/proc/net/dev三個檔案中提取,其實在嵌入式linux中一般都是vlan劃分的介面,在/proc/net/vlan/介面名的檔案中可以看到具體某一介面的流量。如裡有問題或對要提取的資料不太清楚,可以使用man proc來檢視proc檔案系統的聯機手冊。
(1) 處理器使用率
這裡要從/proc/stat中提取四個資料:使用者模式(user)、低優先順序的使用者模式(nice)、核心模式(system)以及空閒的處理器時間(idle)。它們均位於/proc/stat檔案的第一行。CPU的利用率使用如下公式來計算。
CPU利用率 = 100 *(user + nice + system)/(user + nice + system + idle)
CPU利用率 = 100 *(空閒系統時間idle)/(系統總時間所有之和)
我上一個部落格中有關於獲取cpu使用率的原始碼的stat檔案解釋http://blog.csdn.net/jk110333/article/details/8683478
(2) 記憶體使用率
這裡需要從/proc/meminfo檔案中提取兩個資料,當前記憶體的使用量(cmem)以及記憶體總量(amem)。
記憶體使用百分比 = 100 * (cmem / umem)
(3)網路利用率
為了得到網路利用率的相關資料,需要從/proc/net/dev檔案中獲得兩個資料:從本機輸出的資料包數,流入本機的資料包數。它們都位於這個檔案的第四行。
效能收集程式開始記錄下這兩個資料的初始值,以後每次獲得這個值後均減去這個初始值即為從叢集啟動開始從本節點通過的資料包。
利用上述資料計算出網路的平均負載,方法如下:
平均網路負載 = (輸出的資料包+流入的資料包) / 2
通過/proc/net/vlan/eth2.2的獲取函式如下
//獲取網速等級
long int last_bytes = 0;
#define file_name "/proc/net/vlan/eth2.2"
#define CHECK_SPEED 5 //檢測網速時間間隔
int check_speed_new(void)
{
FILE *fp;
int nl=0,ifl=0;
char buf[128];
long int data=0;
char ch1[10],ch2[10],ch3[10];
fp = fopen(file_name ,"r");
while(nl < 2)
{
if( fgets(buf, sizeof(buf), fp) == NULL)
return -1;
nl++;
}
if( fgets(buf, sizeof(buf), fp) != NULL)
{
if (sscanf(buf, "%s%s%s%d",ch1,ch2,ch3,&data) != 4)
{
fclose(fp);
return -1;
}
}
fclose(fp);
int bytes ;
// printf("data=%d\n",data);
bytes = ((data - last_bytes)/1024) / CHECK_SPEED;
last_bytes = data;
if(bytes > 50 && bytes < 251)
return 2;
else if(bytes >= 0 && bytes<51)
return 1;
else if(bytes > 250 && bytes < 500)
return 3;
else if(bytes > 500)
return 4;
else
return -1;
}
相關文章
- 在Linux中,如何檢查系統的CPU和記憶體使用情況?Linux記憶體
- 如何使用 Bash 指令碼從 SAR 報告中獲取 CPU 和記憶體使用情況指令碼記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- linux 網路 cat /proc/net/dev 檢視測試網路丟包情況Linuxdev
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- 檢查 Linux 中記憶體使用情況的 8 條命令Linux記憶體
- 檢視 Linux 系統中程序和使用者的記憶體使用情況Linux記憶體
- Linux系統如何檢視伺服器頻寬及網路使用情況?Linux伺服器
- 用 bmon 檢視網路頻寬使用情況
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- 網路安全筆記-入侵檢測系統筆記
- 在Linux中,如何檢視系統資源使用情況?Linux
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- win10系統如何利用工作管理員來檢視網路使用情況Win10
- Linux系統下分析記憶體使用情況的管理工具Linux記憶體
- Python讀取大檔案的"坑“與記憶體佔用檢測Python記憶體
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- CPU快取記憶體快取記憶體
- NFS網路檔案系統NFS
- 如何獲取 vue 單檔案自身原始碼路徑Vue原始碼
- 總結Linux下檢視記憶體使用情況的多種方法Linux記憶體
- linux系統檢視網路連線情況Linux
- Linux效能優化:記憶體使用情況分析Linux優化記憶體
- 使用 vmstat 命令確定記憶體使用情況記憶體
- 資料檔案在網路“裸奔”,如何在網際網路中進行檔案傳輸?
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- 作業系統-記憶體、檔案管理作業系統記憶體
- Python教程之獲取網路資料!Python
- QWebView獲取網頁原始碼WebView網頁原始碼
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- cifs網路檔案共享系統
- Linux系統網路檔案配置Linux
- windows10系統使用自帶記憶體檢測工具檢測記憶體好壞的方法Windows記憶體
- 網際網路醫院系統原始碼的主體情況如何?智慧藥房系統的蓬勃發展原始碼
- Xamarin Essentials教程獲取路徑檔案系統FileSystem
- Redis 記憶體突增時,如何定量分析其記憶體使用情況Redis記憶體
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體