• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            cyt

            目前的工程需要簡(jiǎn)單的監(jiān)測(cè)一下Linux系統(tǒng)的:CPU負(fù)載、內(nèi)存消耗情況、幾個(gè)指定目錄的磁盤(pán)空間、磁盤(pán)I/O、swap的情況還有就是網(wǎng)絡(luò)流量。
            Linux下的性能檢測(cè)工具其實(shí)都有很多。mrtg(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/)就是一個(gè)很不錯(cuò)的選擇。不過(guò)用mrtg就要裝sysstat、apache、snmp、perl之類(lèi)的東西。而且安裝也要好幾個(gè)步驟,似乎比較麻煩。本來(lái)也想直接調(diào)用sar、vmstat之類(lèi)的命令,parse一下結(jié)果就算了。哪知道發(fā)現(xiàn)不同的版本的linux這些命令的結(jié)果也都是不一樣。既然要按版本parse它們的結(jié)果,那還不如直接去系統(tǒng)里面獲得算了。于是研究了一下sysstat(http://freshmeat.net/projects/sysstat/)和gkrellm(http://gkrellm.net )的源代碼,找到監(jiān)測(cè)性能的數(shù)據(jù)所在。

            1、CPU
               在文件"/proc/stat"里面就包含了CPU的信息。每一個(gè)CPU的每一tick用在什么地方都在這個(gè)文件里面記著。后面的數(shù)字含義分別是:user、nice、sys、idle、iowait。有些版本的kernel沒(méi)有iowait這一項(xiàng)。這些數(shù)值表示從開(kāi)機(jī)到現(xiàn)在,CPU的每tick用在了哪里。例如:
            cpu0 256279030 0 11832528 1637168262
            就是cpu0從開(kāi)機(jī)到現(xiàn)在有256279030 tick用在了user消耗,11832528用在了sys消耗。所以如果想計(jì)算單位時(shí)間(例如1s)里面CPU的負(fù)載,那只需要計(jì)算1秒前后數(shù)值的差除以每一秒的tick數(shù)量就可以了。gkrellm就是這樣實(shí)現(xiàn)的:((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、內(nèi)存消耗
               文件"/proc/meminfo"里面包含的就是內(nèi)存的信息,還包括了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
            ……
            不過(guò)從gkrellm的源代碼看,有些版本沒(méi)有前面那兩行統(tǒng)計(jì)的信息,只能夠根據(jù)下面的Key: Value這種各式的數(shù)據(jù)收集。

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

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

            5、網(wǎng)絡(luò)流量
               網(wǎng)絡(luò)流量也是五花八門(mén),不過(guò)基本上都可以在/proc/net/dev里面獲得。同樣也是需要兩次取值取其差作為流量值。

               以上就是數(shù)據(jù)獲得源頭。程序也比較好寫(xiě),不外乎就是打開(kāi)一些文件,逐行讀出來(lái)然后用sscanf來(lái)parse一下數(shù)據(jù)就可以了。

            posted on 2006-03-02 22:54 cyt 閱讀(4434) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): Work
            Comments
            • # re: Linux的系統(tǒng)性能監(jiān)測(cè)參數(shù)獲取
              nomad
              Posted @ 2006-04-09 17:26
              我在現(xiàn)在到公司一直開(kāi)發(fā) snmp 網(wǎng)管軟件。。。
              其實(shí)走 snmp 的管理還是很爽的,通用很多。但是系統(tǒng)必須裝一個(gè) snmpd ,主流操作系統(tǒng)都自帶了。  回復(fù)  更多評(píng)論   
            • # re: Linux的系統(tǒng)性能監(jiān)測(cè)參數(shù)獲取
              cyt
              Posted @ 2006-04-10 14:59
              snmp絕對(duì)是正途。
              不過(guò)在我們的應(yīng)用中,需要自己的程序去檢查一些系統(tǒng)資源,發(fā)現(xiàn)不妥的時(shí)候要做一些相應(yīng)的舉措。例如磁盤(pán)分區(qū)滿(mǎn)了,要自動(dòng)調(diào)整分區(qū)的存放數(shù)據(jù)的權(quán)重;CPU過(guò)忙,就減少一些復(fù)雜運(yùn)算的請(qǐng)求等等……如果這些操作都用snmp,消耗在snmp上的資源就太多了,所以才會(huì)想到自己去獲取這些信息。  回復(fù)  更多評(píng)論   
            • # re: Linux的系統(tǒng)性能監(jiān)測(cè)參數(shù)獲取
              magixescuchador@hotmail.com
              Posted @ 2007-12-18 21:51
              ni hao  回復(fù)  更多評(píng)論   
             
            亚洲精品乱码久久久久久蜜桃图片| 久久婷婷五月综合色奶水99啪| 色婷婷综合久久久久中文一区二区 | 成人免费网站久久久| 日本亚洲色大成网站WWW久久| 久久婷婷五月综合国产尤物app| 久久99国产精品99久久| 伊人久久大香线蕉精品不卡 | 久久久免费观成人影院| 亚洲成色WWW久久网站| 国产精品久久久久一区二区三区| 狠狠精品久久久无码中文字幕| 狠狠色丁香久久婷婷综合五月| 久久精品无码一区二区三区免费 | 国产精品欧美久久久久无广告| 99久久免费国产精品特黄| 国产成人AV综合久久| 久久久久久久亚洲Av无码| 香蕉99久久国产综合精品宅男自 | 狠狠色丁香久久婷婷综合_中| 99久久无色码中文字幕| 亚洲愉拍99热成人精品热久久| 亚洲伊人久久大香线蕉苏妲己| avtt天堂网久久精品| 久久人人爽人人爽人人片AV不| 欧美久久亚洲精品| 久久人人爽人人精品视频| 久久精品国产只有精品66| 精品久久人人做人人爽综合 | 一本一本久久A久久综合精品| 无码人妻少妇久久中文字幕| 久久久久一级精品亚洲国产成人综合AV区| www久久久天天com| 国产99精品久久| a级成人毛片久久| 四虎国产精品免费久久5151| 99久久成人18免费网站| 久久综合一区二区无码| 国产精品久久久久久久人人看| 久久婷婷午色综合夜啪| 2021最新久久久视精品爱|