dstat架构和原理解析

2023年 10月 13日 56.5k 0

简介

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…。

image

使用

一个全面的命令如下:

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

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论