proc檔案系統:查詢cpu使用率、記憶體使用量率、

來源:互聯網
上載者:User

"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) 

   c預言實現如下:

   int get_cpu_usage(void)
{
    int total;
    int usage;
    int user;
    int nice;
    int system;
    int idle;
    unsigned char cpu[8];
    unsigned char text[256];
    FILE *fp;
    fp = fopen("/proc/stat", "r");
        fread(text, 1, sizeof(text), fp);
    if (strstr(text, "cpu"))
    {
        sscanf(text, "%s %d %d %d %d", cpu, &user, &nice, &system, &idle);
    }
 
    printf("%d %d %d %d/n", user, nice, system, idle);
 
    fclose(fp);
    total = (user + nice + system + idle);
        usage = ((user + nice + system )*100)/total ;
    return usage;
}

   (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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.