Linux吃掉了我的記憶體

來源:互聯網
上載者:User

Linux吃掉了我的記憶體

發生了什嗎?

Linux正借用你未使用的記憶體來做磁碟緩衝。這使你的電腦看起來可用記憶體很少,但事實不是這樣!一切都很正常!

為什麼這麼做?

磁碟緩衝使你的系統運行更快更流暢!除了使新手感到困惑,這沒什麼缺點。它從來沒有以任何方式從你的應用拿走記憶體。

如果我想運行更多的應用該怎麼辦?

如果你的應用想要擷取更多的記憶體,系統會從磁碟緩衝中拿走一塊被借用的記憶體。磁碟緩衝會立即還給應用!你的電腦可用記憶體的並不少!

我需要更多的交換分區(swap)嗎?

不需要,磁碟緩衝僅會借用應用目前不需要的記憶體。它不會使用交換分區。如果應用需要更多的記憶體,系統會從磁碟緩衝中拿回來。系統不會使用交換分區。

我如何讓Linux停止這樣做?

你不能禁用磁碟緩衝。任何人想要禁用磁碟緩衝的唯一理由是他認為這從他的應用中拿走了記憶體,但事實不是這樣!磁碟緩衝可以讓應用載入更快並且運行更加流暢,但它卻從來沒有拿走記憶體!因此,沒有任何理由去禁用它!

如果不是這樣,為什麼 topfree命令說我所有的記憶體已被使用?

這僅僅是用辭的差異。你和Linux系統一致認為被應用佔用的記憶體稱為used,而沒有被任何程式使用的部分稱為free

但是,你認為目前被佔用但仍然可以被應用使用的記憶體稱作什麼呢?

你可能認為這部分記憶體是freeavailable。而Linux系統稱它usedavailable:

記憶體 你稱它 Linux稱它
被應用使用 used used
被佔用,但可以使用 free(或available) used(或available)
沒有用來做任何事 free free

譯註:老版free命令中被佔用但可以使用的記憶體稱為used(used中的一部分,即buffers+cached), 而新版的free命令中稱之為available

不嚴格來講,topfree命令稱這部分記憶體為bufferscached。因為你和Linux用辭的差異,你可能認為你的電腦可用記憶體很少,不過事實並非如此。

譯註:這部分記憶體準確來說是新版本free命令中的available或者是新版本top命令中的avail Mem

我怎麼看我真正還有多少可用記憶體?

為了弄明白除了交換分區外你的應用可以使用多少記憶體,執行free -m命令,然後查看available那一列:

1
2
3
4
$ free -m
total used free shared buff/cache available
Mem: 1504 1491 13 0 855 792
Swap: 2047 6 2041

(2016年之前的Linux安裝版本,在-/+ buffers/cache那排查看free列)

這是你以MB為單位的答案。如果你天真地查看usedfree,你會認為你的記憶體幾乎快佔滿達到99%,然而實際僅僅只有47%!

如果想查看更詳細、更專業的關於Linux統計available記憶體大小的描述,請看 the commit that added the field.

什麼時候我該開始擔心?

一個擁有足夠記憶體的、運行良好的Linux系統在運行一段時間後會表現出以下預期的無害特徵:

  • free記憶體接近於0
  • used記憶體接近總共記憶體
  • available記憶體(或者是free + buffers/cache)有足夠空間(比如說:總記憶體的20%以上)
  • swap used沒有發生變化

真正的記憶體不夠、你也許想調查原因的情形,警告標誌如下:

  • available記憶體(或者是free + buffers/cache)接近於0
  • swap used在增加或者波動
  • dmesg | grep oom-killer命令顯示OutOfMemory-killer程式正在運行
我如何驗證這些?

如果想瞭解更多細節和做實驗測試磁碟緩衝的影響,請看這個頁面。我做了少量的工作只是想讓你感激磁碟緩衝,而不是讓你測試你的硬體速度提升了幾個數量級。

英文原文: https://www.linuxatemyram.com/
作者: Vidar Holen
譯者: thinkam

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.