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作为调度器,延时到达时,调度器调度一次,遍历各个插件,调用各个插件的性能监测函数执行一次监测,最终输出整体性能数据。其基本流程如下。

相关推荐
木头左4 小时前
【架构设计】教育类 App 服务端化改造:AI 上移、题库分层与个人题库归属
android·架构设计·系统设计·后端开发·数据库设计
墨狂之逸才4 小时前
USB 的 HOST 和 DEVICE 到底有什么区别?ADB 调试应该选哪个?
android
奶油话梅糖5 小时前
苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧
android·macos·智能手机
恋猫de小郭5 小时前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
好的佩奇17 小时前
Dart 之扩展类型
android·flutter·dart
alexhilton18 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
灿飞屋20 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫1 天前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine1 天前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m1 天前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android