新四季網

cache大小與cache存取時間的關係(free-m中的cache是什麼為什麼會佔用那麼高)

2023-05-18 01:28:08

cache大小與cache存取時間的關係?"free -m" 命令的輸出結果中的 Cache 是什麼?,我來為大家科普一下關於cache大小與cache存取時間的關係?下面希望有你要的答案,我們一起來看看吧!

cache大小與cache存取時間的關係

環境紅帽企業 linux(所有版本)JBoss 企業應用程式平臺 (EAP) - 所有版本Issue什麼是Cache在free -m輸出以及為什麼內存利用率高cache?如何通過分析 Heap 創建新的 JBoss 伺服器實例所需的內存容量freeJBoss 中的命令輸出,如果已經有一個 JBoss 實例在運行?為什麼緩存使用了大量內存?緩存中經常充分利用物理內存解決

"free -m" 命令的輸出結果中的 Cache 是什麼?

它表示當前被 Page chche 佔用的內存容量,即 RAM 容量。Page cache 是被放到 RAM 上的曾經讀或寫操作所用到的文件或實際數據的副本。

擁有緩存機制有什麼好處?當執行讀或者寫操作的時候,內核首先將所要的數據放到 RAM。

讀取操作: 去磁碟找到數據 --> 把數據從磁碟存到 RAM --> 執行讀操作

寫操作: - 去磁碟找到數據 --> 把數據從磁碟存到 RAM --> 執行寫操作 --> 把修改的數據複製到磁碟

不論是訪問外部存儲還是本地存儲,總是慢於直接訪問 RAM,因為磁碟讀取速度慢於 RAM 的讀取速度。如果某文件持續地被讀取或者修改,訪問磁碟是一種資源消耗。在 Cache 的幫助下,文件會在 RAM 保存一段時間,這樣就不用每次都去磁碟讀或者修改數據。經過一段時間後,Cache 上的數據會被同步到磁碟。把文件存到 RAM 裡大大提高了處理速度,因為與從本地磁碟訪問文件相比,它減少了大量的文件訪問時間。這也間接地提高了計算機的整體性能。

下面的示例演示了緩存如何提高整體性能:

[root@sourcedb ~]# cat >aaa #寫入文件aaaadfaadfaadfa^C[root@sourcedb ~]# [root@sourcedb ~]# cat aaa #查看內容adfaadfaadfa[root@sourcedb ~]# sync[root@sourcedb ~]# echo 3 > /proc/sys/vm/drop_caches #清空cache如果您系統的 IO 操作頻繁,我們不建議您使用這條命令。請不要在生產環境中使用以下命令。[root@sourcedb ~]# time cat aaaadfaadfaadfareal 0m0.018s #實際為0.018suser 0m0.000ssys 0m0.006s[root@sourcedb ~]# time cat aaa adfaadfaadfareal 0m0.001s #實際為0.001s 從緩存中讀取速度明顯大於0.018user 0m0.000ssys 0m0.001s因此,只要有空閒內存,內核將始終嘗試利用它來將所需文件保存為緩存。

如果沒有可用 RAM 並且新進程需要可用 RAM,會發生什麼情況? 當一個新的進程需要 RAM 的空頁時,內核會檢查 cache 是否有空頁,並且把 cache 裡的文件同步到本地磁碟,從而收回空頁,釋放 RAM 給新的進程

有關「free -m」命令輸出的詳細說明:-

# free -m total used free shared buffers cachedMem: 3753 3455 298 0 144 664-/ buffers/cache: 2645 1107 <<-- Actual Free RAMSwap: 4095 75 4020

上述實例中,RAM 內存總量為 3753 MB。其中 3455 MB 被佔用,298 MB 為剩餘容量。在 "free -m" 輸出結果中,cache 和 buffers 也被算作實際佔用的 RAM 容量,但這並不符合事實。在被佔用的 3455 MB 內存中,一部分被用作 cache 或 buffer。如上所述,當沒有空餘的 RAM 容量分配給新進程時,就可以回收 cache 和 buffer 的內存。所以我們可以把 "Cache" 和 "buffer" 看作空餘 RAM。因此可以根據以下公式計算實際剩餘 RAM 的容量。Actual Free RAM = "free" "buffers" "cached" = 298 144 664 = 1106 在 "free -m" 命令輸出的第二行的 "free" 值約為 1107。

為什麼 cache 要佔用那麼多的內存?

對於一個 Linux 虛擬內存管理器來說這是正常現象。為了理解為什麼在正常情況下cache內存那麼高,您必須先了解linux是如何處理 I/O的。當某用戶讀或者寫文件時,它實際上是修改主內存的副本。內核會在磁碟裡創建一個副本,必要時會對其修改。被這些副本所佔用的內存就叫做 cached memory。當用戶進程發起讀或者寫操作時,就會消耗 cache 內存。內核會查找用戶正在操作的文件副本,如果沒有的話,它會在 cache 裡分配出一個新的頁面,並且從磁碟裡讀出相應的數據填充它。如果用戶只是讀這個文件,這一頁會被標註成 "clean" cache 頁。然而,只要用戶寫該文件,這一頁會被標註成 "dirty"。出現在 ps 裡被稱做 pdflush 的內核線程會定期被喚醒,並將所有標記為 dirty 的頁面複製到磁碟,然後把它們標記為 clean。注意該頁面只能被重新標記為 clean,由於之後可能會對該文件做進一步的 IO 操作,該頁面被重新寫回時並不會被釋放。當內核需要內存時,cache 頁才會被釋放。我們沒有必要把 cache 頁轉換成空頁,因為從磁碟讀取 cache 頁可以加快 IO 速率,而且釋放一個 cache 頁和分配一個空頁一樣簡單,此外一個空頁對於系統執行也沒有任何作用。如果 cache 頁佔滿了內存,當下一次內核需要內存時,它會簡單地逐出最近最少使用的 clean 頁並重新利用它們。,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了