memory.py
37 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
/ contrib / memory.py
Martin Geisler
|
r10017 | # 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 | ||||
Matt Mackall
|
r10264 | # GNU General Public License version 2 or any later version. | ||
Martin Geisler
|
r10017 | |||
'''helper extension to measure memory usage | ||||
Reads current and peak memory usage from ``/proc/self/status`` and | ||||
prints it to ``stderr`` on exit. | ||||
''' | ||||
Pulkit Goyal
|
r28510 | from __future__ import absolute_import | ||
Martin Geisler
|
r10017 | |||
Augie Fackler
|
r43346 | |||
Martin Geisler
|
r10017 | def memusage(ui): | ||
"""Report memory usage of the current process.""" | ||||
result = {'peak': 0, 'rss': 0} | ||||
Bryan O'Sullivan
|
r27795 | with open('/proc/self/status', 'r') as status: | ||
Martin Geisler
|
r10017 | # 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]) | ||||
Augie Fackler
|
r43346 | ui.write_err( | ||
", ".join( | ||||
["%s: %.1f MiB" % (k, v / 1024.0) for k, v in result.iteritems()] | ||||
) | ||||
+ "\n" | ||||
) | ||||
Martin Geisler
|
r10017 | |||
def extsetup(ui): | ||||
Bryan O'Sullivan
|
r31958 | ui.atexit(memusage, ui) | ||