<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 28,  comments - 15,  trackbacks - 0

    解釋一下Linux上free命令的輸出。

      下面是free的運行結(jié)果,一共有4行。為了方便說明,我加上了列號。這樣可以把free的輸出看成一個二維數(shù)組FO(Free Output)。例如:

    • FO[2][1] = 24677460
    • FO[3][2] = 10321516  
                       1          2          3          4          5          6
    1              total       used       free     shared    buffers     cached
    2 Mem:      24677460   23276064    1401396          0     870540   12084008
    3 -/+ buffers/cache:   10321516   14355944
    4 Swap:     25151484     224188   24927296

      free的輸出一共有四行,第四行為交換區(qū)的信息,分別是交換的總量(total),使用量(used)和有多少空閑的交換區(qū)(free),這個比較清楚,不說太多。

      free輸出地第二行和第三行是比較讓人迷惑的。這兩行都是說明內(nèi)存使用情況的。第一列是總量(total),第二列是使用量(used),第三列是可用量(free)。

      第一行的輸出時從操作系統(tǒng)(OS)來看的。也就是說,從OS的角度來看,計算機上一共有:

    • 24677460KB(缺省時free的單位為KB)物理內(nèi)存,即FO[2][1];
    • 在這些物理內(nèi)存中有23276064KB(即FO[2][2])被使用了;
    • 還用1401396KB(即FO[2][3])是可用的;

    這里得到第一個等式:

    • FO[2][1] = FO[2][2] + FO[2][3]

    FO[2][4]表示被幾個進(jìn)程共享的內(nèi)存的,現(xiàn)在已經(jīng)deprecated,其值總是0(當(dāng)然在一些系統(tǒng)上也可能不是0,主要取決于free命令是怎么實現(xiàn)的)。

    FO[2][5]表示被OS buffer住的內(nèi)存。FO[2][6]表示被OS cache的內(nèi)存。在有些時候buffer和cache這兩個詞經(jīng)常混用。不過在一些比較低層的軟件里是要區(qū)分這兩個詞的,看老外的洋文:

    • A buffer is something that has yet to be "written" to disk. 
    • A cache is something that has been "read" from the disk and stored for later use.

    也就是說buffer是用于存放要輸出到disk(塊設(shè)備)的數(shù)據(jù)的,而cache是存放從disk上讀出的數(shù)據(jù)。這二者是為了提高IO性能的,并由OS管理。

    Linux和其他成熟的操作系統(tǒng)(例如windows),為了提高IO read的性能,總是要多cache一些數(shù)據(jù),這也就是為什么FO[2][6](cached memory)比較大,而FO[2][3]比較小的原因。我們可以做一個簡單的測試:

    1. 釋放掉被系統(tǒng)cache占用的數(shù)據(jù);
      echo 3>/proc/sys/vm/drop_caches

       

    2. 讀一個大文件,并記錄時間;
    3. 關(guān)閉該文件;
    4. 重讀這個大文件,并記錄時間;

    第二次讀應(yīng)該比第一次快很多。原來我做過一個BerkeleyDB的讀操作,大概要讀5G的文件,幾千萬條記錄。在我的環(huán)境上,第二次讀比第一次大概可以快9倍左右。

      free輸出的第二行是從一個應(yīng)用程序的角度看系統(tǒng)內(nèi)存的使用情況。

    • 對于FO[3][2],即-buffers/cache,表示一個應(yīng)用程序認(rèn)為系統(tǒng)被用掉多少內(nèi)存;
    • 對于FO[3][3],即+buffers/cache,表示一個應(yīng)用程序認(rèn)為系統(tǒng)還有多少內(nèi)存;

    因為被系統(tǒng)cache和buffer占用的內(nèi)存可以被快速回收,所以通常FO[3][3]比FO[2][3]會大很多。

    這里還用兩個等式:

    • FO[3][2] = FO[2][2] - FO[2][5] - FO[2][6]
    • FO[3][3] = FO[2][3] + FO[2][5] + FO[2][6]

    這二者都不難理解。

      free命令由procps.*.rpm提供(在Redhat系列的OS上)。free命令的所有輸出值都是從/proc/meminfo中讀出的。

    在系統(tǒng)上可能有meminfo(2)這個函數(shù),它就是為了解析/proc/meminfo的。procps這個包自己實現(xiàn)了meminfo()這個函數(shù)。可以下載一個procps的tar包看看具體實現(xiàn),現(xiàn)在最新版式3.2.8。

    posted on 2013-04-12 11:19 zhangxl 閱讀(167) 評論(0)  編輯  收藏 所屬分類: linux

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(1)

    隨筆分類(17)

    隨筆檔案(28)

    文章分類(30)

    文章檔案(30)

    相冊

    收藏夾(2)

    hibernate

    java基礎(chǔ)

    mysql

    xml

    關(guān)注

    壓力測試

    算法

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 96774
    • 排名 - 600

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成a人片毛片在线| 国产精品亚洲精品观看不卡| 久久久青草青青国产亚洲免观| 亚洲成A人片777777| 亚洲中文精品久久久久久不卡| 在线观看亚洲网站| 最近中文字幕电影大全免费版| 免费夜色污私人影院在线观看| 91亚洲导航深夜福利| 污污视频免费观看网站| 免费无码看av的网站| 国产精品亚洲αv天堂无码| 亚洲第一网站免费视频| 一级毛片aa高清免费观看| 国产免费不卡v片在线观看| 亚洲午夜AV无码专区在线播放| 老湿机一区午夜精品免费福利| 免费在线看v网址| 久久夜色精品国产亚洲AV动态图| 日韩大片免费观看视频播放| 亚洲国产精品一区二区三区久久| 国产亚洲精品成人AA片| 最近中文字幕免费2019| 亚洲精品日韩专区silk| 成熟女人特级毛片www免费| 亚洲欧洲另类春色校园小说| 青青草免费在线视频| 911精品国产亚洲日本美国韩国| 黄色免费网站网址| 亚洲综合在线视频| 免费看黄的成人APP| 中文字幕亚洲天堂| 91高清免费国产自产拍2021| 中日韩亚洲人成无码网站| 亚洲精品无码99在线观看| 美女羞羞视频免费网站| 亚洲人成色777777在线观看| 久久国产精品免费一区| 亚洲精品国产自在久久 | caoporn国产精品免费| 免费**毛片在线播放直播|