Script for Running Out of Memory
import re
from time import sleep
from pathlib import Path
def to_si(x: float, *, base: int = 1000) -> str:
for prefix in ["", "K", "M", "G", "T", "P"]:
if x < base:
return f"{x:.2f}{prefix}"
x /= float(base)
return f"{x}Y"
value_re = re.compile(r"^\w+:\s*(\d+)\s+\w+$")
def extract_value(x: str) -> int:
m = value_re.match(x)
assert m is not None, x
return int(m.group(1))
def pr():
data = Path("/proc/self/status").read_text().split("\n")
vm = 0
rss = 0
swap = 0
for l in data:
if l.startswith("VmSize:"):
vm = extract_value(l)
elif l.startswith("VmRSS:"):
rss = extract_value(l)
elif l.startswith("VmSwap:"):
swap = extract_value(l)
print(f"VM: {to_si(vm * 1024, base=1024)}iB RSS: {to_si(rss * 1024, base=1024)}iB Swap: {to_si(swap * 1024, base=1024)}iB")
death = []
kb = b"O" * 1024
mb = kb * 1024
gb = mb * 1024
pr()
for i in range(100000):
death.append(bytearray(gb))
sleep(0.2)
pr()
print("Done")
sleep(60)