Linux清除系統快取
1)快取機制介紹
在Linux系統中,為了提高檔案系統性能,核心利用一部分實體記憶體分配出緩衝區,用於快取系統操作和資料檔案,當核心收到讀寫的請求時,核心先去快取區找是否有請求的資料,有就直接返回,如果沒有則通過驅動程式直接操作磁碟。
快取機制優點:減少系統呼叫次數,降低CPU上下文切換和磁碟訪問頻率。
CPU上下文切換:CPU給每個程序一定的服務時間,當時間片用完後,核心從正在執行的程序中收回處理器,同時把程序當前執行狀態儲存下來,然後載入下一個任務,這個過程叫做上下文切換。實質上就是被終止執行程序與待執行程序的程序切換。
2)檢視快取區及記憶體使用情況
12345 | [[email protected] # free -m total used free shared buffers cached Mem: 7866 7725 141 19 74 6897 -/+ buffers /cache : 752 7113 Swap: 16382 32 16350 |
從上面的命令結果顯示中可以看出:記憶體總共8G,已使用7725M,剩餘141M,不少的人都是這麼看的。
但其實這樣並不能作為實際的使用率。因為有了快取機制,具體演算法如下:
空閒記憶體=free(141)+buffers(74)+cached(6897)
已用記憶體=total(7866)-空閒記憶體
由此算出空閒記憶體是7112M,已用記憶體754M,這才是真正的使用率,也可參考-/+ buffers/cache這行資訊也是記憶體正確使用率。
3)快取區分buffers和cached區別
核心在保證系統能正常使用實體記憶體和資料量讀寫情況下來分配緩衝區大小。
buffers用來快取metadata及pages,可以理解為系統快取,例如,vi開啟一個檔案。
cached是用來給檔案做快取,可以理解為資料塊快取,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測試寫入一個檔案,就會被快取到緩衝區中,當下一次再執行這個測試命令時,寫入速度會明顯很快。
4)Swap用途
Swap意思是交換分割槽,通常我們說的虛擬記憶體,是從硬碟中劃分出的一個分割槽。當實體記憶體不夠用的時候,核心就會釋放快取區(buffers/cache)裡一些長時間不用的程式,然後將這些程式臨時放到Swap中,也就是說如果實體記憶體和快取區記憶體不夠用的時候,才會用到Swap。
swap清理:
swapoff -a && swapon -a
注意:這樣清理有個前提條件,空閒的記憶體必須比已經使用的swap空間大
5)釋放快取區記憶體的方法
a)清理pagecache(頁面快取)
1 | # echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1 |
b)清理dentries(目錄快取)和inodes
1 | # echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2 |
c)清理pagecache、dentries和inodes
1 | # echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3 |
上面三種方式都是臨時釋放快取的方法,要想永久釋放快取,需要在/etc/sysctl.conf檔案中配置:vm.drop_caches=1/2/3,然後sysctl -p生效即可!
另外,可以使用sync命令來清理檔案系統快取,還會清理殭屍(zombie)物件和它們佔用的記憶體
1 | # sync |
--------------------友情提示一下----------------------
上面操作在大多數情況下都不會對系統造成傷害,只會有助於釋放不用的記憶體。
但是如果在執行這些操作時正在寫資料,那麼實際上在資料到達磁碟之前就將它從檔案快取中清除掉了,這可能會造成很不好的影響。那麼如果避免這種事情發生呢?
因此,這裡不得不提一下/proc/sys/vm/vfs_cache_pressure這個檔案,告訴核心,當清理inoe/dentry快取時應該用什麼樣的優先順序。
12345678910 | vfs_cache_pressure=100 這個是預設值,核心會嘗試重新宣告dentries和inodes,並採用一種相對於頁面快取和交換快取比較”合理”的比例。 減少vfs_cache_pressure的值,會導致核心傾向於保留dentry和inode快取。 增加vfs_cache_pressure的值,(即超過100時),則會導致核心傾向於重新宣告dentries和inodes 總之,vfs_cache_pressure的值: 小於100的值不會導致快取的大量減少 超過100的值則會告訴核心你希望以高優先順序來清理快取。 其實無論vfs_cache_pressure的值採用什麼值,核心清理快取的速度都是比較低的。 如果將此值設定為10000,系統將會將快取減少到一個合理的水平。 |
釋放記憶體前先使用sync命令做同步,以確保檔案系統的完整性,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對映檔案。否則在釋放快取的過程中,可能會丟失未儲存的檔案。
/proc是一個虛擬檔案系統,可以通過對它的讀寫操作作為與kernel實體間進行通訊的一種手段。也就是說可以通過修改/proc中的檔案,來對當前kernel的行為做出調整。也就是說我們可以通過調整/proc/sys/vm/drop_caches來釋放記憶體。
drop_caches的值可以是0-3之間的數字,代表不同的含義:
0:不釋放(系統預設值)
1:釋放頁快取
2:釋放dentries和inodes
3:釋放所有快取
釋放完記憶體後改回去讓系統重新自動分配記憶體。
echo 0 >/proc/sys/vm/drop_caches
其他參考:
http://www.cnblogs.com/kevingrace/p/5991604.html
https://linux.cn/article-5627-weibo.html
http://www.cnblogs.com/focai/p/5829897.html
http://blog.csdn.net/u014227228/article/details/46848623
相關推薦
Linux清除系統快取
1)快取機制介紹在Linux系統中,為了提高檔案系統性能,核心利用一部分實體記憶體分配出緩衝區,用於快取系統操作和資料檔案,當核心收到讀寫的請求時,核心先去快取區找是否有請求的資料,有就直接返回,如果沒有則通過驅動程式直接操作磁碟。快取機制優點:減少系統呼叫次數,降低CPU上下文切換和磁碟訪問頻率。CPU上下
linux清理系統快取
Linux 記憶體優化。 1.清理前記憶體使用情況 free -m 2.開始清理 echo 1 > /proc/sys/vm/drop_caches 3.清理後記憶體使用情況 free -m 4.完成! 檢視記憶體條數命令: dmidecode |&
Linux清除快取命令
清除linux快取命令 命令 #sync #echo 3 > /proc/sys/vm/drop_caches 檢視記憶體情況: # more /proc/meminfo # less 
(Linux)釋放系統快取操作
前言 在Linux系統中有先進的快取機制,會針對dentry(用於VFS,加速檔案路徑名到inode的轉換)、Buffer Cache(針對磁碟塊的讀寫)和Page Cache(針對檔案inode的讀寫)進行快取操作,有效縮短 I/O系統呼叫(比如read,w
centos 6.8 清除記憶體中的系統快取
使用以下命令清除快取:echo 3 > /proc/sys/vm/drop_caches#free -m total used free shared buffers cachedMem:
Linux如何清除系統cache
2. cache 和 buffer的區別 Cache:快取記憶體,是位於CPU與主記憶體間的一種容量較小但速度很高的儲存器。由於CPU的速度遠高於主記憶體,CPU直接從記憶體中存取資料要等待一定時間週期,Cache中儲存著CPU剛用過或迴圈使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直
linux操作系統下查看某rpm包是32bit 還是x64bit的命令
libs con eas gre 命令 for roo oot arch [[email protected]/* */ ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n
VirtulBox虛擬機搭建Linux Centos系統
流量 -- span 名稱 ftp 註意 img blank style 簡要說明 該文章目的是基於搭建hadoop的前置文章,當然也可以搭建Linux的入門文章。那我再重復一下安裝準備軟件。 環境準備: http://pan.baidu.com/s/1dFrH
Windows和linux雙系統——改動默認啟動順序
順序 ack 開機 默認 mar jsb con class 註意 電腦上裝了Windows 7和Ubantu雙系統,因為Linux系統用的次數比較少而且還是默認的啟動項對此非常不能容忍,因此得改動Windows為默認的啟動項。 因為電腦
【Linux】系統管理
kcon status gcc 不知道 切換 all usr make entos 軟件包管理 一 軟件包分類 源碼包: .tar.gz .tar.bz2 二進制包: .rpm 二 二進制包安裝 (一) rpm命令手動管理二進制包 (掛載光盤)
《Linux深度攻略》一書,講述Linux日常系統管理和服務器配置內容
linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和
linux之系統編碼,python編碼,文件編碼
python 編碼 文件編碼 linux編碼 1 前言如果你對python2和python3的中編解碼很清楚,這裏我認為你很清楚。具體參考文檔:“python2 encode和decode函數說明.docx”“字符編碼——從ASCII開始.docx”以上所有文檔均為本地文檔。2
四款?linux?操作系統總有一款適合你
最新 新版本 搜索 單獨 align 郵件 快速 代號 打開 轉為使用Linux可謂是開啟了一扇新工具和新技術的大門,它使你對計算環境的體驗更為輕松。但是根據你所選擇的Linux操作系統的不同,有時你甚至是瀏覽桌面環境也可能會充滿了挑戰,因此在客觀上還是多少存在著一個學習曲
Linux操作系統下/etc/hosts文件配置方法
主機名 進行 問題 解釋 很快 中一 linux 同時 包括 1、關於/etc/host,主機名和IP配置文件 Hosts - The static table lookup for host name(主機名查詢靜態表) hosts文件是Linux系統中一個負責
Linux修改系統時間
ive etc cal 記得 設置時間 har this 兩個 格式 本文轉摘自『IT學習者』http://www.t086.com/article/4386 修改linux的時間可以使用date指令 修改日期: 時間設定成2009年5月10日的命令如下: #date
從U盤運行Linux操作系統的三種方法
attach 損壞 seo 系統 alt ubunt 沒有 linux操作 ash 摘要: 從U盤運行Linux操作系統的三種方法 usb_linux_0 你或許聽說過在U盤上運行live Linux操作系統,但你知不知道可以永久的保存運行時的數據,或者直接將Linux安裝
linux操作系統及命令Part 1
oldboy ont pre 普通 下載 man tro 分隔符 所在 1.關於linux系統的安裝與流程 (1)下載Vmware workstation 與 linux系統(centos版本、redhat版本、Ubuntu版本...)鏡像。 (2)詳細安裝見
Linux操作系統基礎知識part4
linux操作系統 表示 占用內存 lin part 子進程 df -h sed use top僵屍進程 失去了父進程的子進程,占用內存不占用cpucpu的利用率:實際單位時間內計算的工作量cpu的負載:cpu被安排的工作量 freebuffers 表示內存往硬盤存寫的數據
linux操作系統基礎篇(四)
空閑 僵屍進程 標準 為什麽 嘗試 mount命令 性能分析 包含 put 系統監控 1. 系統監視和進程控制工具—top和free1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的
Day 7 Linux之系統監控、硬盤分區等
char 實時 系統監控 份額 chan 標準 lock mkfs.ext4 登錄 Linux之系統監控、硬盤分區等 系統監控 系統監視和進程控制工具—top和free 1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能夠實時顯示