Performance 当文件变大时,小文件的读/写速度会变慢吗?

Performance 当文件变大时,小文件的读/写速度会变慢吗?,performance,io,filesystems,seek,ext4,Performance,Io,Filesystems,Seek,Ext4,我在使用ext4的Ubuntu 12.04上。我编写了一个python程序,它以某种随机访问模式进行小尺寸(大部分为512字节)读写。我发现随着文件越来越大。做同样数量的I/O需要越来越多的时间。这种关系是线性的。换句话说,我得到O(n2),其中n是I/O的累积数量 我想知道是否有一个内在的原因,为什么小I/O会随着文件大小的增加而变慢 还有一个观察结果:当我挂载一个ramdisk并对ramdisk执行文件I/O时,我没有观察到性能下降。根据您执行IO的方式,可能是您试图在保存它之前调用太多内存

我在使用ext4的Ubuntu 12.04上。我编写了一个python程序,它以某种随机访问模式进行小尺寸(大部分为512字节)读写。我发现随着文件越来越大。做同样数量的I/O需要越来越多的时间。这种关系是线性的。换句话说,我得到O(n2),其中n是I/O的累积数量

我想知道是否有一个内在的原因,为什么小I/O会随着文件大小的增加而变慢


还有一个观察结果:当我挂载一个ramdisk并对ramdisk执行文件I/O时,我没有观察到性能下降。

根据您执行IO的方式,可能是您试图在保存它之前调用太多内存。

当您从1024字节的大文件中读取512字节时,整个文件都在缓存中。随着文件大小的增长,缓存中的文件部分越来越小,从磁盘读取数据的频率也越来越高。也就是说,随着文件的增长,缓存未命中的次数会增加。也许这就是你正在经历的

我正在创建512字节的小数据块,并将它们立即写入文件。我的意思是n平方。-我不知道怎么在这里写上标。然后我看不出这个关系是线性的。我想这可能是因为寻找。因为我在做随机文件访问。查找所需的时间随着文件大小的增加而增加。是的,系统也不能将所有内容都保存在文件缓存中。@dividebyzero查找与硬盘不太相关。尝试在SDD驱动器上执行相同的测试以确保。