Linux オペレーティング システムの C でドライブ ベンチマークを作成していますが、NTFS ファイル システムで問題が発生しました。多くの新しいファイルを書き込むいくつかのコードを次に示します。
for ( int i = 0; i < 100; ++i )
{
fd = open(nextfile, O_WRONLY | O_DIRECT | O_SYNC | O_CREAT );
write(fd, buff, size);
fsync(fd);
close(fd);
}
それは正常に機能しますが、作成されたすべてのファイルを読みたい場合、 fsync 関数が機能しないようです。すべてのファイルを読み取るいくつかのコードを次に示します。
for ( int i = 0; i < 100; ++i )
{
fd = open(nextfile, O_RDONLY | O_DIRECT | O_SYNC);
read(fd, buff, size);
fsync(fd);
close(fd);
}
古いペンドライブをテストすると、書き込みで 4MB/秒、読み取りで 267MB/秒の時間が得られますが、これは明らかに正しくありませんが、ext4 ファイル システムをテストすると、読み取り時間は正しいです。私は何をすべきか?