真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux下緩存機(jī)制free及清理buffer/cache/swap的示例分析

這篇文章給大家分享的是有關(guān)Linux下緩存機(jī)制free及清理buffer/cache/swap的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)是一家專業(yè)從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!

(1)緩存機(jī)制

為了提高文件系統(tǒng)性能,內(nèi)核利用一部分物理內(nèi)存分配出緩沖區(qū),用于緩存系統(tǒng)操作和數(shù)據(jù)文件,當(dāng)內(nèi)核收到讀寫的請(qǐng)求時(shí),內(nèi)核先去緩存區(qū)找是否有請(qǐng)求的數(shù)據(jù),有就直接返回,如果沒有則通過(guò)驅(qū)動(dòng)程序直接操作磁盤。

緩存機(jī)制優(yōu)點(diǎn):減少系統(tǒng)調(diào)用次數(shù),降低CPU上下文切換和磁盤訪問(wèn)頻率。

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)保存下來(lái),然后加載下一個(gè)任務(wù),這個(gè)過(guò)程叫做上下文切換。實(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 7725141 1974 6897

-/+buffers/cache: 752 7113

Swap: 16382 32 16350

可以看到內(nèi)存總共8G,已使用7725M,剩余141M,不少的人都是這么看的,這樣并不能作為實(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ù)量讀寫情況下來(lái)分配緩沖區(qū)大小。buffers用來(lái)緩存metadata及pages,可以理解為系統(tǒng)緩存,例如,vi打開一個(gè)文件。cached是用來(lái)給文件做緩存,可以理解為數(shù)據(jù)塊緩存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測(cè)試寫入一個(gè)文件,就會(huì)被緩存到緩沖區(qū)中,當(dāng)下一次再執(zhí)行這個(gè)測(cè)試命令時(shí),寫入速度會(huì)明顯很快。

(4)隨便說(shuō)下Swap做什么用的呢?

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

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


(5)怎樣釋放緩存區(qū)內(nèi)存呢?
a)直接改變內(nèi)核運(yùn)行參數(shù)
Linux釋放內(nèi)存的命令:
sync
echo 1 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之間的數(shù)字,代表不同的含義:
0:不釋放(系統(tǒng)默認(rèn)值)
1:釋放頁(yè)緩存
2:釋放dentries和inodes
3:釋放所有緩存

釋放完內(nèi)存后改回去讓系統(tǒng)重新自動(dòng)分配內(nèi)存。
echo 0 >/proc/sys/vm/drop_caches

free -m #看內(nèi)存是否已經(jīng)釋放掉了。

如果我們需要釋放所有緩存,就輸入下面的命令:
echo 3 > /proc/sys/vm/drop_caches

b)也可以使用sysctl重置內(nèi)核運(yùn)行參數(shù)

sysctl -w vm.drop_caches=3

注意:這兩個(gè)方式都是臨時(shí)生效,永久生效需添加sysctl.conf文件中,一般寫成腳本手動(dòng)清理,建議不要清理。
修改/etc/sysctl.conf 添加如下選項(xiàng)后就不會(huì)內(nèi)存持續(xù)增加
vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=32 32 8
kern.maxvnodes=3

上面的設(shè)置比較粗暴,使cache的作用基本無(wú)法發(fā)揮。需要根據(jù)機(jī)器的狀況進(jìn)行適當(dāng)?shù)恼{(diào)節(jié)尋找最佳的折衷。

感謝各位的閱讀!關(guān)于“Linux下緩存機(jī)制free及清理buffer/cache/swap的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


網(wǎng)頁(yè)標(biāo)題:Linux下緩存機(jī)制free及清理buffer/cache/swap的示例分析
網(wǎng)頁(yè)路徑:http://weahome.cn/article/jgjico.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部