smem的學習
背景
勞動節加班時主要進行了疲勞驗證
當時關注了jvm_exporter的記憶體資料
節後再看了下 NMT的跟蹤
發現NMT的結果比exporter的總要高一些.
然後前幾天又有專案反饋OOM killer
我懷疑 是有本程序或者是其他程序大量佔用記憶體導致踩踏
但是一直沒有比較好的方式來實現檢查.
然後最近又找到了一個 smem 工具. 不知道可行不可行
遂學習和記錄一下.
smem的安裝
一般網上都是介紹使用 yum 安裝
但是發現國產裝置, 尤其是銀河麒麟v10 好像沒有源
所以可以使用 tar包
其實smem 是一個分析 /proc的工具
他不區分CPU的架構.
https://www.selenic.com/smem/download/
注意 centos8 可以直接安裝 yum install smem -y
使用epel倉庫
smem的幫助
smem -h
Usage: smem [options]
Options:
-h, --help show this help message and exit
-H, --no-header disable header line
-c COLUMNS, --columns=COLUMNS
columns to show
-t, --totals show totals
-a, --autosize size columns to fit terminal size
-R REALMEM, --realmem=REALMEM
amount of physical RAM
-K KERNEL, --kernel=KERNEL
path to kernel image
-m, --mappings show mappings
-u, --users show users
-w, --system show whole system
-P PROCESSFILTER, --processfilter=PROCESSFILTER
process filter regex
-M MAPFILTER, --mapfilter=MAPFILTER
map filter regex
-U USERFILTER, --userfilter=USERFILTER
user filter regex
-n, --numeric numeric output
-s SORT, --sort=SORT field to sort on
-r, --reverse reverse sort
-p, --percent show percentage
-k, --abbreviate show unit suffixes
--pie=PIE show pie graph
--bar=BAR show bar graph
-S SOURCE, --source=SOURCE
/proc data source
幾個關鍵方法
smem -w -t -k -a -p
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 20.0G 19.5G 466.6M
userspace memory 41.0G 275.1M 40.7G
free memory 671.4M 671.4M 0
-----------------------------------------------
61.6G 20.4G 41.2G
其實還可以:
smem -k -p -t
PID User Command Swap USS PSS RSS
961 root /usr/local/cloudmonitor/bin 0 23.9M 28.0M 34.2M
2005 root /usr/local/aegis/alihips/Al 0 31.0M 31.4M 34.5M
1692 root /usr/local/aegis/aegis_clie 0 56.0M 58.1M 63.0M
3692 root ./server/runtime/java/x86_6 0 40.7G 40.7G 40.7G
-------------------------------------------------------------------------------
41 7 0 41.0G 41.0G 41.2G
需要注意 -w 包含系統 -t 包含total -a 自適應列寬 -p 顯示比率 -k自動修改單位.
其實還可以使用
smem -u -k -t -a
User Count Swap USS PSS RSS
libstoragemgmt 1 0 224.0K 267.0K 1.8M
rpc 1 0 908.0K 1.2M 5.3M
dbus 1 0 1.0M 1.5M 5.3M
chrony 1 0 1.2M 1.7M 5.0M
daemon 1 0 3.7M 4.4M 8.7M
polkitd 1 0 16.0M 17.7M 23.8M
root 35 0 41.0G 41.0G 41.1G
-----------------------------------------------------
41 0 41.0G 41.0G 41.2G
會把使用者 以及程序數量和使用的記憶體情況都拉取出來.
想過挺好的.