当前位置: 首页 > news >正文

计算Rocksdb每10秒下刷到L0的数据大小

一共需要两个文件

文件1 get_flush_detail.sh

#!/bin/bashif [ $# -eq 0 ]; thenecho "usage: sh $0 osdid;  for example: sh $0 3  will parse ceph-osd.3.log  "exit 0;
fi
cat ceph-osd.$1.log  |grep 'flush t' |grep OK| awk '{print $1,$13/1024/1024 }'  >input.txt
python calculate.py

文件2 calculate.py

import datetimedef process_data(filename):# 创建一个字典来存储每个10秒区间的总收入income_per_interval = {}# 打开文件并读取数据with open(filename, 'r') as file:for line in file:# 拆分每一行parts = line.strip().split()# 检查是否有两个部分if len(parts) != 2:print(f"Warning: Skipping invalid line '{line}'")continuetimestamp_str, income_str = partstry:# 解析时间戳timestamp = datetime.datetime.strptime(timestamp_str, '%Y-%m-%dT%H:%M:%S.%f%z')income = float(income_str)# 计算该记录属于哪个10秒区间interval_key = timestamp.replace(second=(timestamp.second // 10) * 10, microsecond=0)# 更新对应区间的收入if interval_key in income_per_interval:income_per_interval[interval_key] += incomeelse:income_per_interval[interval_key] = incomeexcept ValueError:print(f"Warning: Skipping invalid line '{line}'")# 输出每个10秒区间的总收入for interval, total_income in sorted(income_per_interval.items()):print(interval.strftime('%Y-%m-%dT%H:%M:%S%z'), int(total_income))# 调用函数并传入文件名
process_data('input.txt')

中间文件 input.txt

2024-09-20T15:42:38.803+0800 111.95
2024-09-20T15:42:39.795+0800 110.549
2024-09-20T15:42:40.793+0800 111.382
2024-09-20T15:42:41.834+0800 109.97
2024-09-20T15:42:42.882+0800 109.47

最终结果

2024-09-20T15:42:30+0800 222
2024-09-20T15:42:40+0800 1022
2024-09-20T15:42:50+0800 1005
2024-09-20T15:43:00+0800 889
2024-09-20T15:43:10+0800 675
2024-09-20T15:43:20+0800 442

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VCNet论文阅读笔记
  • MinIO - macOS上配置、Python调用
  • Leetcode Hot 100刷题记录 -Day16(旋转图像)
  • YOLOv5白皮书-第Y1周:调用官方权重进行检测
  • Spring系统学习(一)——初识Spring框架
  • 蓝桥杯2024省C
  • P1439 【模板】最长公共子序列 (线性DP,LCS + LIS)
  • ElementUI 用span-method实现循环el-table组件的合并行功能
  • linux如何查看当前的目录所在位置
  • Python 二级考试
  • 变化检测(Change Detection)
  • 4.提升客户服务体验:ChatGPT在客服中的应用(4/10)
  • 软件设计师——操作系统
  • AI问答-HTTP:理解 Content-Disposition
  • ovirt error: Network not found: no network with matching name ‘vdsm-ovirtmgmt‘
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • ES6--对象的扩展
  • IndexedDB
  • leetcode388. Longest Absolute File Path
  • spring + angular 实现导出excel
  • Twitter赢在开放,三年创造奇迹
  • vuex 笔记整理
  • windows下mongoDB的环境配置
  • 基于组件的设计工作流与界面抽象
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 网络应用优化——时延与带宽
  • 一些关于Rust在2019年的思考
  • MPAndroidChart 教程:Y轴 YAxis
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​比特币大跌的 2 个原因
  • # .NET Framework中使用命名管道进行进程间通信
  • # Maven错误Error executing Maven
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (C#)一个最简单的链表类
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二十四)Flask之flask-session组件
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .DFS.
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 命令行参数包含应用程序路径吗?
  • /run/containerd/containerd.sock connect: connection refused
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • ::before和::after 常见的用法
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
  • [android] 练习PopupWindow实现对话框
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C++][opencv]基于opencv实现photoshop算法图像剪切