在我的系统中,sar向磁盘的平均写入量约为5MB/s,使用dstat我发现它并不是永久的,但是有30到50 5MB/S的峰值,然后就睡着了。
使用iotop,我发现大多数写作都是由一个应用程序完成的(但我不知道它有多确定)。
使用strace和fatrace,我看到应用程序打开,在不同的目录中创建文件,然后关闭/删除它们。有很多文件,但我在strace中没有看到太多的写作。我尝试使用/proc/pid/fd查找更多的文件,看看是否有任何文件不断递增(日志等),但找不到任何文件。所以我的结论是,所有的写作都是用应用程序创建的小临时文件来完成的。
如何检查写入每个文件的数量?我想要一个包含写入每个文件的字节数的报告。
有什么办法吗?我考虑过重写像open和write这样的系统来监视每个文件的更改,或者使用systemtap,但我希望有更简单的方法。
发布于 2015-05-23 13:40:14
Brendan的iosnoop (他的perf-tools的一部分)将向您提供有关应用程序I/O的详细信息;例如:
# ./iosnoop
Tracing block I/O... Ctrl-C to end.
COMM PID TYPE DEV BLOCK BYTES LATms
supervise 1809 W 202,1 17039968 4096 1.32
supervise 1809 W 202,1 17039976 4096 1.30
tar 14794 RM 202,1 8457608 4096 7.53
tar 14794 RM 202,1 8470336 4096 14.90
tar 14794 RM 202,1 8470368 4096 0.27
tar 14794 RM 202,1 8470784 4096 7.74
tar 14794 RM 202,1 8470360 4096 0.25
tar 14794 RM 202,1 8469968 4096 0.24
tar 14794 RM 202,1 8470240 4096 0.24
[...](例如取自他的博客文章)。
您可以使用它来跟踪系统的所有I/O,或者将其限制在单个进程、设备.
https://unix.stackexchange.com/questions/205147
复制相似问题