久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

共計(jì) 1917 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。

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

(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ù),有就直接返回,如果沒(méi)有則通過(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 7725 141 19 74 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ò),可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-24發(fā)表,共計(jì)1917字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 淮安市| 梅河口市| 平远县| 三原县| 祁东县| 凌云县| 金堂县| 耒阳市| 都安| 布拖县| 开原市| 桐梓县| 怀远县| 邻水| 偏关县| 湘乡市| 潼关县| 台东市| 双桥区| 湘西| 潞城市| 阳谷县| 汶上县| 浪卡子县| 新河县| 德令哈市| 额尔古纳市| 于田县| 威远县| 龙门县| 襄城县| 大庆市| 齐齐哈尔市| 多伦县| 宁强县| 花垣县| 离岛区| 浮梁县| 甘德县| 瓦房店市| 江永县|