1. 程式人生 > >linux學習之緩存機制

linux學習之緩存機制

page sysctl 同時 進行 一定的 緩沖區 調用次數 pro 使用

linux中的緩存機制

在Linux系統中,為了提高文件系統性能,內核利用一部分物理內存分配出緩沖區,用於緩存系統操作和數據文件,當內核收到讀寫的請求時,內核先去緩存區找是否有請求的數據,有就直接返回,如果沒有則通過驅動程序直接操作磁盤。
緩存機制優點:減少系統調用次數,降低CPU上下文切換和磁盤訪問頻率。
CPU上下文切換:CPU給每個進程一定的服務時間,當時間片用完後,內核從正在運行的進程中收回處理器,同時把進程當前運行狀態保存下來,然後加載下一個任務,這個過程叫做上下文切換。實質上就是被終止運行進程與待運行進程的進程切換。

區分buffers和cache

buffers

用來緩存metadata及pages,可以理解為系統緩存,例如,vi打開一個文件。
cached

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

釋放緩存的方式

清理pagecache(頁面緩存)

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

清理dentries(目錄緩存)和inodes

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

清理pagecache、dentries和inodes

# 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)對象和它們占用的內存

(最好在清理緩存前進行此操作)

# sync

linux學習之緩存機制