用Python实现Linux系统占用指定内存,CPU满载,服务器压力测试,场景设计
Song • 5987 次浏览 • 0 个回复 • 2022年05月17日

背景
提出两个需求
- 占满系统CPU
- 占用大内存
通过上网查资料,做实验使用Python实现了上述两个需求。
先看效果
- 执行前
内存
CPU
- 执行后
内存 ![377.png]0.8652036260902343
CPU
代码实现 环境说明:代码使用Python3实现
#! /user/bin/env python
# -*- encoding: utf-8 -*-
import sys
import re
import time
from multiprocessing import Process,cpu_count
def print_help():
print('Usage: ')
print(' python test_mem.py m 1GB')
print(' python test_mem.py c 1')
print(' python test_mem.py mc 1GB 2')
#实现占用内存
def mem():
pattern = re.compile('^(d*)([M|G]B)$')
size = sys.argv[2].upper()
match = pattern.match(size)
if match:
num = int(match.group(1))
unit = match.group(2)
if unit == 'MB':
s = ' ' * (num * 1024 * 1024)
else:
s = ' ' * (num * 1024 * 1024 * 1024)
time.sleep(24 * 3600)
else:
print("bad args.....")
print_help()
#cpu满载
def deadloop():
while True:
pass
#根据传参来指定占满几个核
def cpu():
arg = sys.argv[2] if len(sys.argv) == 3 else sys.argv[3]
cpu_num = cpu_count()
cores = int(arg)
if not isinstance(cores,int):
print("bad args not int")
return
if cores > cpu_num:
print("Invalid CPU Num(cpu_count="+str(cpu_num)+")")
return
if cores is None or cores <1:
cores = 1
for i in range(cores):
Process(target=deadloop).start()
def mem_cpu():
Process(target=mem).start()
Process(target=cpu).start()
if __name__ == "__main__":
if len(sys.argv) >= 3:
switcher = {
'm': mem,
'c': cpu,
'mc': mem_cpu
}
switcher.get(sys.argv[1], mem)()
else:
print_help()
使用命令
//指定Mem占用,使用time.sleep()硬代码1天时间
python3 test_mem.py m 1GB
//CPU满载
python3 test_mem.py c 2
//CPU 2核满载,并且指定Mem占用2GB
python3 test_mem.py mc 2GB 2
Linux命令查看
//查看内存
$ free -h
//查看CPU,每秒采集一次,共5次
$ sar -u 1 5
原文地址:https://blog.csdn.net/yuexue0/article/details/86564253
原创文章,转载请注明 :用Python实现Linux系统占用指定内存,CPU满载,服务器压力测试,场景设计 - pytorch中文网
原文出处: https://ptorch.com/news/273.html
问题交流群 :168117787
- 没有评论