一部のディスク(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」の場合のみです。
このゴースト読み取り率のアイデアや説明はありますか?