Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
我买了一张Highpoint带有4个Samsung 960PRO的HBA卡,因为官方网站说该卡的写入速度为7500MB / s,读取速度为13000MB / s。

在ubuntu 16.04系统中用fio测试此卡时,写入速度约为7000MB / s,这是我的测试参数:

sudo fio -filename=/home/xid/raid0_dir0/fio.test -direct=1 -rw=write -ioengine=sync -bs=2k -iodepth=32 -size=100G -numjobs=1 -runtime=100 -time_base=1 -group_reporting -name=test-seq-write


我已经在卡中创建了raid0并创建了xfs文件系统。如果我想使用“ open(),read(),write()”之类的功能,我想知道如何实现与fio一样高的磁盘写入速度。或控制台应用程序中的“ fopen(),fread(),fwrite()”之类的函数。

最佳答案

我只是注意到您指定的fio作业似乎有点缺陷:


  -direct = 1 -rw = write -ioengine = sync -bs = 2k -iodepth = 32


(为简单起见,我们假设破折号实际上是双破折号)

上面是要求尝试让同步ioengine使用大于1的iodepth。这通常没有意义,而iodepth section of the fio documentation warns about this


  iodepth = int
  
  针对文件保留的I / O单元数。注意
  将iodepth增加到1以上不会影响同步ioengine
  (除了小数点,当使用verify_async时)。甚至不同步
  引擎可能会施加OS限制,从而导致所需深度无法达到
  实现。 [重点添加]


您没有发布fio输出,因此我们无法确定您是否达到了iodepth大于1的深度。 7.5GByte / s似乎可以胜任这项工作,我不禁想到您的文件系统已经安静运行并且在背后做了缓冲,但是谁知道呢?我不能说更多,因为恐怕您无法获得运行输出。

还要注意data fio was writing might not have been random enough to defeat compression从而有助于达到人为的高I / O速度...

无论如何,您的主要问题是:


  如何实现磁盘写入速度高达fio呢?


您的示例显示您正在告诉fio使用ioengine that does regular write calls。考虑到这一点,从理论上讲,您应该能够通过以下方式实现类似的速度:


预分配文件,仅写入文件的已分配部分(因此,您不会进行扩展写入)
满足使用O_DIRECT的所有要求(必须满足严格的内存对齐和大小限制)
确保您的write操作正在以正好为2048个字节的块写的缓冲区上工作(或更大,只要它们是2的幂)
尽快提交您的write :-)


如果由于某种原因您无法每次都提交“大”对齐良好的缓冲区,则可能会发现不使用O_DIRECT(因此允许缓冲的I / O进行合并)会更好。

关于linux - 如何实现磁盘写入速度高达fio呢? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53553945/

10-13 05:02