fio数据整理之二

3 篇文章 0 订阅

fio数据简单抓取
上文我们完成了一些fio output数据的简单抓取,本文将针对抓取的数据做进一步的处理,输出到表格之中,方便我们查看,统计结果。

本文先使用最简单的方法创建csv档案
我们现有个基本认知,在csv档案中,默认列用 逗号(,)进行分隔。也就是假如你在Linux下使用shell 命令 echo "1,2" > test.csv ,你用表格软件打开test.csv的话,它是这样的
在这里插入图片描述
OK,所以,已知用逗号隔开字符串,再输出到csv档案中就能得到一个简单的表格,求:如何将我们需要的fio数据再放到表格中?

解:
我先放上上文我们得到的两个字典,也就是本文中readData,writeData = myclass.run() 得到的两个字典(PS:细心的小伙伴应该发现了,相较上文,修改了字典中Key的名字,这里是为了方便后续取值)
readData
{‘IOPS’: ‘527k’, ‘BW’: ‘2158MB/s’, ‘BiW’: ‘2058MiB/s’, ‘clatv’: ‘usec’, ‘clatavg’: ‘180.34’, ‘clatmin’: ‘6’, ‘clatmax’: ‘27758’, ‘qos9’: ‘486’, ‘qos29’: ‘865’, ‘qos39’: ‘1336’}
writeData
{‘IOPS’: ‘527k’, ‘BW’: ‘2158MB/s’, ‘BiW’: ‘2058MiB/s’, ‘clatv’: ‘usec’, ‘clatavg’: ‘58.22’, ‘clatmin’: ‘8’, ‘clatmax’: ‘31750’, ‘qos9’: ‘81’, ‘qos29’: ‘130’, ‘qos39’: ‘206’}

详细代码:

def writeToCSV(data,rwType):
    global va
    csvFile = os.path.join(os.getcwd(),"fioData.csv")
    #设定一下表格中需要展示的项目,我这里只筛选了四项
    dataType = ["item","IOPS","BW","clatavg","qos39"]
    #先创建表头
    if va == 1:
        msg = ""
        for key in dataType:
            msg += f"{key},\n"
        with open(csvFile,'w') as f:
            f.write(msg)
        va += 1
    #读取表格中的文件,readlines()会按行列成List格式,即myData的类型是列表
    with open(csvFile,'r') as f:
        myData = f.readlines()
    # n 代表行号
    n = 0
    for line in myData:
        #第一行显示的是 item ,read , write这些标题
        if n == 0:
            #利用 replace 替换掉换行符
            msg = line.replace("\n","%s,\n"%rwType)
        else:
            #同样可以用re 来进行替换动作,dataType[n]读到我们要显示的项目名,如IOPS,再用 data["IOPS"]抓到之前字典内对应的数据, +=让msg慢慢完整
            msg += re.sub("\n",f"{data[dataType[n]]},\n",line)
        n += 1
        #把完整的msg数据直接覆盖写进csv档案里面
        with open(csvFile,'w') as f:
            f.write(msg)
     
if __name__ == "__main__":
    #创建一个全局变量用于判断是否需要先写一个头文件,就是列表需要显示的ITEM名之类的
    global va
    va = 1
    #上文提到的一个类,实例化它
    myclass = saveFio()
    #将处理过的数据返回并赋值,readData与writeData都是字典类型的
    readData,writeData = myclass.run()
    #调用本文的函数进行处理,将结果写到csv档案中
    writeToCSV(readData,"read")
    writeToCSV(writeData,"write")

执行完毕后,我们得到一个fioData.csv的档案,打开后的效果是这样的:
在这里插入图片描述

要检验FIO(Flexible I/O Tester)测试数据的一致性,可以采取以下几种方法: 1. 检查FIO测试的输出日志:FIO会生成详细的测试结果日志,包括每个测试任务的读写性能、IOPS、延迟等数据。通过仔细分析这些日志,可以检查测试结果是否一致。特别关注不同运行的测试任务之间的差异,以及重复运行同一测试任务时的结果是否稳定。 2. 检查测试数据的完整性:FIO测试通常会生成一定量的测试数据。在测试完成后,可以通过检查生成的数据文件是否完整来验证数据的一致性。例如,可以比较多次运行测试生成的数据文件的MD5或SHA256哈希值,确保它们完全一致。 3. 验证数据访问模式和参数:FIO支持多种读写模式和参数配置。在进行一致性检验时,需要确保每次运行测试时使用相同的参数配置。这包括块大小、队列深度、随机/顺序访问等。通过保持参数一致,可以更好地比较不同运行之间的性能和结果。 4. 对比性能指标:除了检查输出日志和数据文件外,还可以关注FIO测试运行的性能指标。这包括读写速度、IOPS和延迟等。通过对比不同运行之间的性能指标,可以评估测试数据的一致性。 需要注意的是,FIO测试数据的一致性检验并非绝对,因为硬件和系统环境的变化可能会影响测试结果。因此,在进行一致性检验时,最好在相同的硬件和软件环境下多次运行测试,并对比结果以确定数据的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值