歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> linux中cpu的利用率獲取方法

linux中cpu的利用率獲取方法

日期:2017/3/2 16:32:47   编辑:Linux服務器

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查看相關的信息。

  參考資料和相關鏈接

  [1] 什麼是proc文件系統

  http://blog.chinaunix.net/u1/37836/showart_304248.html

  [2] Linux下如何獲取cpu的使用率

  http://topic.csdn.net/t/20060701/23/4855045.html

  [3] Exploring the /proc/net/ Directory

  linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html?page=1">http://www.linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html?page=1

  [4] /proc/net introduction

  http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Reference_Guide/s2-proc-dir-net.html

  [5] 使用ulimit和proc去調整系統參數

  http://www.linuxfly.org/post/73.htm

  注:文件裡面是一個增量,每過一個時間間隔對應的項使用了CPU都會有增加,要算百分比,得用上上一次的狀態值.

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

  返回

  elf 發表於 2007-11-16 09:06 #4

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

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

  2、等上一個時間段

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

  4、計算總的時間片

123下一頁
Copyright © Linux教程網 All Rights Reserved