我正在尝试跟踪 Linux 中特定进程写入磁盘或从磁盘读取的总数据。使用 dstat 工具,我可以使用dstat -d
. 使用strace -e trace=read,write
,我可以跟踪系统调用的返回值。
这是一个示例程序,我想为其获取真实的系统读写值(包括写入磁盘和从磁盘读取的元数据):
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main(){
char block[4096]="0";
int count=500;
int fd, size;
for(int i=0;i<4096;i++)
{
char a='0';
block[i]=a;
}
fd = open("file.txt",O_CREAT|O_WRONLY, 0644);
while(count--){
size = write(fd,block,4096);
}
fsync(fd); //Flush all data to disk
close(fd);
像这样的工具iotop
也没有用,因为它们会给出不断变化的值。该dstat -d
选项是我最接近跟踪实际读取、写入值的选项,但我只想将其缩小到一个特定的进程,而 dstat 没有这样的选项。
谢谢您的帮助!