일부 디스크(HDD 및 SDD)에서 직접 무작위 쓰기 벤치마크를 실행하고 있는데 iostat 모니터에 이상한 출력 데이터가 표시됩니다. 일반적인 쓰기 속도 외에 왜인지 이해할 수 없는 읽기 속도가 있습니다.
다음은 테스트를 위해 C로 작성한 벤치마크 프로그램입니다(이 문제의 핵심 코드).
fd=open("/dev/sda", O_WRONLY|O_CREAT|O_TRUNC, 0666);
for (;;) {
offset2=DLIMIT * (double)random() / RAND_MAX;
retval = lseek64(fd, offset2, SEEK_SET);
handle("lseek64", retval == (off64_t) -1);
retval = write(fd, buffer, BLOCKSIZE);
handle("write", retval < 0);
}
예를 들어 60초 벤치마크 동안 iostat는 다음과 같은 평균 결과를 보여주었습니다.
54467,27(kB/초) | 38147,37(주)
실행 중인 프로그램을 한 번 실행해 보니 write 및 lseek의 내용만 표시되었습니다.
또 다른 좋은 정보는 이 프로그램을 파일(SDA에서 마운트된 파일 시스템)에서 실행하면 읽기 속도가 표시되지 않는다는 것입니다. 이 "/dev/sda" 경우에만요.
이 고스트 읽기 비율에 대한 아이디어나 설명이 있습니까?