久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1936|回復: 0
打印 上一主題 下一主題
收起左側

Linux的系統性能監測參數獲取

[復制鏈接]
跳轉到指定樓層
樓主
ID:107189 發表于 2016-3-5 18:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目前的工程需要簡單的監測一下Linux系統的:CPU負載、內存消耗情況、幾個指定目錄的磁盤空間、磁盤I/O、swap的情況還有就是網絡流量。
Linux下的性能檢測工具其實都有很多。mrtg(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/)就是一個很不錯的選擇。不過用mrtg就要裝sysstat、apache、snmp、perl之類的東西。而且安裝也要好幾個步驟,似乎比較麻煩。本來也想直接調用sar、vmstat之類的命令,parse一下結果就算了。哪知道發現不同的版本的linux這些命令的結果也都是不一樣。既然要按版本parse它們的結果,那還不如直接去系統里面獲得算了。于是研究了一下sysstat(http://freshmeat.net/projects/sysstat/)和gkrellm(http://gkrellm.net )的源代碼,找到監測性能的數據所在。

1、CPU
   在文件"/proc/stat"里面就包含了CPU的信息。每一個CPU的每一tick用在什么地方都在這個文件里面記著。后面的數字含義分別是:user、nice、sys、idle、iowait。有些版本的kernel沒有iowait這一項。這些數值表示從開機到現在,CPU的每tick用在了哪里。例如:
cpu0 256279030 0 11832528 1637168262
就是cpu0從開機到現在有256279030 tick用在了user消耗,11832528用在了sys消耗。所以如果想計算單位時間(例如1s)里面CPU的負載,那只需要計算1秒前后數值的差除以每一秒的tick數量就可以了。gkrellm就是這樣實現的:((200 * (v2 - v1) / CPU_TICKS_PER_SECOND) + 1) /2
例如,第一次讀取/proc/stat,user的值是256279030;一秒以后再讀一次,值是256289030,那么CPU在這一秒的user消耗就是:((200 * (256289030 - 256279030) / CPU_TICKS_PER_SECOND) + 1) /2 = ((10000 * 200 / 1000000) + 1) / 2 = 1%了。

2、內存消耗
   文件"/proc/meminfo"里面包含的就是內存的信息,還包括了swap的信息。例如:
$ cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:  1057009664 851668992 205340672        0 67616768 367820800
Swap: 2146787328 164429824 1982357504
MemTotal:      1032236 kB
MemFree:        200528 kB
MemShared:           0 kB
……
不過從gkrellm的源代碼看,有些版本沒有前面那兩行統計的信息,只能夠根據下面的Key: Value這種各式的數據收集。

3、磁盤空間
   從gkrellm的源代碼看,這個是一個很復雜的數據。磁盤分區的數據有可能分布在:/proc/mounts、/proc/diskstats、/proc/partitions等等。而且如果想要檢查某幾個特定的路徑,還需要通過mount、df等命令的幫助。為了減少麻煩,這個數據我就直接用statfs函數直接獲得了。
int statfs(const char *path, struct statfs *buf);
這個函數只需要輸入需要檢查的路徑名稱,就可以返回這個路徑所在的分區的空間使用情況:
總空間:buf.f_bsize * buf.f_blocks
空余空間:buf.f_bsize * buf.f_bavail

4、磁盤I/O
   磁盤I/O的數據也同樣比較復雜,有些版本看/proc/diskstats,有些版本看/proc/partitions,還有些版本至今我也不知道在那里看……不過可以看到數據的版本也像CPU那樣,需要隔一段時間取值,兩次取值的差就是流量。

5、網絡流量
   網絡流量也是五花八門,不過基本上都可以在/proc/net/dev里面獲得。同樣也是需要兩次取值取其差作為流量值。

   以上就是數據獲得源頭。程序也比較好寫,不外乎就是打開一些文件,逐行讀出來然后用sscanf來parse一下數據就可以了。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产三区av | av影音资源 | 亚洲一区 | 一区二区视频在线 | 欧美日韩视频在线 | 97热在线| 日韩中文电影 | 成人在线视频网站 | 欧美精品乱码99久久影院 | 成人欧美一区二区三区色青冈 | 夜夜操天天艹 | 在线第一页 | 大学生a级毛片免费视频 | 日本在线你懂的 | 欧美一区二区三区免费在线观看 | 国产成人免费在线观看 | 91九色婷婷 | 91精品久久久久久综合五月天 | 久久国产一区 | 秋霞国产| 国产精品久久久久久二区 | 久久青青| 午夜爱爱毛片xxxx视频免费看 | 无人区国产成人久久三区 | 伊人狠狠操 | 天天天插 | 久久天天躁狠狠躁夜夜躁2014 | 中文字幕 国产 | 免费久久网 | 国产精品久久久久久久久久久久久 | 欧美日韩亚洲一区 | 天天干天天色 | 九九综合九九 | www日日日| 欧美久久久久久久 | 玖玖综合在线 | 午夜精品久久久久久久久久久久久 | 91观看| 欧美一区二区三区视频 | 国产乱码一二三区精品 | 免费久久精品视频 |