mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
Issue #14154: Reimplement the bigmem test memory watchdog as a subprocess.
This commit is contained in:
parent
226ed7ecbd
commit
55bce63ea0
3 changed files with 38 additions and 240 deletions
28
Lib/test/memory_watchdog.py
Normal file
28
Lib/test/memory_watchdog.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
"""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 os
|
||||
import sys
|
||||
import time
|
||||
|
||||
|
||||
try:
|
||||
page_size = os.sysconf('SC_PAGESIZE')
|
||||
except (ValueError, AttributeError):
|
||||
try:
|
||||
page_size = os.sysconf('SC_PAGE_SIZE')
|
||||
except (ValueError, AttributeError):
|
||||
page_size = 4096
|
||||
|
||||
while True:
|
||||
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)
|
Loading…
Add table
Add a link
Reference in a new issue