contrib: helper extension to track memory usage
authorMartin Geisler <mg@lazybytes.net>
Sat, 05 Dec 2009 00:15:17 +0100
changeset 10017 253d0da256b2
parent 10016 8a0af23af5d1
child 10019 4e3a8f3e9dc2
contrib: helper extension to track memory usage
contrib/memory.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/memory.py	Sat Dec 05 00:15:17 2009 +0100
@@ -0,0 +1,36 @@
+# memory.py - track memory usage
+#
+# Copyright 2009 Matt Mackall <mpm@selenic.com> and others
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+'''helper extension to measure memory usage
+
+Reads current and peak memory usage from ``/proc/self/status`` and
+prints it to ``stderr`` on exit.
+'''
+
+import atexit
+
+def memusage(ui):
+    """Report memory usage of the current process."""
+    status = None
+    result = {'peak': 0, 'rss': 0}
+    try:
+        # This will only work on systems with a /proc file system
+        # (like Linux).
+        status = open('/proc/self/status', 'r')
+        for line in status:
+            parts = line.split()
+            key = parts[0][2:-1].lower()
+            if key in result:
+                result[key] = int(parts[1])
+    finally:
+        if status is not None:
+            status.close()
+    ui.write_err(", ".join(["%s: %.1f MiB" % (key, value/1024.0)
+                            for key, value in result.iteritems()]) + "\n")
+
+def extsetup(ui):
+    atexit.register(memusage, ui)