view contrib/memory.py @ 38807:98df52d5042c

exchange: make narrow ACL presence imply narrow=True And refactor the logic for determining when to invoke our custom changegroup part function so it is only conditional on narrow being set. This makes it more obvious under which conditions we should invoke the custom implementation. Also use raw strings so **kwargs works on Python 3. Differential Revision: https://phab.mercurial-scm.org/D4013
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 28 Jul 2018 17:33:20 -0700
parents de5c9d0e02ea
children 2372284d9457
line wrap: on
line source

# 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 or any later version.

'''helper extension to measure memory usage

Reads current and peak memory usage from ``/proc/self/status`` and
prints it to ``stderr`` on exit.
'''

from __future__ import absolute_import

def memusage(ui):
    """Report memory usage of the current process."""
    result = {'peak': 0, 'rss': 0}
    with open('/proc/self/status', 'r') as status:
        # This will only work on systems with a /proc file system
        # (like Linux).
        for line in status:
            parts = line.split()
            key = parts[0][2:-1].lower()
            if key in result:
                result[key] = int(parts[1])
    ui.write_err(", ".join(["%s: %.1f MiB" % (k, v / 1024.0)
                            for k, v in result.iteritems()]) + "\n")

def extsetup(ui):
    ui.atexit(memusage, ui)