Last Updated on 2021-06-28 by Clay
最近由於心血來潮,開始了測試 Linux 檔案執行速度的實驗。為了避免測量速度時受到記憶體載入的影響,故查詢了一些指令來清除記憶體。
既然都測試過了、也學習了一些關於 Linux 系統中記憶體的知識,故一併紀錄了起來。
free 指令
在 Linux 當中,我們可以使用以下指令查看記憶體:
free -m
Output:
Mem 就是我們的記憶體,可以看到我的筆電大約有 12GB,用了大約 5GB。
而 Swap,是指一個位於『硬碟』上的空間。在我們實體記憶體被佔用、然而系統卻需要更多的記憶體資源時,系統會將一部分靜止的資料移動至 Swap。
只不過,Swap 當然不若真正的記憶體這麼快就是了。
清除記憶體
其實在 Linux 中,我們一般不用親自去清理我們的記憶體 (因為 Linux 管理得很就好了)。真要手動釋放記憶體容量的話,我們可以藉由輸入『控制碼』至 "/proc/sys/vm/drop_caches" 這個檔案,進而讓 Linux 系統開始清理記憶體。
至於控制碼的種類,一共有三種:
- 1: 清除 Page Cache
- 2: 清除 Dentries 和 Inodes
- 3: 清除以上所有的種類
Page Cache 就是一般文件資料的 Cache。而 Dentries 和 Inodes 則是像資料夾、文件的編號一般。
根據我的理解,清理記憶體的時候要小心清除掉 Inodes。畢竟目前看到 Linux 上不小心刪除檔案的『還原工具』都仰賴著透過 Inodes 找回檔案。
話題有點扯遠了。總而言之,要輸入控制碼,我們需要 Root 權限。
sudo -i
sync; echo 3 > /proc/sys/vm/drop_caches
這樣一來我們就一口氣清除掉 Page Cache、Dentries、Inodes 了。
References
- https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/
- https://unix.stackexchange.com/questions/17936/setting-proc-sys-vm-drop-caches-to-clear-cache