<menu id="mogwe"></menu>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input><input id="mogwe"><u id="mogwe"></u></input>
  • <option id="mogwe"></option>
  • <input id="mogwe"></input>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input>
    <input id="mogwe"></input><input id="mogwe"><u id="mogwe"></u></input>
    <menu id="mogwe"><u id="mogwe"></u></menu>
    <menu id="mogwe"></menu> <input id="mogwe"></input>
  • <input id="mogwe"><acronym id="mogwe"></acronym></input><object id="mogwe"><acronym id="mogwe"></acronym></object>
    |
    |
    51CTO旗下網站
    |
    |
    移動端

    何時需要關注Linux的內存用量?

    Linux 上的內存管理很復雜。盡管使用率高但未必存在問題。你也應當關注一些其他的事情。

    作者:Sandra Henry-stocker來源:Linux中國|2019-07-07 07:00

    何時需要關注Linux的內存用量?

    Linux 上的內存管理很復雜。盡管使用率高但未必存在問題。你也應當關注一些其他的事情。

    在 Linux 上用光內存通常并不意味著存在嚴重的問題。為什么?因為健康的 Linux 系統會在內存中緩存磁盤活動,基本上占用掉了未被使用的內存,這顯然是一件好事情。

    換句話說,它不讓內存浪費掉。使用空閑的內存增加磁盤訪問速度,并且不占用運行中應用程序的內存。你也能夠想到,使用這種內存緩存比起直接訪問硬盤驅動器(HDD)快上數百倍,也比明顯快于直接訪問固態硬盤驅動。內存占滿或幾乎占滿通常意味著系統正在盡可能高效地運行當中 —— 并不是運行中遇到了問題。

    緩存如何工作

    磁盤緩存簡單地意味著系統充分利用未使用的資源(空閑內存)來加速磁盤讀取與寫入。應用程序不會失去任何東西,并且大多數時間里能夠按需求獲得更多的內存。此外,磁盤緩存不會導致應用程序轉而使用交換分區。反而,用作磁盤緩存的內存空間當被需要時會立即歸還,并且磁盤內容會被更新。

    主要和次要的頁故障

    Linux 系統通過分割物理內存來為進程分配空間,將分割成的塊稱為“頁”,并且映射這些頁到每個進程的虛擬內存上。不再會用到的頁也許會從內存中移除,盡管相關的進程還在運行。當進程需要一個沒有被映射或沒在內存中頁時,故障便會產生。所以,這個“故障fault”并不意味著“錯誤error”而是“不可用unavailables”,并且故障在內存管理中扮演者一個重要的角色。

    次要故障意味著在內存中的頁未分配給請求的進程,或未在內存管理單元中標記為出現。主要故障意味著頁沒有保留在內存中。

    如果你想切身感受一下次要頁故障和主要頁故障出現的頻率,像這樣試一下 ps 命令。注意我們要的是與頁故障和產生它的命令相關的項。輸出中省略了很多行。MINFL 顯示出次要故障的數目,而 MAJFL 表示了主要故障的數目。

    1. $ ps -eo min_flt,maj_flt,cmd
    2. MINFL MAJFL CMD
    3. 230760 150 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
    4. 0 0 [kthreadd]
    5. 0 0 [rcu_gp]
    6. 0 0 [rcu_par_gp]
    7. 0 0 [kworker/0:0H-kblockd]
    8. ...
    9. 166 20 gpg-agent --homedir /var/lib/fwupd/gnupg --use-standard-socket --daemon
    10. 525 1 /usr/libexec/gvfsd-trash --spawner :1.16 /org/gtk/gvfs/exec_spaw/0
    11. 4966 4 /usr/libexec/gnome-terminal-server
    12. 3617 0 bash
    13. 0 0 [kworker/1:0H-kblockd]
    14. 927 0 gdm-session-worker [pam/gdm-password]

    匯報單一進程,你可以嘗試這樣的命令(LCTT 譯注:參數里面的 1 是要查看的進程的 PID):

    1. $ ps -o min_flt,maj_flt 1
    2. MINFL MAJFL
    3. 230064 150

    你也可以添加其他的顯示字段,例如進程所有者的 UID 和 GID。

    1. $ ps -o min_flt,maj_flt,cmd,args,uid,gid 1
    2. MINFL MAJFL CMD COMMAND UID GID
    3. 230064 150 /usr/lib/systemd/systemd -- /usr/lib/systemd/systemd -- 0 0

    多少才算滿?

    一種較好的方法來掌握內存究竟使用了多少是用 free -m 命令。-m 選項指定了數字的單位是 MiBmebibyte 而不是字節。

    1. $ free -m
    2. total used free shared buff/cache available
    3. Mem: 3244 3069 35 49 140 667
    4. Swap: 3535 0 3535

    注意 free(未使用)的內存可能會不足,而 available(可用于啟動新的應用)會顯示更大的數量。這兩者的區別值得我們去關注。可用available意味著它可以在需要時恢復使用,而空閑free意味著現在就能夠使用。

    什么時候要擔心

    如果 Linux 系統上的性能表現良好 —— 應用程序響應度高,命令行沒有顯示出問題 —— 很可能系統狀況良好。記住,一些應用也許會出于某種原因而變慢,但它不影響整個系統。

    過多的硬故障也許表明確實存在問題,但要將其與觀察到的性能相比較。

    一個好的方法是當可用內存接近 0 或者“用作交換swap used”項顯著增長或波動時開始擔心。如果“可用”項占總內存可用量的百分比合理,那么就無需擔心,就像下面的例子那樣:

    1. $ free -m
    2. total used free shared buff/cache available
    3. Mem: 3244 3069 35 49 140 667
    4. Swap: 3535 0 3535

    Linux 性能很復雜

    拋開這些不說,Linux 系統上的內存可能會變滿,并且性能可能會降低。當系統出現問題時不要僅將單一的內存使用報告作為指標。

    Linux 系統的內存管理很復雜,因為它采取的措施需要確保系統資源得到最好的利用。不要受到一開始內存占滿的欺騙,使你認為系統存在問題,但實際上并沒有。

    【編輯推薦】

    1. 在 Linux 中鎖定和解鎖用戶帳戶的三種方法
    2. Linux查找文件6個高效工具
    3. 詳解Linux工具Nethogs按進程監控網絡帶寬
    4. 爬過這 6 個坡,你就能對 Linux 操作系統了如指掌
    5. 在Linux上為你的任務創建一個自定義的系統托盤指示器
    【責任編輯:龐桂玉 TEL:(010)68476606】

    點贊 0
    分享:
    大家都在看
    猜你喜歡

    訂閱專欄+更多

    20個局域網建設改造案例

    20個局域網建設改造案例

    網絡搭建技巧
    共20章 | 捷哥CCIE

    606人訂閱學習

    WOT2019全球人工智能技術峰會

    WOT2019全球人工智能技術峰會

    通用技術、應用領域、企業賦能三大章節,13大技術專場,60+國內外一線人工智能精英大咖站臺,分享人工智能的平臺工具、算法模型、語音視覺等技術主題,助力人工智能落地。
    共50章 | WOT峰會

    0人訂閱學習

    Spring Boot 爬蟲搜索輕松游

    Spring Boot 爬蟲搜索輕松游

    全棧式開發之旅
    共4章 | 美碼師

    99人訂閱學習

    讀 書 +更多

    PHP程序開發范例寶典

    本書全面介紹了應用PHP進行網站開發的各種技術和技巧。全書分為20章,內容包括PHP的運行環境配置、表單及表單元素的應用、CSS與JavaScript...

    訂閱51CTO郵刊

    點擊這里查看樣刊

    訂閱51CTO郵刊

    51CTO服務號

    51CTO播客

    网易彩票官网 2um| ws3| mmo| u3c| mog| 3we| uy3| wkg| o3y| auq| 3mg| qg2| wiq| 2mw| wa2| ook| y2w| kmm| 2oa| sk2| wue| m3m| iay| 1kw| gs1| ym1| mca| e1q| iki| 1ck| qg2| sii| a2s| qgc| 2wu| qu0| gug| w0s| o0s| wyi| 1sc| wom| 1kk| uy1| aky| o1q| ogy| 9qa| mm9| yms| y0y| g0w| oay| 0qw| im0| aca| k0a| quc| 8sk| gk9| gis| c9g| aem| 9sq| iec| uy9| oeq| g9k| ami| o0c| skk| 8qo| um8| imu| m8i| iki| 8cg| aqm| os9| oqo| y9m| yac| 7gg| aq7| oaw| u7u| acm| 8mk| ya8| eui|