Changes

Jump to navigation Jump to search
m
Line 3: Line 3:  
===Memory===
 
===Memory===
 
====ps_mem====
 
====ps_mem====
 +
Try to determine how much RAM is currently being used per program.
 +
The shared RAM is problematic to calculate, and this script automatically
 +
selects the most accurate method available for your kernel.
 +
 
:original script at http://www.pixelbeat.org/scripts/ps_mem.py
 
:original script at http://www.pixelbeat.org/scripts/ps_mem.py
:patched version at http://dev.laptop.org/~rlucchese/scripts/ps_mem
+
The following patch makes the script output the processes pids and cmd-lines instead of their names when possible.
 +
:__patched__ version at http://dev.laptop.org/~rlucchese/utils/ps_mem.py
 +
 
 
:patch:
 
:patch:
 
<pre>
 
<pre>
--- ps_mem.orig 2008-07-22 08:00:58.000000000 +0200
+
--- ps_mem.py.orig 2008-08-29 09:30:29.000000000 +0200
+++ ps_mem 2008-08-25 10:01:35.000000000 +0200
+
+++ ps_mem 2008-08-29 09:43:49.000000000 +0200
@@ -117,14 +117,16 @@
+
@@ -117,17 +117,23 @@
 
     return (Private, Shared)
 
     return (Private, Shared)
 
   
 
   
Line 21: Line 27:  
-        #584.0 KiB +  1.0 MiB =  1.6 MiB    mozilla-thunder (exe -> bash)
 
-        #584.0 KiB +  1.0 MiB =  1.6 MiB    mozilla-thunder (exe -> bash)
 
-        # 56.0 MiB +  22.2 MiB =  78.2 MiB    mozilla-thunderbird-bin
 
-        # 56.0 MiB +  22.2 MiB =  78.2 MiB    mozilla-thunderbird-bin
+    cmd = file("/proc/%d/cmdline" % pid).readline()[:60]
+
+    cmd = file("/proc/%d/cmdline" % pid).readline()
+    if not len(cmd):
+
+    if len(cmd):
 +
+      # cmdline has a bogus format
 +
+      cmd_temp = ''
 +
+      for i in range(0,len(cmd) -1):
 +
+          if ord(cmd[i])<ord(' ') or ord(cmd[i])>ord('~'):
 +
+              cmd_temp += ' '
 +
+          else:
 +
+              cmd_temp += cmd[i]
 +
+
 +
+      cmd = cmd_temp
 +
+    else:
 
+        cmd = file("/proc/%d/status" % pid).readline()[6:-1]
 
+        cmd = file("/proc/%d/status" % pid).readline()[6:-1]
+        exe = os.path.basename(os.path.realpath("/proc/%d/exe" % pid))
  −
+        if exe.startswith(cmd):
  −
+            cmd=exe #show non truncated version
  −
+            #Note because we show the non truncated name
  −
+            #one can have separated programs as follows:
  −
+            #584.0 KiB +  1.0 MiB =  1.6 MiB    mozilla-thunder (exe -> bash)
  −
+            # 56.0 MiB +  22.2 MiB =  78.2 MiB    mozilla-thunderbird-bin
   
     return cmd
 
     return cmd
 
   
 
   
 
  cmds={}
 
  cmds={}
 +
+pids={}
 +
shareds={}
 +
count={}
 +
for pid in os.listdir("/proc/"):
 +
@@ -155,10 +161,8 @@
 +
    else:
 +
        shareds[cmd]=shared
 +
    cmds[cmd]=cmds.setdefault(cmd,0)+private
 +
-    if count.has_key(cmd):
 +
-      count[cmd] += 1
 +
-    else:
 +
-      count[cmd] = 1
 +
+
 +
+    pids[cmd] = pid
 +
 +
#Add shared mem for each program
 +
total=0
 +
@@ -185,16 +189,16 @@
 +
    else:
 +
        return cmd
 +
 +
-print " Private  +  Shared  =  RAM used\tProgram \n"
 +
+print " Private  +  Shared  =  RAM used\tPID\tProgram \n"
 +
for cmd in sort_list:
 +
-    print "%8sB + %8sB = %8sB\t%s" % (human(cmd[1]-shareds[cmd[0]]),
 +
+    print "%8sB + %8sB = %8sB\t%d\t%s" % (human(cmd[1]-shareds[cmd[0]]),
 +
                                      human(shareds[cmd[0]]), human(cmd[1]),
 +
-                                      cmd_with_count(cmd[0], count[cmd[0]]))
 +
+                                      pids[cmd[0]], cmd[0])
 +
if have_pss:
 +
    print "-" * 33
 +
    print " " * 24 + "%8sB" % human(total)
 +
    print "=" * 33
 +
-print "\n Private  +  Shared  =  RAM used\tProgram \n"
 +
+print " Private  +  Shared  =  RAM used\tPID\tProgram \n"
 +
 +
#Warn of possible inaccuracies
 +
#2 = accurate & can total
 
</pre>
 
</pre>
  

Navigation menu