怎么做淘宝链接网站,网络服务商官方网站,四川网站建设服务公司,wordpress主题width=1 height=1图片不显示在服务器测试中我们经常会遇见客户要求画出每个SSD的WAF曲线#xff0c;也就是写放大#xff0c;通常的做法就是我们每隔10分钟记录一下每个SSD的host写入量和nand写入量#xff0c;下面我们介绍一下python处理多盘的WAF的做法 如图所示 假设这是一个记录多盘的写入量信息的…在服务器测试中我们经常会遇见客户要求画出每个SSD的WAF曲线也就是写放大通常的做法就是我们每隔10分钟记录一下每个SSD的host写入量和nand写入量下面我们介绍一下python处理多盘的WAF的做法 如图所示 假设这是一个记录多盘的写入量信息的表格 我们最终的目的是生成对应的每个SSD的WAF的图品那么该如何简单快速的实现呢 第一步就是把第一列的disk分组。这里让pandan帮忙处理
import pandas as pd
from matplotlib import pyplot as plt# 读取CSV文件
df pd.read_excel(waaaf.xls)
# 按照 disk 列分组
grouped df.groupby(disk)# 创建一个字典来存储每个 disk 的 WAF 值
waf_dict {}# 计算每个 disk 的 WAF 值
for name, group in grouped:waf_values []print(----------, name)结果如下
C:\Users\13737\AppData\Local\Programs\Python\Python312\python.exe D:/python_pro/chap1/waf.py
---------- nvme0
---------- nvme1
---------- nvme2进程已结束退出代码为 0第二步就是把每个disk的WAF计算出来并且存放在字典里
import pandas as pd
from matplotlib import pyplot as plt# 读取CSV文件
df pd.read_excel(waaaf.xls)
# 按照 disk 列分组
grouped df.groupby(disk)# 创建一个字典来存储每个 disk 的 WAF 值
waf_dict {}# 计算每个 disk 的 WAF 值
for name, group in grouped:waf_values []# 按照索引计算相邻行的 WAFfor i in range(1, len(group)):# 当前行和前一行的 nand 和 host 值nand_diff group.iloc[i][nand] - group.iloc[i - 1][nand]host_diff group.iloc[i][host] - group.iloc[i - 1][host]# 计算 WAFif host_diff ! 0:waf nand_diff / host_diffformatted_waf format(waf, .2f)waf_values.append(formatted_waf)# 将 WAF 值存储到字典中waf_dict[name] waf_values# 打印 WAF 值
for disk, wafs in waf_dict.items():print(fDisk: {disk})print(fWAF Values: {wafs})
运行结果如下:
Disk: nvme0
WAF Values: [1.11, 0.45, 1.14, 2.67, 1.00]
Disk: nvme1
WAF Values: [0.50, 0.55, 1.44, 1.78, 9.50]
Disk: nvme2
WAF Values: [0.60, 1.75, 0.85, 2.00, 1.87]
第三步就是把这个字典生成对应的每个SSD的CSV文件
import pandas as pd
from matplotlib import pyplot as plt# 读取CSV文件
df pd.read_excel(waaaf.xls)
# 按照 disk 列分组
grouped df.groupby(disk)# 创建一个字典来存储每个 disk 的 WAF 值
waf_dict {}# 计算每个 disk 的 WAF 值
for name, group in grouped:waf_values []# 按照索引计算相邻行的 WAFfor i in range(1, len(group)):# 当前行和前一行的 nand 和 host 值nand_diff group.iloc[i][nand] - group.iloc[i - 1][nand]host_diff group.iloc[i][host] - group.iloc[i - 1][host]# 计算 WAFif host_diff ! 0:waf nand_diff / host_diffformatted_waf format(waf, .2f)waf_values.append(formatted_waf)# 将 WAF 值存储到字典中waf_dict[name] waf_values# 打印 WAF 值
for disk, wafs in waf_dict.items():print(fDisk: {disk})print(fWAF Values: {wafs})for disk_waf in wafs:print(disk_waf)with open(f{disk}.csv, a) as file:file.write(f{str(disk_waf)}\n)运行会生成对应的每个SSD的CSV文件 第四步把每个对应CSV表格转化成图片就可以啦
import pandas as pd
from matplotlib import pyplot as plt# 读取CSV文件
df pd.read_excel(waaaf.xls)
# 按照 disk 列分组
grouped df.groupby(disk)# 创建一个字典来存储每个 disk 的 WAF 值
waf_dict {}# 计算每个 disk 的 WAF 值
for name, group in grouped:waf_values []# 按照索引计算相邻行的 WAFfor i in range(1, len(group)):# 当前行和前一行的 nand 和 host 值nand_diff group.iloc[i][nand] - group.iloc[i - 1][nand]host_diff group.iloc[i][host] - group.iloc[i - 1][host]# 计算 WAFif host_diff ! 0:waf nand_diff / host_diffformatted_waf format(waf, .2f)waf_values.append(formatted_waf)# 将 WAF 值存储到字典中waf_dict[name] waf_values# 打印 WAF 值
for disk, wafs in waf_dict.items():print(fDisk: {disk})print(fWAF Values: {wafs})for disk_waf in wafs:print(disk_waf)with open(f{disk}.csv, a) as file:file.write(f{str(disk_waf)}\n)
for disk in waf_dict.keys():data pd.read_csv(f{disk}.csv)fig plt.figure(figsize(10, 6), dpi300)y1 data.iloc[:, 0]plt.xlabel(utime (10min), size10)plt.ylabel(WAF)plt.plot(y1, labelWAF)plt.title(f{disk}_waf)plt.grid(alpha0.4)plt.xlim(xmin0)plt.ylim(ymin0)plt.savefig(str(disk) .png)
图片如下: