import json, resource, subprocess, sys, time
from pathlib import Path
start=time.monotonic()
process=subprocess.Popen(sys.argv[2:])
with Path(sys.argv[1]).with_name("host-memory.jsonl").open("w",buffering=1) as samples:
    while process.poll() is None:
        try:
            fields=dict(line.split(":",1) for line in Path(f"/proc/{process.pid}/status").read_text().splitlines() if ":" in line)
            samples.write(json.dumps(dict(time=time.time(),rss_kib=int(fields["VmRSS"].split()[0]),peak_rss_kib=int(fields["VmHWM"].split()[0])))+"\n")
        except (FileNotFoundError, KeyError):
            pass
        try:
            process.wait(timeout=10)
        except subprocess.TimeoutExpired:
            pass
usage=resource.getrusage(resource.RUSAGE_CHILDREN)
Path(sys.argv[1]).write_text(json.dumps(dict(elapsed_seconds=time.monotonic()-start,max_rss_kib=usage.ru_maxrss,exit_code=process.returncode),indent=2))
sys.exit(process.returncode)
