| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,21 +1,40 @@ | ||
| """Memory watchdog: periodically read the memory usage of the main test process | ||
| and print it out, until terminated.""" | ||
| # stdin should refer to the process' /proc/<PID>/statm: we don't pass the | ||
| # process' PID to avoid a race condition in case of - unlikely - PID recycling. | ||
| # If the process crashes, reading from the /proc entry will fail with ESRCH. | ||
|
|
||
|
|
||
| import sys | ||
| import time | ||
| from test.support import get_pagesize | ||
|
|
||
|
|
||
| while True: | ||
| page_size = get_pagesize() | ||
| sys.stdin.seek(0) | ||
| statm = sys.stdin.read() | ||
| data = int(statm.split()[5]) | ||
| sys.stdout.write(" ... process data size: {data:.1f}G\n" | ||
| .format(data=data * page_size / (1024 ** 3))) | ||
| sys.stdout.flush() | ||
| time.sleep(1) | ||
| from test.libregrtest.utils import get_process_memory_usage | ||
|
|
||
|
|
||
| ONE_GIB = (1024 ** 3) | ||
|
|
||
|
|
||
| def watchdog(pid): | ||
| while True: | ||
| mem = get_process_memory_usage(pid) | ||
| if mem is None: | ||
| # get_process_memory_usage() is not supported on the platform, | ||
| # or something went wrong. Exit since the next call is likely to | ||
| # fail the same way. | ||
| return | ||
|
|
||
| # Prefer sys.stdout.write() to print() to use a single write() syscall. | ||
| # print(msg) calls write(msg.encode()) and then write(b"\n"). | ||
| sys.stdout.write(f" ... process data size: {mem / ONE_GIB:.1f} GiB\n") | ||
|
Comment thread
cmaloney marked this conversation as resolved.
|
||
| sys.stdout.flush() | ||
| time.sleep(1) | ||
|
|
||
| def main(): | ||
| if len(sys.argv) != 2: | ||
| print(f"usage: python {sys.argv[0]} pid") | ||
| sys.exit(1) | ||
| pid = int(sys.argv[1]) | ||
|
|
||
| try: | ||
| watchdog(pid) | ||
| except KeyboardInterrupt: | ||
| pass | ||
|
|
||
| if __name__ == "__main__": | ||
|
Comment thread
cmaloney marked this conversation as resolved.
|
||
| main() | ||
| Back | FazBrowse Home | New Git URL |
Uh oh!
There was an error while loading. Please reload this page.