估计或测量创建文件的iops数量

时间:2009-05-17 12:15:17

标签: linux performance filesystems

我想知道创建一个空文件需要多少次I / O操作(iops)。我对linux和GFS文件系统感兴趣,但是其他文件系统信息也非常受欢迎。

建议如何准确衡量这一点也非常受欢迎。

真实场景(答案请求):

  1. 的Linux
  2. GFS文件系统(如果你可以估计另一个 - 请做)
  3. 在现有目录中创建一个新文件,该文件不存在, 使用以下代码
  4. 假设目录位于缓存中,目录深度为 D
  5. 代码:

    int fd = open("/my_dir/1/2/3/new_file", O_CREAT | S_IRWXU);
    // assuming fd is valid
    fsync(fd);
    

3 个答案:

答案 0 :(得分:1)

对于人工测量:

  1. 在自己的块设备上创建空白文件系统(例如vmware scsi等)
  2. 安装它,调用sync(),然后记录该块dev上的IOPS数量。
  3. 针对文件系统运行测试程序,不进行进一步操作(甚至不是“ls”)。
  4. 等到所有未刷新的块都被刷新 - 比如大约1分钟左右
  5. 再次快照iops计数
  6. 当然这是非常不现实的,因为如果你创建了两个文件而不是一个文件,你可能会发现它们的数量不到两倍。

    同时创建空文件或空文件是不现实的 - 因为它们没有做任何有用的事情。

    目录结构(目录有多深,有多少条目)可能有所贡献,但也有多么碎片化和其他任意因素。

答案 1 :(得分:0)

这个问题的答案的性质是;最好的情况,正常情况,最坏的情况。没有单一的答案,因为所需的IOPS数量将根据文件系统的当前状态而变化。 (原始文件系统是非常不现实的情况)。

以FAT32为例,最好的情况是1.正常情况取决于文件系统碎片的程度和新文件的路径名的目录深度。更糟糕的情况是无限制的(除了文件系统的大小,它限制了创建文件的最大可能IOP数量。)

实际上,除非您定义特定的文件系统方案,否则问题无法回答。

答案 2 :(得分:0)

我做了以下测量,我们编写了一个应用程序,按照问题中的描述创建N个文件。 我们在专门用于此应用程序的磁盘上运行此应用程序,并使用 iostat -x 1

测量IOps数量

结果,在GFS和Linux内核2.6.18上,每个文件创建 2 IOps

这个答案基于MarkR答案。