日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu 内存占用解析

發(fā)布時(shí)間:2025/3/21 Ubuntu 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu 内存占用解析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ubuntu? 內(nèi)存占用解析

最近在使用電腦的時(shí)候,使用top 命令,發(fā)現(xiàn)ubuntu內(nèi)存使用很緊張:

我的電腦是512 Mb的內(nèi)存,可以看到使用了467Mb? 還剩8Mb了,但是打開(kāi)系統(tǒng)監(jiān)視器的時(shí)候

可以看到兩個(gè)內(nèi)存顯示不一樣,到底以哪一個(gè)為準(zhǔn)呢?仔細(xì)觀察一下,命令行中的cached占用的內(nèi)存161456k

加上系統(tǒng)監(jiān)視器的306Mb,差不多就是現(xiàn)在內(nèi)存使用的情況467Mb。

網(wǎng)上查了一下:

用free -m命令查看

lyh@lyh-desktop:~$ free -m
???????????? total?????? used?????? free???? shared??? buffers???? cached
Mem:?????????? 464??????? 414???????? 49????????? 0????????? 3??????? 120
-/+ buffers/cache:??????? 290??????? 173
Swap:????????? 445???????? 23??????? 422
然后第一行那個(gè)464是總共使用的內(nèi)存,連cache也算進(jìn)去了,不用看,第二行290才是真正的占用了。173是空閑的。

也就是說(shuō)使用了290Mb的內(nèi)存


參見(jiàn):


Linux 內(nèi)存機(jī)制

Mem:表示物理內(nèi)存統(tǒng)計(jì)。
-/+ buffers/cached:表示物理內(nèi)存的緩存統(tǒng)計(jì)
Swap:表示硬盤(pán)上交換分區(qū)的使用情況。只有mem被當(dāng)前進(jìn)程實(shí)際占用完,即沒(méi)有了buffers和cache時(shí),才會(huì)使用到swap。

Mem 行(第一行)數(shù)據(jù)說(shuō)明:

Total:1035108KB。表示物理內(nèi)存總大小。

Used:1008984KB。表示總計(jì)分配給緩存(包含buffers 與cache )使用的數(shù)量,但其中可能部分緩存并未實(shí)際使用。

Free:26124KB。表示未被分配的內(nèi)存。

Shared:0kb。共享內(nèi)存,一般系統(tǒng)不會(huì)用到。

Buffers:124212KB。系統(tǒng)分配但未被使用的buffers 數(shù)量。

Cached:413000KB。系統(tǒng)分配但未被使用的cache 數(shù)量。

-/+ buffers/cache 行(第二行)數(shù)據(jù)說(shuō)明:

Used:471772kb,實(shí)際使用的buffers 與cache 總量,也是實(shí)際使用的內(nèi)存總量。

Free: 563336kb, 未被使用的buffers 與cache 和未被分配的內(nèi)存之和,這就是系統(tǒng)當(dāng)前實(shí)際可用內(nèi)存。

根據(jù)以上分析,可以得出一下結(jié)論:

1. 實(shí)際可用內(nèi)存大小:

Free(-/+ buffers/cache行)= Free(Mem)+buffers(Mem)+Cached(Mem);

563336 = 26124 + 124212+ 413000

2. 已經(jīng)分配的內(nèi)存大小:

Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

1008984kb = 471772 + 124212 +413000

3. 物理內(nèi)存總大小

total(Mem)= used(-/+ buffers/cache) + free(-/+ buffers/cache)

1035108 = 471772 + 563336

二. buffer 與cache 的區(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.

2.1 Cache

Cache:高速緩存,是位于CPU與主內(nèi)存間的一種容量較小但速度很高的存儲(chǔ)器。

由于CPU的速度遠(yuǎn)高于主內(nèi)存,CPU直接從內(nèi)存中存取數(shù)據(jù)要等待一定時(shí)間周期,Cache中保存著CPU剛用過(guò)或循環(huán)使用的一部分?jǐn)?shù)據(jù),當(dāng)CPU再次使用該部分?jǐn)?shù)據(jù)時(shí)可從Cache中直接調(diào)用,這樣就減少了CPU的等待時(shí)間,提高了系統(tǒng)的效率。

Cache又分為一級(jí)Cache(L1 Cache)和二級(jí)Cache(L2 Cache),L1 Cache集成在CPU內(nèi)部,L2 Cache早期一般是焊在主板上,現(xiàn)在也都集成在CPU內(nèi)部,常見(jiàn)的容量有256KB或512KB L2 Cache。

2.2 Buffer

Buffer:緩沖區(qū),一個(gè)用于存儲(chǔ)速度不同步的設(shè)備或優(yōu)先級(jí)不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域。通過(guò)緩沖區(qū),可以使進(jìn)程之間的相互等待變少,從而使從速度慢的設(shè)備讀入數(shù)據(jù)時(shí),速度快的設(shè)備的操作進(jìn)程不發(fā)生間斷。

在Free命令中顯示的buffer和cache,它們都是占用內(nèi)存:

buffer : 作為buffer cache的內(nèi)存,是塊設(shè)備的讀寫(xiě)緩沖區(qū),更靠近存儲(chǔ)設(shè)備,或者直接就是disk的緩沖區(qū)。

cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache,是memory的緩沖區(qū)

?如果cache 的值很大,說(shuō)明cache住的文件數(shù)很多。如果頻繁訪問(wèn)到的文件都能被cache住,那么磁盤(pán)的讀IO 必會(huì)非常小


free命令里各項(xiàng)內(nèi)存指標(biāo)說(shuō)明:


total used free shared buffers cached
Mem: 16425996 10727220 5698776 0 380904 9389832
-/+ buffers/cache: 956484 15469512
Swap: 8273464 212 8273252

其中第一行用全局角度描述系統(tǒng)使用的內(nèi)存狀況:
total——總物理內(nèi)存
used——已使用內(nèi)存,一般情況這個(gè)值會(huì)比較大,因?yàn)檫@個(gè)值包括了cache+應(yīng)用程序使用的內(nèi)存
free——完全未被使用的內(nèi)存
shared——應(yīng)用程序共享內(nèi)存
buffers——緩存,主要用于目錄方面,inode值等(ls大目錄可看到這個(gè)值增加)
cached——緩存,用于已打開(kāi)的文件
總結(jié):
total=used+free
used=buffers+cached (maybe add shared also)

第二行描述應(yīng)用程序的內(nèi)存使用:
前個(gè)值表示-buffers/cache——應(yīng)用程序使用的內(nèi)存大小,used減去緩存值
后個(gè)值表示+buffers/cache——所有可供應(yīng)用程序使用的內(nèi)存大小,free加上緩存值
總結(jié):?
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached

第三行表示swap的使用:
used——已使用
free——未使用

什么是Cache Memory(緩存內(nèi)存):

當(dāng)你讀寫(xiě)文件的時(shí)候,Linux內(nèi)核為了提高讀寫(xiě)性能與速度,會(huì)將文件在內(nèi)存中進(jìn)行緩存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。即使你的程序運(yùn)行結(jié)束后,Cache Memory也不會(huì)自動(dòng)釋放。這就會(huì)導(dǎo)致你在Linux系統(tǒng)中程序頻繁讀寫(xiě)文件后,你會(huì)發(fā)現(xiàn)可用物理內(nèi)存會(huì)很少。

其實(shí)這緩存內(nèi)存(Cache Memory)在你需要使用內(nèi)存的時(shí)候會(huì)自動(dòng)釋放,所以你不必?fù)?dān)心沒(méi)有內(nèi)存可用。如果你希望手動(dòng)去釋放Cache Memory也是有辦法的。

如何釋放Cache Memory(緩存內(nèi)存):

用下面的命令可以釋放Cache Memory:

To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches

注意,釋放前最好sync一下,防止丟失數(shù)據(jù)。

參考地址:http://hi.baidu.com/yacker/item/3926ceda78032230e3108f09



總結(jié)

以上是生活随笔為你收集整理的ubuntu 内存占用解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。