【小資說庫】第13期 應用程序開發人員、DBA和DBMS開發人員的分工是怎樣的?
1406
2025-03-31
我們在使用free -h查看系統內存的時候,有時間會發現buff/cache很高
> free -h
available 表示應用程序可以申請到的內存
什么是buff
buff(Buffer Cache)是一種I/O緩存,用于內存和硬盤的緩沖,是io設備的讀寫緩沖區。根據磁盤的讀寫設計的,把分散的寫操作集中進行,減少磁盤碎片和硬盤的反復尋道,從而提高系統性能。
什么是cache
cache(Page Cache)是一種高速緩存,用于CPU和內存之間的緩沖 ,是文件系統的cache。
把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬盤了,若沒有命中就讀硬盤。其中的數據會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往后排,直至從中刪除。
它們都是占用內存。兩者都是RAM中的數據。簡單來說,buff是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的。
目前進程正在實際被使用的內存的計算方式為used-buff/cache,通過釋放buff/cache內存后,我們還可以使用的內存量free+buff/cache。通常我們在頻繁存取文件后,會導致buff/cache的占用量增高。
清除buff/cache
> sync > echo 1 > /proc/sys/vm/drop_caches > echo 2 > /proc/sys/vm/drop_caches > echo 3 > /proc/sys/vm/drop_caches
sync:將所有未寫的系統緩沖區寫到磁盤中,包含已修改的i-node、已延遲的塊I/O和讀寫映射文件
echo 1 > /proc/sys/vm/drop_caches:清除page cache
echo 2 > /proc/sys/vm/drop_caches:清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。slab分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:清除pagecache和slab分配器中的緩存對象。
/proc/sys/vm/drop_caches的值,默認為0
> vim clean.sh #!/bin/bash#每兩小時清除一次緩存 echo "開始清除緩存" sync;sync;sync #寫入硬盤,防止數據丟失 sleep 20#延遲20秒 echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches > chmod +x clean.sh > crontab -e # 每兩小時執行一次 0 */2 * * * /opt/clean.sh
設置crond啟動以及開機自啟
systemctl start crond.service
systemctl enable crond.service
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。