用smem檢視Linux記憶體佔用情況
smem這個工具可以提供Linux系統上記憶體耗用情況方面的眾多報告。與現有的工具不一樣,smem可以報告實際使用的實體記憶體(PSS),這是一種更有意義的指標,可以衡量虛擬記憶體系統中的庫和應用程式所佔用的記憶體數量。由於大部分的實體記憶體通常在多個應用程式之間共享,名為實際使用實體記憶體(RSS)的這個標準的記憶體耗用衡量指標會大大高估記憶體耗用情況。PSS這個引數而是衡量了每個應用程式在每個共享記憶體區中的“公平分配”,給出了一個切合實際的衡量指標。
安裝
如果你使用Debian、Ubuntu或Mint,可以使用下面這個命令,直接從官方軟體庫安裝smem:
$ sudo apt-get install smem
Arch Linux使用者可以從Arch使用者軟體庫(AUR,https://www.archlinux.org/packages/community/i686/smem/)安裝程式包。
Red Hat / Fedora / CentOS / SuSE使用者可以使用直接從官方網站下載的預編譯二進位制程式碼。為了方便起見,你可以拷貝剪貼這些命令,這些命令會將命令smen放入到你的/usr/local/bin資料夾:
cd /tmp/
wget http://www.selenic.com/smem/download/smem-1.3.tar.gz
tar xvf smem-1.3.tar.gz
sudo cp /tmp/smem-1.3/smem /usr/local/bin/
sudo chmod +x /usr/local/bin/smem
基本用法
smem可報告實體記憶體使用情況,並且考慮到共享的記憶體頁面。非共享記憶體被報告為程序獨自佔用的實體記憶體(USS)。共享記憶體在共享該記憶體的多個程序之間平均分配。非共享記憶體(USS)以及程序的共享記憶體比例被報告為實際使用的實體記憶體(PSS)。USS和PSS只包含實體記憶體使用情況。它們並不包含已經被置換到磁碟上的記憶體。
基本用法會顯示執行中程序以及所用的記憶體數量;想看看這方面的情況,執行不帶任何選項的命令smem,這會得出類似下面這樣的輸出:
# smem
PID User Command Swap USS PSS RSS
4223 linuxaria /usr/lib/chromium-browser/c 0 9144
- 手動清理
cat /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches //#表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches #表示清除回收slab分配器中的物件(包括目錄項快取和inode快取)。slab分配器是核心中管理記憶體的一種機制,其中很多快取資料實現都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches #表示清除pagecache和slab分配器中的快取物件。
- 設定定時任務定時清除buff/cache指令碼
# 建立指令碼
vim /home/script/clear_buff_cache.sh
#!/bin/bash
#開始清理快取
echo "開始清除快取"
#寫入硬碟,防止資料丟失
sync;sync;sync
#延遲10秒
sleep 10
#清理快取
echo 3 > /proc/sys/vm/drop_caches
# 配置定時任務
[root@123 ~]# crontab -e
# clear buff/cache
30 2 * * * /home/script/clear_buff_cache.sh