awk 'BEGIN{total_rss = 0;}{if (match($1, "Rss")) {print $0; total_rss += $2;} }END{print total_rss}' /proc/443/smaps
#awk 'BEGIN{total_pss = 0;}{if (match($1, "Pss")) {print $0; total_pss += $2;} }END{print total_pss}' /proc/443/smaps
Rss-Resident Set Size 实际使用物理内存(包含共享库占用的内存)
Rss=Shared_Clean+Shared_Dirty+Private_Clean+Private_Dirty
Pss 实际使用的物理内存(按比例包含共享库占用的内存)。比如四个进程共享同一个占内存1000MB的共享库,每个进程算进250MB在Pss。
RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。
PSS(Proportional set size)会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。
USS(Unique set size )是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。