如何用PowerShell获取特定脚本产生的真实磁盘IOPS及I/O计数
统计特定脚本产生的I/O量的实用工具与方法
以下是几个能精准追踪特定脚本(如XY.sh)I/O开销的工具,执行结束后可直接获取累计I/O数据:
pidstat(sysstat包自带)
这是最常用的进程I/O统计工具,无需额外复杂配置。- 若脚本已在运行,先获取其PID:
pgrep -f XY.sh - 实时追踪并累计I/O:
pidstat -d -p <PID>,脚本结束后,输出里的kB_rd/s和kB_wr/s的累计值可换算总读写量;也可以用pidstat -d -p <PID> 1持续刷新,直到脚本终止,最后汇总数据。 - 若要启动脚本时直接追踪:
./XY.sh & pidstat -d -p $!,$!代表刚启动的脚本PID。
- 若脚本已在运行,先获取其PID:
iotop
交互式的I/O监控工具,能直观展示进程的实时I/O及累计量:- 只追踪目标脚本:
iotop -o -p $(pgrep -f XY.sh),-o参数仅显示有I/O活动的进程,脚本结束前,界面底部会显示该进程的累计DISK READ和DISK WRITE数值。
- 只追踪目标脚本:
strace
通过追踪系统调用统计I/O,适合精准统计读写字节数,但会轻微影响脚本性能:- 直接执行脚本并统计:
strace -e trace=read,write -c ./XY.sh,脚本执行完毕后,会输出read和write系统调用的总次数、总字节数,其中bytes列即为累计I/O量。
- 直接执行脚本并统计:
perf
内核级性能分析工具,需root权限,可统计块设备层面的I/O请求:- 执行脚本并统计:
perf stat -e block:block_rq_insert -e block:block_rq_complete ./XY.sh,输出会显示脚本触发的块设备请求插入和完成次数,结合块大小可换算总I/O量。
- 执行脚本并统计:
注意:针对远程共享(如NFS、SMB),上述工具统计的是本地发起的I/O请求,也就是实际发送至远程共享的真实I/O数据,完全符合你的需求。
内容的提问来源于stack exchange,提问作者anael
相关产品推荐
相关产品推荐

