濮阳杆衣贸易有限公司

主頁 > 知識庫 > Linux系統(tǒng)清除緩存的方法總結(jié)

Linux系統(tǒng)清除緩存的方法總結(jié)

熱門標(biāo)簽:滴滴急救中心地圖標(biāo)注 網(wǎng)絡(luò)電話外呼系統(tǒng)開發(fā) 北海智能電銷機(jī)器人公司 申請400電話收費(fèi)標(biāo) 艾澤拉斯地圖標(biāo)注 福州語音電銷機(jī)器人招商 菏澤自動電銷機(jī)器人公司 淘寶辦理400電話是多少 外呼線路隨意切換嗎

1)緩存機(jī)制介紹

在Linux系統(tǒng)中,為了提高文件系統(tǒng)性能,內(nèi)核利用一部分物理內(nèi)存分配出緩沖區(qū),用于緩存系統(tǒng)操作和數(shù)據(jù)文件,當(dāng)內(nèi)核收到讀寫的請求時(shí),內(nèi)核先去緩存區(qū)找是否有請求的數(shù)據(jù),有就直接返回,如果沒有則通過驅(qū)動程序直接操作磁盤。
緩存機(jī)制優(yōu)點(diǎn):減少系統(tǒng)調(diào)用次數(shù),降低CPU上下文切換和磁盤訪問頻率。

CPU上下文切換:CPU給每個(gè)進(jìn)程一定的服務(wù)時(shí)間,當(dāng)時(shí)間片用完后,內(nèi)核從正在運(yùn)行的進(jìn)程中收回處理器,同時(shí)把進(jìn)程當(dāng)前運(yùn)行狀態(tài)保存下來,然后加載下一個(gè)任務(wù),這個(gè)過程叫做上下文切換。實(shí)質(zhì)上就是被終止運(yùn)行進(jìn)程與待運(yùn)行進(jìn)程的進(jìn)程切換。

2)查看緩存區(qū)及內(nèi)存使用情況

[root@localhost ~]# free -m
       total    used    free   shared  buffers   cached
Mem:     7866    7725    141     19     74    6897
-/+ buffers/cache:    752    7113
Swap:    16382     32   16350

從上面的命令結(jié)果顯示中可以看出:內(nèi)存總共8G,已使用7725M,剩余141M,不少的人都是這么看的。
但其實(shí)這樣并不能作為實(shí)際的使用率。因?yàn)橛辛司彺鏅C(jī)制,具體算法如下:

空閑內(nèi)存=free(141)+buffers(74)+cached(6897)

已用內(nèi)存=total(7866)-空閑內(nèi)存

由此算出空閑內(nèi)存是7112M,已用內(nèi)存754M,這才是真正的使用率,也可參考-/+ buffers/cache這行信息也是內(nèi)存正確使用率。

3)緩存區(qū)分buffers和cached區(qū)別

內(nèi)核在保證系統(tǒng)能正常使用物理內(nèi)存和數(shù)據(jù)量讀寫情況下來分配緩沖區(qū)大小。

buffers用來緩存metadata及pages,可以理解為系統(tǒng)緩存,例如,vi打開一個(gè)文件。

cached是用來給文件做緩存,可以理解為數(shù)據(jù)塊緩存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測試寫入一個(gè)文件,就會被緩存到緩沖區(qū)中,當(dāng)下一次再執(zhí)行這個(gè)測試命令時(shí),寫入速度會明顯很快。

4)Swap用途

Swap意思是交換分區(qū),通常我們說的虛擬內(nèi)存,是從硬盤中劃分出的一個(gè)分區(qū)。當(dāng)物理內(nèi)存不夠用的時(shí)候,內(nèi)核就會釋放緩存區(qū)(buffers/cache)里一些長時(shí)間不用的程序,然后將這些程序臨時(shí)放到Swap中,也就是說如果物理內(nèi)存和緩存區(qū)內(nèi)存不夠用的時(shí)候,才會用到Swap。

swap清理:

swapoff -a && swapon -a

注意:這樣清理有個(gè)前提條件,空閑的內(nèi)存必須比已經(jīng)使用的swap空間大

5)釋放緩存區(qū)內(nèi)存的方法

a)清理pagecache(頁面緩存)

# echo 1 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=1

b)清理dentries(目錄緩存)和inodes

# echo 2 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=2

c)清理pagecache、dentries和inodes

# echo 3 > /proc/sys/vm/drop_caches   或者 # sysctl -w vm.drop_caches=3

上面三種方式都是臨時(shí)釋放緩存的方法,要想永久釋放緩存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!

另外,可以使用sync命令來清理文件系統(tǒng)緩存,還會清理僵尸(zombie)對象和它們占用的內(nèi)存

# sync

上面操作在大多數(shù)情況下都不會對系統(tǒng)造成傷害,只會有助于釋放不用的內(nèi)存。

但是如果在執(zhí)行這些操作時(shí)正在寫數(shù)據(jù),那么實(shí)際上在數(shù)據(jù)到達(dá)磁盤之前就將它從文件緩存中清除掉了,這可能會造成很不好的影響。那么如果避免這種事情發(fā)生呢?

因此,這里不得不提一下/proc/sys/vm/vfs_cache_pressure這個(gè)文件,告訴內(nèi)核,當(dāng)清理inoe/dentry緩存時(shí)應(yīng)該用什么樣的優(yōu)先級。

vfs_cache_pressure=100 這個(gè)是默認(rèn)值,內(nèi)核會嘗試重新聲明dentries和inodes,并采用一種相對于頁面緩存和交換緩存比較”合理”的比例。
減少vfs_cache_pressure的值,會導(dǎo)致內(nèi)核傾向于保留dentry和inode緩存。
增加vfs_cache_pressure的值,(即超過100時(shí)),則會導(dǎo)致內(nèi)核傾向于重新聲明dentries和inodes

總之,vfs_cache_pressure的值:
小于100的值不會導(dǎo)致緩存的大量減少
超過100的值則會告訴內(nèi)核你希望以高優(yōu)先級來清理緩存。

其實(shí)無論vfs_cache_pressure的值采用什么值,內(nèi)核清理緩存的速度都是比較低的。
如果將此值設(shè)置為10000,系統(tǒng)將會將緩存減少到一個(gè)合理的水平。

釋放內(nèi)存前先使用sync命令做同步,以確保文件系統(tǒng)的完整性,將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。否則在釋放緩存的過程中,可能會丟失未保存的文件。

/proc是一個(gè)虛擬文件系統(tǒng),可以通過對它的讀寫操作作為與kernel實(shí)體間進(jìn)行通信的一種手段。也就是說可以通過修改/proc中的文件,來對當(dāng)前kernel的行為做出調(diào)整。也就是說我們可以通過調(diào)整/proc/sys/vm/drop_caches來釋放內(nèi)存。

drop_caches的值可以是0-3之間的數(shù)字,代表不同的含義:

0:不釋放(系統(tǒng)默認(rèn)值)
1:釋放頁緩存
2:釋放dentries和inodes
3:釋放所有緩存

以上就是關(guān)于Linux系統(tǒng)清除緩存的全部知識點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對腳本之家的支持。

標(biāo)簽:丹東 延安 滄州 賀州 三沙 亳州 混顯 資陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux系統(tǒng)清除緩存的方法總結(jié)》,本文關(guān)鍵詞  Linux,系統(tǒng),清除,緩存,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux系統(tǒng)清除緩存的方法總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux系統(tǒng)清除緩存的方法總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    开鲁县| 二手房| 禹城市| 云浮市| 昭平县| 若尔盖县| 北碚区| 峡江县| 黄骅市| 昌宁县| 舞阳县| 隆化县| 天等县| 鸡东县| 东莞市| 基隆市| 南汇区| 通海县| 板桥市| 蛟河市| 克山县| 眉山市| 巴中市| 普兰县| 巴塘县| 灵石县| 竹山县| 福建省| 清流县| 建平县| 托克托县| 新巴尔虎左旗| 贵溪市| 延庆县| 梅州市| 深州市| 营山县| 调兵山市| 遂溪县| 金秀| 花莲市|