我的內(nèi)存都去哪里了?
在疫情期間,小編不得不待在家中遠(yuǎn)程辦公。但變的是辦公方式,不變的是美創(chuàng)運(yùn)維的7*24小時不間斷支持。
這不,一位客戶發(fā)來了一條消息:
客戶:張工,好像我這個數(shù)據(jù)庫服務(wù)器的內(nèi)存使用率有點(diǎn)高啊,你幫我看看?
隨即發(fā)了個linux環(huán)境下的free -g的截圖過來:
小編一看,按照這個截圖的顯示,的確在總共62Gb的內(nèi)存里,可使用內(nèi)存只剩1Gb了。但是,我們也可以觀察到,cached顯示的是55Gb,我們再獲取了一下top命令的截圖:
那為什么cached的內(nèi)存使用這么大呢?這樣的內(nèi)存使用情況是正常的嗎?
要回答這些問題,我們需要了解一下buffer與cache的含義。buffer 和 cache 是兩個在計(jì)算機(jī)技術(shù)中被用濫的名詞,放在不同語境下會有不同的意義。我們這里都將其放在linux內(nèi)存這個語境中解釋。
什么是buffer
在 Linux 的內(nèi)存管理中,這里的buffer 指 Linux 內(nèi)存的:Buffer cache,中文可以解釋為:緩沖區(qū)緩存。Buffer cache 主要是設(shè)計(jì)用來在系統(tǒng)對塊設(shè)備進(jìn)行讀寫的時候,對塊進(jìn)行數(shù)據(jù)緩存的系統(tǒng)來使用。
什么是cache
在Linux的內(nèi)存管理中,這里的 cache 指 Linux 內(nèi)存中的:Page cache,中文可以解釋為:頁面緩存。主要用來作為文件系統(tǒng)上的文件數(shù)據(jù)的緩存來用,尤其是針對當(dāng)進(jìn)程對文件有 read/write 操作的時候。在當(dāng)前的系統(tǒng)實(shí)現(xiàn)里, page cache 也被作為其它文件類型的緩存設(shè)備來用,所以事實(shí)上 page cache 也負(fù)責(zé)了大部分的塊設(shè)備文件的緩存工作。
自動回收 cache機(jī)制
Linux 內(nèi)核會在內(nèi)存將要耗盡的時候,觸發(fā)內(nèi)存回收的工作,以便釋放出內(nèi)存給急需內(nèi)存的進(jìn)程使用。一般情況下,在內(nèi)存壓力較大的情況下, buffer/cache 空間可以被釋放,以作為 free 空間分給相關(guān)進(jìn)程使用。
但是由于要回收緩存必須保證 cache 中的數(shù)據(jù)跟對應(yīng)文件中的數(shù)據(jù)一致,才能對 cache 進(jìn)行釋放。所以在回收緩存時一般會造成IO使用較高的現(xiàn)象。因?yàn)閮?nèi)核要對比 cache 中的數(shù)據(jù)和對應(yīng)硬盤文件上的數(shù)據(jù)是否一致,如果不一致需要寫回,之后才能回收。
所以一般情況下不需要特意去釋放已經(jīng)使用的cache。這些cache起來的內(nèi)容本來就是為了增加文件以及的讀寫速度。
人工觸發(fā)回收cache
除了系統(tǒng)自己觸發(fā)回收緩存機(jī)制外,我們也可以通過下面這個腳本來清理緩存:
1. 查看目前內(nèi)存使用:
2. 執(zhí)行sync同步數(shù)據(jù),防止數(shù)據(jù)或操作丟失(重要),將未寫的系統(tǒng)緩沖區(qū)寫到磁盤中。包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?