agent-Specialization/users/jojo/project/test_swap/memory_test.py
2025-11-14 16:44:12 +08:00

63 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
内存压力测试脚本 - 用于演示swap使用
该脚本会分配大量内存来触发系统使用swap
"""
import time
import sys
def memory_stress_test():
"""分配内存来触发swap使用"""
print("开始内存压力测试...")
print("当前内存和swap使用情况:")
# 显示当前内存状态
with open('/proc/meminfo', 'r') as f:
meminfo = f.read()
for line in meminfo.split('\n')[:6]:
if line.strip():
print(f" {line}")
# 分配内存列表
memory_blocks = []
block_size = 50 * 1024 * 1024 # 50MB per block
try:
for i in range(20): # 尝试分配总共约1GB
print(f"\n分配第 {i+1} 个内存块 (50MB)...")
# 分配50MB的内存块
block = bytearray(block_size)
# 写入一些数据确保内存真正分配
for j in range(0, block_size, 1024):
block[j] = j % 256
memory_blocks.append(block)
# 每分配5个块后检查内存状态
if (i + 1) % 5 == 0:
print(f"\n已分配 {(i+1)*50}MB当前内存状态:")
time.sleep(2) # 等待系统调整
except MemoryError:
print("\n内存分配失败,已达到系统限制")
except KeyboardInterrupt:
print("\n测试被用户中断")
print(f"\n测试完成,共分配了 {len(memory_blocks)*50}MB 内存")
print("等待5秒后释放内存...")
time.sleep(5)
# 释放内存
memory_blocks.clear()
print("内存已释放")
print("\n测试后的内存状态:")
with open('/proc/meminfo', 'r') as f:
meminfo = f.read()
for line in meminfo.split('\n')[:6]:
if line.strip():
print(f" {line}")
if __name__ == "__main__":
memory_stress_test()