搜尋
首頁常見問題linux中free是什麼

linux中free是什麼

Mar 02, 2023 am 09:59 AM
linux

在linux中,free是查看記憶體使用狀態的內建指令,可以顯示包含系統實體記憶體、虛擬記憶體(swap交換分割區)、共享記憶體和系統快取的使用情況,文法「free [選項] 」;free指令的輸出和top指令的記憶體部分非常相似。

linux中free是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

Linux free指令:查看記憶體使用狀態

free 指令用來顯示系統記憶體狀態,包括系統實體記憶體、虛擬記憶體(swap 交換分割區)、共享記憶體和系統快取的使用情況,其輸出和top 指令的記憶體部分非常相似。

free 指令的基本格式如下:

# free [选项]

表 1 羅列出了此指令常用的選項及各自的意義。

##- b以Byte(位元組)為單位,顯示記憶體使用量。 -k以 KB 為單位,顯示記憶體使用情況,此選項是 free 指令的預設選項。 -m以 MB 為單位,顯示記憶體使用量。 -g以 GB 為單位,顯示記憶體使用量。 -t在輸出的最終結果中,輸出記憶體和 swap 分割區的總量。 -o不顯示系統緩衝區這一列。 -s 間隔秒數依指定的間隔時間,持續顯示記憶體使用量。

free 命令可以显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。

如果加上 -h 选项,输出的结果会友好很多:

有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:

$ free -h -s 3

上面的指令每隔 3 秒輸出一次記憶體的使用情況,直到你按下 ctrl c。

由於 free 指令本身比較簡單,所以本文的重點會放在如何透過 free 指令來了解系統目前的記憶體使用狀況。

輸出簡介

#以下先解釋一下輸出的內容:

  • ##Mem 行(第二行)是記憶體的使用情況。

  • Swap 行(第三行)是交換空間的使用情況。

  • #total

    欄位顯示系統總可用的實體記憶體與交換空間大小。

  • #used
  • 欄位顯示已經被使用的實體記憶體和交換空間。

    #free
  • 欄位顯示還有多少實體記憶體和交換空間可用。
  • shared

    欄位顯示被共享使用的實體記憶體大小。

  • buff/cache 欄位顯示被buffer 和cache 使用的實體記憶體大小。

available### 欄位顯示還可以被應用程式使用的實體記憶體大小。 ###########################################我想只有在理解了一些基本概念之後,上面的輸出才能幫助我們了解系統的記憶體狀況。 ######

buff/cache

先來提一個問題: buffer 和cache 應該是兩種類型的內存,但是free 指令為什麼會把它們放在一起呢?要回答這個問題需要我們做些準備。讓我們先搞清楚 buffer 與 cache 的意思。

buffer# 在作業系統中指 buffer cache, 中文一般翻譯為 "緩衝區"。要理解緩衝區,必須先明確另外兩個概念:"扇區" 和 "塊"。扇區是設備的最小尋址單元,也叫 "硬扇區" 或 "設備塊"。區塊是作業系統中檔案系統的最小尋址單元,也叫 "檔案區塊" 或 "I/O 區塊"。每個區塊包含一個或多個磁區,但大小不能超過一個頁面,所以一個頁可以容納一個或多個記憶體中的區塊。當一個區塊被調入記憶體時,它要儲存在一個緩衝區中。每個緩衝區與一個區塊對應,它相當於是磁碟區塊在記憶體中的表示(下圖來自互聯網):

注意,buffer cache 只有區塊的概念而沒有檔案的概念,它只是把磁碟上的區塊直接移到記憶體中而不關心區塊中究竟存放的是什麼格式的檔案。

cache 在作業系統中指page cache,中文一般翻譯為"頁高速緩存"。頁高速緩存是核心實現的磁碟快取。它主要用來減少對磁碟的I/O 操作。具體地說,是透過把磁碟中的資料快取到實體記憶體中,把對磁碟的存取變成對實體記憶體的存取。頁快取快取的是記憶體頁面。快取中的頁來自對普通文件、區塊設備文件(這個指的是buffer cache 呀)和內存映射文件的讀寫
頁高速緩存對普通文件的緩存我們可以這樣理解:當內核要讀一個文件(比如 /etc/hosts)時,它會先檢查這個檔案的資料是不是已經在頁高速緩存中了。如果在,就放棄存取磁碟,直接從記憶體中讀取。這個行為稱為快取命中。如果資料不在快取中,就是未命中緩存,此時核心就要調度塊 I/O 操作從磁碟去讀取資料。然後核心將讀來的資料放入頁高速緩存中。這種快取的目標是檔案系統可以辨識的檔案(例如 /etc/hosts)。
頁高速緩存對區塊裝置檔案的快取就是我們在前面介紹的 buffer cahce。因為獨立的磁碟區塊透過緩衝區也被存入了頁高速緩存(緩衝區最終是由頁高速緩存來承載的)。

到這裡我們應該搞清楚了:無論是緩衝區還是頁高速緩存,它們的實作方式都是一樣的。緩衝區只不過是一種概念上比較特殊的頁高速緩存罷了。
那麼為什麼 free 指令不直接稱為 cache 而不是要寫成 buff/cache?這是因為緩衝區和頁高速緩存的實作並非天生就是統一的。在 linux 內核 2.4 中才將它們統一。更早的核心中有兩個獨立的磁碟快取:頁高速緩存和緩衝區高速緩存。前者快取頁面,後者快取緩衝區。當你知道了這些故事之後,輸出中列的名稱可能已經不再重要了。

#

free 与 available

在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?
free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available  = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

交换空间(swap space)

swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness:

vm.swappiness=10

如果系统的内存不足,则需要根据物理内存的大小来设置交换空间的大小。具体的策略网上有很丰富的资料,这里笔者不再赘述。

/proc/meminfo 文件

其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:

$ cat /proc/meminfo

有兴趣的同学可以直接查看这个文件。

总结

free 命令是一个既简单又复杂的命令。简单是因为这个命令的参数少,输出结果清晰。说它复杂则是因为它背后是比较晦涩的操作系统中的概念,如果不清楚这些概念,即便看了 free 命令的输出也 get 不到多少有价值的信息。

相关推荐:《Linux视频教程

表1 free 指令常用選項及意義
選項 意義

以上是linux中free是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。