struct timeval tv_begin, tv_end;
long int begin = 0, end = 0;
bool
StandardFileProvider::write( const void* buffer, Size size, Size& nout, Size maxChunkSize )
{
gettimeofday(&tv_begin, NULL);
_fstream.write( (const char*)buffer, size );
if( _fstream.fail() )
return true;
nout = size;
_fstream.sync();
_fstream.flush();
gettimeofday(&tv_end, NULL);
begin = tv_begin.tv_sec*1000*1000 + tv_begin.tv_usec;
end = tv_end.tv_sec*1000*1000 + tv_end.tv_usec;
printf("%s:%d sync -> time : %3ld.%03ld ms. wsize = %8lld Kb\n"
,__func__, __LINE__, (end - begin)/1000, (end - begin)%1000, size/1024);
return false;
}
时间:14.619毫秒。 wsize = 1247 KB
时间:15.806毫秒。 wsize = 1234 KB
时间:14.381毫秒。 wsize = 1244 KB
时间:15.080毫秒。 wsize = 1243 KB
时间:38.409毫秒。 wsize = 1245 KB
时间:22.609毫秒。 wsize = 1243 KB
时间:18.856毫秒。 wsize = 1257 KB
时间:30.591毫秒。 wsize = 1230 KB
时间:16.019毫秒。 wsize = 1247 KB
时间:14.925毫秒。 wsize = 1251 KB
时间:15.050毫秒。 wsize = 1233 KB
时间:466.793毫秒。 wsize = 1230 KB
时间:17.810毫秒。 wsize = 1232 KB
时间:14.422毫秒。 wsize = 1231 KB
时间:15.803毫秒。 wsize = 1221 KB
时间:14.874毫秒。 wsize = 1248 KB
时间:27.504毫秒。 wsize = 1232 KB
时间:14.615毫秒。 wsize = 1250 KB
时间:15.394毫秒。 wsize = 1240 KB
时间:33.018毫秒。 wsize = 1234 KB
时间:15.506毫秒。 wsize = 1255 KB
时间:15.890毫秒。 wsize = 1256 KB
时间:26.371毫秒。 wsize = 1251 KB
时间:15.305毫秒。 wsize = 1245 KB
时间:22.000毫秒。 wsize = 1240 KB
时间:23.760毫秒。 wsize = 1244 KB
时间:19.326毫秒。 wsize = 1254 KB
时间:46.003毫秒。 wsize = 1252 KB
时间:15.997毫秒。 wsize = 1240 KB
时间:14.518毫秒。 wsize = 1242 KB
答案 0 :(得分:0)
我已经解决了这个问题!
这是vfs问题。我只是将dirty_ratio从20设置为5,它将起作用。
[root@elvis-g1_0:~]# cat /proc/sys/vm/dirty_ratio
20
[root@elvis-g1_0:~]# echo 5 > /proc/sys/vm/dirty_ratio