我想明白了以下問題:只有磁盤寫入,但iotop顯示讀取以及
一種方法是做只寫SYS通話,無限循環。當我提出iotop時,我期望看到與該進程相關的非零寫入速度和零讀取速度。但是iotop告訴讀寫可以相等(取決於單個寫入大小)。看一看的C代碼:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#define BUFSIZE 1000000
char buf[BUFSIZE];
const int write_size = 4000;
int main(){
int fd;
if ((fd = open("filename", O_RDWR | O_CREAT, 0666)) < 0){
return -1;
}
ssize_t ret;
while (1){
ret = write(fd, buf, write_size);
if (ret != write_size){
return -1;
}
}
return 0;
}
如果分配給「write_size」不同的值,你會在iotop看到不同的讀取速度。如果該值與上面的代碼相同,則iotop顯示讀取和寫入相等。
重要:
的問題似乎只在一定的條件:
- 運行代碼
OS的conf之前,必須創建該文件並填充數據(可以說至少8GB):
Debian lenny,2TB磁盤,(經過xfs和ext4測試), uname -a Linux g-6 2.6.26-bpo.1-xen-amd64#1 SMP Mon Jan 12 14:32:40 UTC 2009 x86_64 GNU/Linux
Thanks in advan ce解決這個謎題,
Michal。
這個問題的優秀文章!我希望每個新手都能很好地描述他們的問題。歡迎來到這個網站! – 2010-07-26 12:47:53