Messages in this thread | | | Date | Wed, 06 Jul 2005 23:07:17 +0100 | From | P@draigBra ... | Subject | How do you accurately determine a process RAM usage |
| |
I wrote a tool to (try to) report how much RAM a particular program (apache for e.g.) was using: http://www.pixelbeat.org/scripts/ps_mem.py
I was then pointed at the following: http://wiki.apache.org/spamassassin/TopSharedMemoryBug which describes how copy-on-write pages are not counted as shared since 2.6.
So how can one determine how much RAM a process is using? Seems like a fundamental requirement to me. Could we add a "SharedTotal" column to /proc/$$/statm for e.g. ?
Here's a little python script to demo the problem:
#!/usr/bin/python import os, sys, time a="\x00"*(32*1024*1024) #alloc 32MiB pid=os.fork() if(not pid): time.sleep(1) sys.exit() sizel=map(float,open("/proc/"+str(pid)+"/statm").readlines()[0].split()[1:3]) print "only %.1f%% reported as shared" % ((sizel[1]/sizel[0])*100) os.wait()
-- Pádraig Brady - http://www.pixelbeat.org -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |