dstat架构和原理解析

简介

dstat是Linux的一个系统性能监测工具,基于Python开发,能够提供系统全局的多维度的性能和资源监测,包括CPU、内存、网络、IO、换页、平均负载等,可以看作是 vmstat、iostat、netstat 和 ifstat 的多功能替代品,并支持通过插件的形式来扩展功能,在性能测试、基准测试和故障排除分析方面非常实用。dstat本身占用资源较低,监控准确可灵活配置,并且可以将性能数据输出为CSV方便数据分析,具备较大的实用价值。本文是对dstat的架构和原理的解析。

由于分析dstat的目的除了学习它以外,还想要探索其是否在Android上面能够发挥作用,因此本文在Android平台中进行分析和实验。但是由于dstat本身完全基于Python开发,而Android上面没有完善的Python运行环境,因此将dstat编译为Android ARM64的可执行二进制Bin,可以在没有Python环境的条件下在Android中直接运行dstat,项目地址github.com/NasdaqGodzi...

使用

一个全面的命令如下:

css 复制代码
dstat.bin -t -cmndrplg --cpu-use --float --color -s -f --debug

-t 每行打印添加时间戳

-cmndrplg:CPU、内存、网络、磁盘、IO Request、进程状态统计、平均负载、换页

--cpu-use:打印各核心的CPU使用率

--float:小数以浮点显示,否则按整数显示

--color:强制输出颜色

-s:swap

-f:full,扩展一些维度的显示;如该选项会让磁盘读写从总量统计切换为分区统计

--debug:打印一些调试信息,同时打印dstat监测对系统资源的消耗(运行时间)

原理和架构

和常规的用户态监测工具一样,dstat需要利用/proc中系统提供的性能记录来实现对系统资源的监测。对于CPU、内存、网络、IO、平均负载等主要为如下几个节点。这几个节点在Android中是存在的,因此理论上只要解决Python环境的问题,那么dstat可以兼容Android。

dstat采用了sched作为调度器,延时到达时,调度器调度一次,遍历各个插件,调用各个插件的性能监测函数执行一次监测,最终输出整体性能数据。其基本流程如下。

相关推荐
fanged2 小时前
天马G前端的使用
android·游戏
molong9316 小时前
Kotlin 内联函数、高阶函数、扩展函数
android·开发语言·kotlin
叶辞树8 小时前
Android framework调试和AMS等服务调试
android
慕伏白10 小时前
【慕伏白】Android Studio 无线调试配置
android·ide·android studio
低调小一10 小时前
Kuikly 小白拆解系列 · 第1篇|两棵树直调(Kotlin 构建与原生承载)
android·开发语言·kotlin
跟着珅聪学java10 小时前
spring boot 整合 activiti 教程
android·java·spring
川石课堂软件测试12 小时前
全链路Controller压测负载均衡
android·运维·开发语言·python·mysql·adb·负载均衡
2501_9159214312 小时前
iOS 26 电耗监测与优化,耗电问题实战 + 多工具 辅助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_9159214313 小时前
苹果软件混淆与 iOS 应用加固白皮书,IPA 文件加密、反编译防护与无源码混淆方案全解析
android·ios·小程序·https·uni-app·iphone·webview
倔强的石头10613 小时前
【Linux指南】Linux命令行进度条实现原理解析
android·linux