fio数据整理之二

news2024/11/24 23:02:19

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的档案,打开后的效果是这样的:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1178271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过you-get命令行工具下载B站等常见网站高清视频

参考: you-get:https://github.com/soimort/you-get EditThisCookie 源码:https://github.com/ETCExtensions/Edit-This-Cookie EditThisCookie 官网:https://www.editthiscookie.com/ you-get 是一个非常好用的命令行版视频下载工…

[wp]NewStarCTF 2023 WEEK5|WEB

前言:比赛是结束了,但我的学习还未结束,看看自己能复习几道题吧,第四周实在太难 Final 考点: ThinkPHP 5.0.23 RCE一句话木马上传SUID提权(find) 解题: 首先页面就给了ThinkPHP V5, 那无非考…

java制作游戏,如何使用libgdx,入门级别教学

第一步,进入libgdx的官网。点击get started 进入这个页面,点击setup a project 进入这个页面直接点击,Generate a project. 点击下载,下载创建工具 它会让你下载一个jar包,有java环境的人可以双击直接打开。 把android…

Linux学习之vim跳转到特定行数

参考的博客:《Vim跳到最后一行的方法》 《oeasy教您玩转vim - 14 - # 行头行尾》 《Linux:vim 中跳到首行和最后一行》 想要跳到特定行的话,可以在命令模式和正常模式进行跳转。要是对于vim的四种模式不太熟的话,可以到博客《Linu…

Arrays.asList() 和 List.of() 的列表之争

1. 概述 有时在Java中,为了方便,我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。 在本文中,我们将比较初始化小型临时数组的两种主要方法:List.of()和 Array.asList()。 2. Arrays.asList() Java 自…

跨境电商商城源码,助力商家全球布局(多语言切换\多货币转换\多商户入驻)

今天,我们要给大家介绍一款强大且多元化的跨境电商解决方案——WoShop跨境电商源码!这款源码拥有许多令人惊叹的功能,其中最引人注目的就是支持多语言切换、多货币转换以及多商户入驻! 设想一下,你是一个跨境电商的卖家,你的业务遍…

Cannot read properties of undefined (reading ‘prototype‘)

用vue注册的用import ElementUI from "element-ui"是不行的要用 import ElementUI from “element-plus”

【JAVA学习笔记】63 -坦克大战1.3-敌方发射子弹,击中坦克消失并爆炸,敌人坦克随机移动,规定范围限制移动

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter18/src/com/yinhai/tankgame1_3 〇、要求 增加功能 1.让敌人的坦克也能够发射子弹(可以有多颗子弹) 2.当我方坦克击中敌人坦克时,敌人的坦克就消失,如果能做出爆炸效果更好. …

Thread类的基本操作(JAVA多线程)

线程是操作系统中的概念,操作系统内核实现了线程这样的机制,并提供了一些API供外部使用。 JAVA中 Thread类 将系统提供的API又近一步进行了抽象和封装,所以如果想要使用多线程就离不开 Thread 这个类。 线程的创建(Thread类) 在JAVA中 创建…

SPSS多元方差分析

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

大容量中间继电器 RXMH2 RK223 067 DC110V JOSEF约瑟

系列型号 RXMH2 RK 223 067大容量中间继电器; RXMH2 RK 223 068大容量中间继电器; RXMH2 RK 223 069大容量中间继电器; RXMH2 RK 223 070大容量中间继电器; 一、用途 RXMH2系列大容量中间继电器用于工业自动化控制及电力系统…

Git介绍及使用

目录 一、Git 的基本概念 1. 仓库(Repository): 仓库是存储代码的地方。可以通过 命令将本地文件夹初始化为 Git 仓库,并使用 命令从远程仓库克隆到本地 2. 分支(Branch): 分支是指从主分支上创建出来的一个分支&…

Python画一个爱心

Python画一个爱心 一、效果图二、Python代码 一、效果图 二、Python代码 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 480 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CA…

DCU集群搭建虚拟环境方法简介

1.conda安装方法: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh #下载miniconda安装包chmod 750 Miniconda3-latest-Linux-x86_64.sh #添加执行权限bash ./Miniconda3-latest-Linux-x86_64.sh #安装下载的minnconda32.集群安装…

FreeRTOS源码阅读笔记1--task.c

在FreeRTOS中,创建任务有两种方式:动态创建和静态创建。区别就是:动态创建任务的栈和任务TCB是由操作系统动态分配(malloc)内存空间,任务删除时可以释放内存(free);而静态…

单链表(无头单项非循环)

文章目录 前言概述链表的实现初始化遍历单链表创建新节点尾插头插尾删头删单链表的查找在pos位置之前插入一个节点在pos位置删除节点在pos位置后插入节点删除pos后一个节点销毁 结尾 前言 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通…

HDFS系统操作命令大全

一,前言 HDFS作为分布式存储的文件系统,有其对数据的路径表达方式 HDFS同linux系统一样,均是以/作为根目录的组织形式 linux:/usr/local/hello.txt HDFS:/usr/local/hello.txt 二,如何区分呢? L…

【数据结构】树与二叉树(三):二叉树的定义、特点、性质及相关证明

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉…

yolov5--ptq--qat量化之敏感层分析

敏感层分析,应该是发生在ptq量化之前进行分析的操作,经过该操作,可得出哪些层不适合进行量化,则在接下来ptq时可以手动关闭这些层的量化。 进入敏感层分析函数sensitive_analysis中, 具体流程为: 首先验证…

打印机共享连接0x000003e3错误

重点重点:如使用下面教程还不行的朋友,请这样操作。 不管主机还是客户机,都运行“局域网共享一键修复工具”,并选择“简单共享(无密码)” 不管主机还是客户机,都操作一次此教程。 不管主机还是客…