There's so many information about memory of a process... I just don't know which one to use... which one do this and which one do that!!
Somebody help me!! I just spend to much time on this!
I'm using LINUX
What I know...
1- /proc/<pid>/status
Give me:
VmSize
VmLck
VmRss
VmData
VmStk
VmExe
VmLib
2- /proc/<pid>/statm
Give me:
SmSize
SmRss
SmShared
SmTrs
SmDrs
SmLrs
SmDt
3- ps -ao pid,fname,m_drs,m_trs,maj_
flt,min_fl
t,rss,vsiz
e
Give me:
PID
COMMAND
DRS
TRS
MAJFL
MINFL
RSS
VSZ
SO... when I test my program, at first I get:
VmSize = 1548
VmLck = 0
VmRss = 580
VmData = 32
VmStk = 60
VmExe = 56
VmLib = 1308
SmSize = 145
SmRss = 145
SmShared = 116
SmTrs = 9
SmDrs = 0
SmLrs = 136
SmDt = 29
PID = 3184
COMMAND= testing
DRS = 1494
TRS = 53
MAJFL = 167
MINFL = 17
RSS = 580
VSZ = 1548
And at the end I get:
VmSize = 782992
VmLck = 0
VmRss = 10172
VmData = 781476
VmStk = 60
VmExe = 56
VmLib = 1308
SmSize = 10084
SmRss = 2543
SmShared = 72
SmTrs = 9
SmDrs = 0
SmLrs = 2534
SmDt = 2491
PID = 3184
COMMAND= testing
DRS = 782938
TRS = 53
MAJFL = 1443
MINFL = 10132
RSS = 10172
VSZ = 782992
Yes I know my program is eating memory without releasing it. That's what I want for my test!
Because I need a way to test my C++ objects and to know when the memory is not releasing!
What I found is VSZ or VmSize is the total memory size allocated to my program.
BUT:
1- what is VmRss,RSS,(SmRss in page). Is it only the RAM used? I'm looking for the total of memory USED by the program... Example: The program start with 1500K but only use 600K. RSS seems to be what I'm looking for. If I allocate 100 more K, RSS move to 700. Good! But In my 'testing' example you can see that I allocate over 780000K and RSS only raise to 10172K
How can I get the quantity of memory used by the program? When I release the 780000K I'm expecting the use of memory to return to 600K (But not VSZ or VmSize because it's the total of memory allocated to the program... used or not used!)
2- What mean those other factors like:
*VmData: Why VmSize raise at the same time???
*SmSize: Documents says it's the total program size but when I look at my example... It mean nothing???
*SmShared,SmTrs,SmDrs,SmLr
s,SmDt: Look like SmRSS=SmShared+SmDt=SmTrs+
SmLrs but I need more information to understand when those factors is used!
*TRS,MAJFL,MINFL: What's that?
PLEASE CAN YOU GIVE ME AN EXAMPLE?