成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux下如何獲取cpu的利用率

系統 Linux
本文將介紹如何從/proc文件系統中獲取與防火墻相關的一些性能參數,以及如何通過/proc文件系統修改內核的相關配置。

[[201252]]

"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

這里計算cpu使用率是有問題的,需要使用上一狀態的值來計算

正確的計算方法是,等上一個時間:

1、記錄某個時刻cpu的使用情況

2、等上一個時間段

3、再記錄此刻的cpu使用情況

4、計算總的時間片

把***次的所有cpu使用情況求和,得到j1

把第二次的所有cpu使用情況求和,得到j2

j2-j1得到這個時間段的所有時間片

即total=j2-j1=第二次的所有列的和-***次的所有列的和

5、計算idle時間

idle對應第五列的數據,用第二次的減去***次的即可

idle=第二次的第五列-***次的第五列

6、計算cpu使用率

rate=(total-idle)/total

在Linux/Unix下,CPU利用率分為用戶態 ,系統態 和空閑態 ,分別表示CPU處于用戶態執行的時間,系統內核執行的時間,和空閑系統進程執行的時間。平時所說的CPU利用率是指:CPU執行非系統空閑進程的時間 / CPU總的執行時間 。

linux c程序獲取cpu使用率及內存使用情況

2009-05-17 23:10

想獲取一下目標機運行時linux系統的硬件占用情況,寫了這幾個小程序,以后直接用了。

方法就是讀取proc下的文件來獲取了。 cpu使用率: /proc/stat ,內存使用情況: /proc/meminfo

看程序 :

  1. /*************************************************************** 
  2.  *    @file:        statusinfo.c 
  3.  * 
  4.  *    @brief:        從linux系統獲取cpu及內存使用情況 
  5.  *    @version    1.0 
  6.  * 
  7.  ***************************************************************/ 
  8.  typedef struct PACKED         //定義一個cpu occupy的結構體 
  9. char name[20];      //定義一個char類型的數組名name有20個元素 
  10. unsigned int user; //定義一個無符號的int類型的user 
  11.  unsigned int nice; //定義一個無符號的int類型的nice 
  12.  unsigned int system;//定義一個無符號的int類型的system 
  13.  unsigned int idle; //定義一個無符號的int類型的idle 
  14.  }CPU_OCCUPY; 
  15.  
  16.  typedef struct PACKED         //定義一個mem occupy的結構體 
  17. char name[20];      //定義一個char類型的數組名name有20個元素 
  18. unsigned long total;  
  19.  char name2[20]; 
  20.  unsigned long free;                        
  21.  }MEM_OCCUPY; 
  22.  
  23.  get_memoccupy (MEM_OCCUPY *mem) //對無類型get函數含有一個形參結構體類弄的指針O 
  24.  { 
  25.      FILE *fd;           
  26.      int n;              
  27.      char buff[256];    
  28.      MEM_OCCUPY *m; 
  29.      m=mem; 
  30.                                                                                                                 
  31.      fd = fopen ("/proc/meminfo""r");  
  32.         
  33.      fgets (buff, sizeof(buff), fd);  
  34.      fgets (buff, sizeof(buff), fd);  
  35.      fgets (buff, sizeof(buff), fd);  
  36.      fgets (buff, sizeof(buff), fd);  
  37.      sscanf (buff, "%s %u %s", m->name, &m->total, m->name2);  
  38.       
  39.      fgets (buff, sizeof(buff), fd); //從fd文件中讀取長度為buff的字符串再存到起始地址為buff這個空間里  
  40.      sscanf (buff, "%s %u", m->name2, &m->free, m->name2);  
  41.       
  42.      fclose(fd);     //關閉文件fd 
  43.  } 
  44.  
  45.  int cal_cpuoccupy (CPU_OCCUPY *o, CPU_OCCUPY *n)  
  46.  {    
  47.      unsigned long od, nd;     
  48.      unsigned long id, sd; 
  49.      int cpu_use = 0;    
  50.       
  51.      od = (unsigned long) (o->user + o->nice + o->system +o->idle);//***次(用戶+優先級+系統+空閑)的時間再賦給od 
  52.      nd = (unsigned long) (n->user + n->nice + n->system +n->idle);//第二次(用戶+優先級+系統+空閑)的時間再賦給od 
  53.         
  54.      id = (unsigned long) (n->user - o->user);    //用戶***次和第二次的時間之差再賦給id 
  55.      sd = (unsigned long) (n->system - o->system);//系統***次和第二次的時間之差再賦給sd 
  56.      if((nd-od) != 0) 
  57.      cpu_use = (int)((sd+id)*10000)/(nd-od); //((用戶+系統)乖100)除(***次和第二次的時間差)再賦給g_cpu_used 
  58.      else cpu_use = 0; 
  59.      //printf("cpu: %u/n",cpu_use); 
  60.      return cpu_use; 
  61.  } 
  62.  
  63.  get_cpuoccupy (CPU_OCCUPY *cpust) //對無類型get函數含有一個形參結構體類弄的指針O 
  64.  {    
  65.      FILE *fd;          
  66.      int n;             
  67.      char buff[256];  
  68.      CPU_OCCUPY *cpu_occupy; 
  69.      cpu_occupy=cpust; 
  70.                                                                                                                  
  71.      fd = fopen ("/proc/stat""r");  
  72.      fgets (buff, sizeof(buff), fd); 
  73.       
  74.      sscanf (buff, "%s %u %u %u %u", cpu_occupy->name, &cpu_occupy->user, &cpu_occupy->nice,&cpu_occupy->system, &cpu_occupy->idle); 
  75.       
  76.      fclose(fd);      
  77.  } 
  78.  
  79.  int main() 
  80.  { 
  81.      CPU_OCCUPY cpu_stat1; 
  82.      CPU_OCCUPY cpu_stat2; 
  83.      MEM_OCCUPY mem_stat; 
  84.      int cpu; 
  85.       
  86.      //獲取內存 
  87.     get_memoccupy ((MEM_OCCUPY *)&mem_stat); 
  88.       
  89.      //***次獲取cpu使用情況 
  90.     get_cpuoccupy((CPU_OCCUPY *)&cpu_stat1); 
  91.      sleep(10); 
  92.       
  93.      //第二次獲取cpu使用情況 
  94.     get_cpuoccupy((CPU_OCCUPY *)&cpu_stat2); 
  95.       
  96.      //計算cpu使用率 
  97.     cpu = cal_cpuoccupy ((CPU_OCCUPY *)&cpu_stat1, (CPU_OCCUPY *)&cpu_stat2); 
  98.       
  99.      return 0; 
  100.  } 

 

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關推薦

2023-04-04 09:22:50

LinuxCPU命令

2010-03-11 16:49:55

Linux CPU利用

2024-10-14 13:01:33

AOTcpu符號

2013-01-04 10:44:31

IBMdW

2019-03-05 15:53:40

Linux服務器CPU

2019-08-28 06:58:06

Linux監控腳本Shell

2024-06-26 09:29:53

2011-03-17 15:16:38

2014-04-09 16:52:24

NetHogs網絡帶寬開源監控

2012-10-11 10:21:33

數據中心CPU利用率服務器效率

2019-01-23 10:21:32

吞吐量響應時間CPU

2010-03-15 15:01:37

2011-03-17 13:54:42

查詢參數SQL語句利用率

2021-02-03 09:26:49

數據中心基礎設施能源

2015-09-07 11:54:25

云計算數據中心資源利用

2013-03-19 12:23:25

SDN網絡利用率網絡系統架構

2011-04-12 09:07:47

磁盤空間利用率虛擬化的隱藏成本

2019-03-07 09:25:59

LinuxCPU交換分區

2012-11-07 15:07:30

VMware虛擬化

2013-04-02 09:15:40

服務器虛擬化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产四虎 | 国产毛片视频 | 亚洲在线久久 | 一区二区三区福利视频 | 超碰免费在线观看 | 午夜影院视频在线观看 | 日本三级在线 | 亚洲欧洲成人av每日更新 | a级片www| 九九九久久国产免费 | 国产日韩一区二区 | 国产精品国产成人国产三级 | 亚洲精品www. | 日韩电影在线一区 | 手机av在线 | 国产一区二区电影 | 99草免费视频 | 九九九久久国产免费 | a在线视频 | 亚洲精品一区二区三区在线 | 2020天天操 | 91精品国产91久久综合桃花 | 我要看黄色录像一级片 | 国产露脸对白88av | 草草精品| 国产亚洲精品久久久久动 | aaaaaa大片免费看最大的 | 亚洲不卡在线观看 | 91亚洲国产成人精品一区二三 | 日产精品久久久一区二区福利 | 91天堂 | 欧美国产一区二区 | 亚洲精品一区二区二区 | 毛片在线免费 | 欧美在线视频一区 | 日日夜夜狠狠操 | 日韩欧美在线一区 | 免费在线播放黄色 | 91久操视频 | 亚洲欧美日本在线 | 欧美精品区 |