论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
大数据
›
数据仓库与分析
›
Android 中 怎样监控 某个磁盘有哪些历程或线程在持续的 ...
Android 中 怎样监控 某个磁盘有哪些历程或线程在持续的读写 ...
道家人
论坛元老
|
2025-2-23 19:52:50
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
1031
|
帖子
1031
|
积分
3093
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
在 Android 系统中监控某个磁盘的历程或线程的持续读写操纵,可以通过以下方法实现。根据装备权限(如是否已 Root)和需求的不同,选择适合的工具或命令:
一、使用系统内置工具和命令
1. 通过 proc 文件系统获取历程 I/O 信息
每个历程的 I/O 统计信息存储在 /proc/[pid]/io 文件中。可以通过以下步骤监控:
获取所有历程的 PID
:
bash
复制
adb shell ps -A
复制代码
查察某个历程的 I/O 统计
:
bash
复制
adb shell cat /proc/[pid]/io
复制代码
输出示例:
复制
rchar: 12345 # 读取的字符数(包括缓存)
wchar: 67890 # 写入的字符数
read_bytes: 1024 # 实际磁盘读取字节数
write_bytes: 2048 # 实际磁盘写入字节数
复制代码
编写脚本动态监控
:
通过定期读取 read_bytes 和 write_bytes 的变革,找出持续读写的历程。
bash
复制
# 监控所有进程的磁盘读写
adb shell "
while true; do
for pid in \$(ls /proc | grep '^[0-9]\+$'); do
if [ -f /proc/\$pid/io ]; then
echo "PID: \$pid"
grep 'read_bytes\|write_bytes' /proc/\$pid/io
fi
done
sleep 1
clear
done
"
复制代码
2. 使用 dumpsys 命令获取磁盘统计
Android 的 dumpsys 可以输出磁盘使用环境,但信息较为概括:
bash
复制
adb shell dumpsys diskstats
复制代码
输出示例:
复制
Latency: 1ms [100ms]
Data-Free: 12345678K /data-free
System-Free: 2345678K /system-free
...
复制代码
3. 使用 strace 跟踪系统调用
通过 strace 监控历程的文件读写操纵(需 Root 权限):
bash
复制
# 跟踪某个进程的所有文件读写操作
adb shell strace -p [pid] -e trace=read,write
复制代码
缺点
:性能开销大,仅适合短时间调试。
二、使用第三方工具
1. iotop(需 Root 或自定义内核支持)
iotop 类似 Linux 的 top,但专注于磁盘 I/O。若装备支持,安装后可直接运行:
bash
复制
adb shell iotop
复制代码
输出示例:
复制
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/3 root 0.00 B 3.76 K 0.00 % 0.00 % some_process
复制代码
2. lsof(需 Root 或 Busybox)
查察哪些历程打开了特定文件或目录:
bash
复制
# 查看访问某个路径的进程
adb shell lsof /sdcard/example.txt
复制代码
三、使用性能分析工具
1. Android Profiler(针对应用开发者)
在 Android Studio 中,使用
Profiler
监控应用的磁盘 I/O:
连接装备并启动应用。
打开
Android Profiler
,选择
Disk
标签。
查察文件读写操纵和堆栈跟踪。
2. Systrace 或 Perfetto
通过系统级跟踪工具分析 I/O 行为:
生成跟踪文件:
bash
复制
adb shell perfetto --config :disk --out /data/local/tmp/trace.pftrace
复制代码
下载并分析文件(使用 ui.perfetto.dev):
bash
复制
adb pull /data/local/tmp/trace.pftrace
复制代码
四、内核级监控(需 Root 和内核支持)
1. 使用 ftrace 跟踪块装备 I/O
启用块装备跟踪:
bash
复制
adb shell "echo 1 > /sys/kernel/debug/tracing/events/block/enable"
复制代码
捕捉事件:
bash
复制
adb shell cat /sys/kernel/debug/tracing/trace_pipe
复制代码
五、主动化脚本示例
结合 proc 和 grep 编写监控脚本:
bash
复制
#!/bin/bash
# 监控指定磁盘路径的读写进程(例如 /sdcard)
adb shell "
while true; do
echo '===== $(date) ====='
for pid in \$(lsof | grep '/sdcard' | awk '{print \$2}' | sort -u); do
if [ -f /proc/\$pid/io ]; then
echo "PID: \$pid \$(cat /proc/\$pid/cmdline)"
grep 'read_bytes\|write_bytes' /proc/\$pid/io
fi
done
sleep 2
done
"
复制代码
总结
方法
实用场景
所需权限
/proc/[pid]/io历程级 I/O 统计无需 Rootdumpsys diskstats系统级磁盘使用概览无需 Rootstrace实时跟踪文件读写系统调用Root 权限iotop/lsof实时监控高 I/O 历程Root 或 BusyboxAndroid Profiler应用开发调试无需 Root内核跟踪(ftrace)深度分析块装备 I/ORoot 和内核支持 根据需求选择符合的工具,优先尝试非 Root 方法(如 /proc 和 dumpsys),如需更具体信息再使用 Root 工具(如 strace 或 iotop)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
道家人
论坛元老
这个人很懒什么都没写!
楼主热帖
CentOS7.9使用sealos部署单节点k8s并部 ...
青龙2.10.13 稳定版+Ninja登录面板+傻 ...
日本开放Wi-Fi 6E认证
软件危机与软件过程模型
〖Python接口自动化测试实战篇⑨〗- 实 ...
LyScript 从文本中读写ShellCode
Redis和Mysql保持数据一致性
推荐一款完全开源,功能丰富,界面精美 ...
C#_串口调试助手-网络拓扑显示 ...
如何精简 Prometheus 的指标和存储占用 ...
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表