查询资源消耗

import subprocess

def get_cpu_usage(pid, duration):
output = subprocess.check_output([‘pidstat’, ‘-d’, ‘-p’, str(pid), ‘1’, str(duration)]).decode(‘utf-8’)
lines = output.strip().split(’\n’)
cpu_usage = []
for line in lines[4:]:
fields = line.split()
cpu_usage.append(float(fields[6]))
max_cpu = max(cpu_usage)
avg_cpu = sum(cpu_usage) / len(cpu_usage)
return max_cpu, avg_cpu

def get_memory_usage(pid, duration):
output = subprocess.check_output([‘pidstat’, ‘-r’, ‘-p’, str(pid), ‘1’, str(duration)]).decode(‘utf-8’)
lines = output.strip().split(’\n’)
mem_usage = []
for line in lines[4:]:
fields = line.split()
mem_usage.append(float(fields[6]))
max_mem = max(mem_usage)
avg_mem = sum(mem_usage) / len(mem_usage)
return max_mem, avg_mem

def get_disk_io(pid, duration):
output = subprocess.check_output([‘pidstat’, ‘-d’, ‘-p’, str(pid), ‘1’, str(duration)]).decode(‘utf-8’)
lines = output.strip().split(’\n’)
disk_io = []
for line in lines[4:]:
fields = line.split()
disk_io.append(float(fields[5]))
max_disk_io = max(disk_io)
avg_disk_io = sum(disk_io) / len(disk_io)
return max_disk_io, avg_disk_io

def get_net_io(pid, duration):
output = subprocess.check_output([‘pidstat’, ‘-n’, ‘-p’, str(pid), ‘1’, str(duration)]).decode(‘utf-8’)
lines = output.strip().split(’\n’)
net_io = []
for line in lines[4:]:
fields = line.split()
net_io.append(float(fields[4]) + float(fields[7]))
max_net_io = max(net_io)
avg_net_io = sum(net_io) / len(net_io)
return max_net_io, avg_net_io

pid = 12345 # 替换为你需要测试的进程的PID
duration = 10 # 替换为你的测试时长

max_cpu, avg_cpu = get_cpu_usage(pid, duration)
max_mem, avg_mem = get_memory_usage(pid, duration)
max_disk_io, avg_disk_io = get_disk_io(pid, duration)
max_net_io, avg_net_io = get_net_io(pid, duration)

print(f"CPU 最大值: {max_cpu}% 平均值: {avg_cpu}%")
print(f"内存 最大值: {max_mem} 平均值: {avg_mem}")
print(f"磁盘IO 最大值: {max_disk_io} 平均值: {avg_disk_io}")
print(f"网络流量 最大值: {max_net_io} 平均值: {avg_net_io}")

你可能感兴趣的:(性能测试,linux)