Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux上加速读取一组固定的小文件?_Linux_Filesystems_Ramdisk - Fatal编程技术网

如何在linux上加速读取一组固定的小文件?

如何在linux上加速读取一组固定的小文件?,linux,filesystems,ramdisk,Linux,Filesystems,Ramdisk,我有10万个1kb的文件。还有一个读取它们的程序——它真的很慢。 我提高性能的最好办法是将它们放在ramdisk上。 但这是一个脆弱的解决方案,每次重启都需要重新设置ramdisk。 (而且文件复制也很慢) 我的第二个好主意是连接文件并使用它。但这不是小事 有更好的解决办法吗 注意:我需要避免程序中的依赖项,即使是Boost。您可以通过将文件连续存储在磁盘上来进行优化 在有足够空闲空间的磁盘上,最简单的方法是读取tar归档文件 除此之外,还有/曾经有一个用于“readahead”的debian包

我有10万个1kb的文件。还有一个读取它们的程序——它真的很慢。 我提高性能的最好办法是将它们放在ramdisk上。 但这是一个脆弱的解决方案,每次重启都需要重新设置ramdisk。 (而且文件复制也很慢)

我的第二个好主意是连接文件并使用它。但这不是小事

有更好的解决办法吗


注意:我需要避免程序中的依赖项,即使是Boost。

您可以通过将文件连续存储在磁盘上来进行优化

在有足够空闲空间的磁盘上,最简单的方法是读取tar归档文件

除此之外,还有/曾经有一个用于“readahead”的debian包

你可以用这个工具来

  • 配置软件的正常运行
  • 编辑已访问文件的lsit(由readahead检测)
  • 然后,您可以使用该文件列表调用readahead(它将按磁盘顺序对文件进行排序,以便最大限度地提高吞吐量并最小化查找时间)

    不幸的是,我已经有一段时间没有使用这些软件了,所以我希望你能用谷歌搜索到resepctive软件包

    这就是我现在发现的:

    sudo apt-get install readahead-fedora
    

    祝你好运

    如果你的文件是静态的,我同意只需对它们进行焦油处理,然后将其放入RAM磁盘。直接从TAR文件中读取可能会更快,但您可以对此进行测试

    编辑::您也可以尝试创建卷,而不是TAR

    如果您不想这样做,或者仍然需要更高的性能,那么:

  • 将数据放在SSD上
  • 开始研究一些FS性能测试,从EXT4、XFS等开始