# HG changeset patch # User Martin Geisler # Date 1259968517 -3600 # Node ID 253d0da256b2b4becf68cc2c5a877e41e6a19abe # Parent 8a0af23af5d11685700fff682ef99a42367a9dc8 contrib: helper extension to track memory usage diff -r 8a0af23af5d1 -r 253d0da256b2 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 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)