我想知道创建一个空文件需要多少次I / O操作(iops)。我对linux和GFS文件系统感兴趣,但是其他文件系统信息也非常受欢迎。
建议如何准确衡量这一点也非常受欢迎。
真实场景(答案请求):
代码:
int fd = open("/my_dir/1/2/3/new_file", O_CREAT | S_IRWXU);
// assuming fd is valid
fsync(fd);
答案 0 :(得分:1)
对于人工测量:
当然这是非常不现实的,因为如果你创建了两个文件而不是一个文件,你可能会发现它们的数量不到两倍。
同时创建空文件或空文件是不现实的 - 因为它们没有做任何有用的事情。
目录结构(目录有多深,有多少条目)可能有所贡献,但也有多么碎片化和其他任意因素。
答案 1 :(得分:0)
这个问题的答案的性质是;最好的情况,正常情况,最坏的情况。没有单一的答案,因为所需的IOPS数量将根据文件系统的当前状态而变化。 (原始文件系统是非常不现实的情况)。
以FAT32为例,最好的情况是1.正常情况取决于文件系统碎片的程度和新文件的路径名的目录深度。更糟糕的情况是无限制的(除了文件系统的大小,它限制了创建文件的最大可能IOP数量。)
实际上,除非您定义特定的文件系统方案,否则问题无法回答。
答案 2 :(得分:0)
我做了以下测量,我们编写了一个应用程序,按照问题中的描述创建N个文件。 我们在专门用于此应用程序的磁盘上运行此应用程序,并使用 iostat -x 1
测量IOps数量结果,在GFS和Linux内核2.6.18上,每个文件创建 2 IOps 。
这个答案基于MarkR答案。