项目中需要量4.8GB/S的数据文件写入四个文件中,每个文件平均为1.2GB/S,文件按二进制方式写入,操作系统为win10服务器版本。磁盘为nvme固态盘,单个固态盘的文件写入速度为3.5GB/S左右,于是用两个固态盘组建了一个Radio0的磁盘阵列,用crystaldiskmark软件测试,阵列的顺序写入速度为6GB/S左右。我自己用四个线程一直写文件(fwrite,文件打开时加入了b选项),写入数据块大小为1MB,程序刚启动几秒速度可以达到6GB,隔几秒速度就只有4GB左右了,速度就在也不提升了,希望有清楚的大神告知下原因。
打个比方来说吧,比如一个U盘,你复制了一个几百兆的文件到里面,
它一开始可能会先上升,达到一个峰值,之后降低一些趋于稳定。
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,帮忙点个采纳!
1.首先,你从系统层面看到的速度其实是计算出来的,它其实显示的是几秒内的均值,而不是真正的这一秒内到底传输了多少数据。
所以,实际上你的程序启动的瞬间就已经达到了最大速度,但是在操作系统中看是个平滑曲线。同理,当你程序停止时,从系统层面看也是慢慢变成0的。
2.当你单线程写入硬盘的时候,制约速度的就只是硬盘写入速度。
而当你多线程同时写入硬盘的时候,由于CPU频繁调度线程,时间都浪费在分页上,反而造成速度下降。
当然,这也跟你用什么操作系统、什么文件系统有关系。
如果是linux,它采用的是异步写入,数据会先统一写进数据缓冲区,然后异步存入磁盘,性能总体上比windows要好上一点。