代码之家  ›  专栏  ›  技术社区  ›  Drakosha

估算或测量眼压值以创建文件

  •  1
  • Drakosha  · 技术社区  · 17 年前

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

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

    1. 假设目录在缓存中,目录深度为 D

    int fd = open("/my_dir/1/2/3/new_file", O_CREAT | S_IRWXU);
    // assuming fd is valid
    fsync(fd);
    
    3 回复  |  直到 17 年前
        1
  •  1
  •   MarkR    17 年前

    对于人工测量:

    1. 挂载它,调用sync(),然后记录该块dev上存在的IOPS数。
    2. 等待所有未冲洗的块都冲洗干净——大约1分钟左右
    3. 再次快照眼压计数

    当然,这是非常不切实际的,因为如果你创建了两个文件而不是一个,你可能会发现文件的数量不到原来的两倍。

        2
  •  0
  •   user82238 user82238    17 年前

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

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

    实际上,除非你定义了一个特定的文件系统场景,否则这个问题是无法回答的。

        3
  •  0
  •   Drakosha    17 年前

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

    每次文件创建2个IOps .

    这个答案是基于MarkR的答案。