[CT420]: Add Assignment 2 memory stresser

This commit is contained in:
2025-03-19 09:44:37 +00:00
parent ca69d6d6ea
commit 4413532326

View File

@ -0,0 +1,39 @@
import argparse
import time
import psutil
def stress_memory(target_usage: float):
"""
Stress the system memory to a given percentage.
:param target_usage: Target memory usage (0.0 to 1.0, where 1.0 is 100%)
"""
total_memory = psutil.virtual_memory().total # Get total RAM in bytes
target_memory = int(total_memory * target_usage) # Calculate target memory size
print(f"Total Memory: {total_memory / (1024**3):.2f} GB")
print(f"Target Memory Usage: {target_memory / (1024**3):.2f} GB ({target_usage * 100:.0f}%)")
try:
memory_hog = [] # List to store allocated memory chunks
chunk_size = 100 * 1024 * 1024 # Allocate in 100MB chunks
while sum(len(chunk) for chunk in memory_hog) < target_memory:
memory_hog.append(bytearray(chunk_size)) # Allocate memory
time.sleep(0.1) # Small delay to allow system response
print("Memory fully allocated. Holding...")
while True: # Keep the memory occupied
time.sleep(1)
except MemoryError:
print("Memory limit reached. Exiting...")
except KeyboardInterrupt:
print("Memory stress test stopped.")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Memory Stress Test Script")
parser.add_argument("--usage", type=float, default=1.0, help="Target memory usage (default: 1.0 for 100%)")
args = parser.parse_args()
stress_memory(args.usage)