Show More
@@ -0,0 +1,36 b'' | |||
|
1 | # memory.py - track memory usage | |
|
2 | # | |
|
3 | # Copyright 2009 Matt Mackall <mpm@selenic.com> and others | |
|
4 | # | |
|
5 | # This software may be used and distributed according to the terms of the | |
|
6 | # GNU General Public License version 2, incorporated herein by reference. | |
|
7 | ||
|
8 | '''helper extension to measure memory usage | |
|
9 | ||
|
10 | Reads current and peak memory usage from ``/proc/self/status`` and | |
|
11 | prints it to ``stderr`` on exit. | |
|
12 | ''' | |
|
13 | ||
|
14 | import atexit | |
|
15 | ||
|
16 | def memusage(ui): | |
|
17 | """Report memory usage of the current process.""" | |
|
18 | status = None | |
|
19 | result = {'peak': 0, 'rss': 0} | |
|
20 | try: | |
|
21 | # This will only work on systems with a /proc file system | |
|
22 | # (like Linux). | |
|
23 | status = open('/proc/self/status', 'r') | |
|
24 | for line in status: | |
|
25 | parts = line.split() | |
|
26 | key = parts[0][2:-1].lower() | |
|
27 | if key in result: | |
|
28 | result[key] = int(parts[1]) | |
|
29 | finally: | |
|
30 | if status is not None: | |
|
31 | status.close() | |
|
32 | ui.write_err(", ".join(["%s: %.1f MiB" % (key, value/1024.0) | |
|
33 | for key, value in result.iteritems()]) + "\n") | |
|
34 | ||
|
35 | def extsetup(ui): | |
|
36 | atexit.register(memusage, ui) |
General Comments 0
You need to be logged in to leave comments.
Login now