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檢視CPU和記憶體使用情況Linux記憶體
- JRockit jstat 檢視系統記憶體資源使用情況JS記憶體
- SOLARISE檢視記憶體使用情況記憶體
- shell採集系統cpu 記憶體 磁碟 網路資訊記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- linux下檢視記憶體使用情況Linux記憶體
- linux 網路 cat /proc/net/dev 檢視測試網路丟包情況Linuxdev
- Linux技術——linux下檢視記憶體和CPU的使用情況Linux記憶體
- NFS 網路檔案系統測試筆記NFS筆記
- 監控 cpu 記憶體 網路卡的使用情況的一個命令 比較實用記憶體
- 檢查 Linux 中記憶體使用情況的 8 條命令Linux記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- 檢視 Linux 系統中程式和使用者的記憶體使用情況Linux記憶體
- linux檢視 CPU,記憶體,網路流量和磁碟 I/OLinux記憶體
- 檢測Linux記憶體使用情況的free命令的10個例子Linux記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- 用 bmon 檢視網路頻寬使用情況
- 網路安全筆記-入侵檢測系統筆記
- 檢查表空間、資料檔案、OS空間使用情況的指令碼指令碼
- 從網路裡面獲取資料寫入到檔案
- Linux系統如何檢視伺服器頻寬及網路使用情況?Linux伺服器
- 用ping檢測網段ip的佔用情況
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- 如何檢查 Android 應用的記憶體使用情況Android記憶體
- 網際網路在中國的使用情況 — 統計資料和趨勢-資訊圖
- win10系統如何利用工作管理員來檢視網路使用情況Win10
- [轉]檢測SQLSERVER資料庫CPU瓶頸及記憶體瓶頸SQLServer資料庫記憶體
- 透過CPU記憶體佔用情況,找出Oracle的session對應的program記憶體OracleSession
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- Linux檢視磁碟目錄記憶體空間使用情況Linux記憶體
- CPU快取記憶體快取記憶體
- 檢查資料檔案使用情況和能夠resize到高水位值指令碼指令碼
- 如何觀察程式的記憶體佔用情況記憶體
- Linux系統下分析記憶體使用情況的管理工具Linux記憶體
- 簡單案例教你用PROC檔案系統獲取程式資訊薦
- Mongodb記憶體管理和使用情況情況查詢MongoDB記憶體