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

相关推荐
dengyuezhe806017 分钟前
《C++ 异常机制与智能指针:从原理到实现》
android·java·c++
Wonderful U1 小时前
Python+Django实战|企业办公用品申领管理系统:物资入库、库存预警、申领审批、归还登记、损耗统计、供应商对账
android·python·django
plainGeekDev1 小时前
网络状态监听 → ConnectivityManager + Flow
android·java·kotlin
楠目1 小时前
CVE-2013-4547 Nginx URI解析漏洞利用总结
android
Coffeeee1 小时前
不能用公司的打包机,AI帮我实现了一套比打包机更好用的Android包构建/分发流程
android·人工智能·ai编程
多彩电脑2 小时前
向AIDE(安卓设备上的Android Studio)导入aar库
android·java·开发语言·androidx
恋猫de小郭2 小时前
解析华为 DevEco Code 和小米 MiMo Code,都基于 OpenCode ,有什么区别?
android·前端·ios
2501_932750262 小时前
Android 控件与布局全面解析
android
问心无愧05132 小时前
ctfshow web入门114
android·前端·笔记
黄林晴2 小时前
离谱!Android 17藏神仙功能,手机录屏叠加真人出镜
android