2

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

我的第二个最佳想法是连接文件并使用它。但这不是微不足道的。

有更好的解决方案吗?

注意:我需要避免程序中的依赖,甚至是 Boost。

4

2 回答 2

2

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

在有足够可用空间的磁盘上,最简单的方法是改为读取 tar 存档。

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

您可以使用该工具

  1. 分析软件的正常运行
  2. 编辑访问的文件的 lsit(由预读检测)

然后,您可以使用该文件列表调用 readahead(它将按磁盘顺序对文件进行排序,以便最大化吞吐量并最小化查找时间)

不幸的是,我已经有一段时间没有使用这些了,所以我希望你可以谷歌搜索相应的包

这就是我现在似乎发现的:

sudo apt-get install readahead-fedora

祝你好运

于 2011-06-18T16:00:28.480 回答
1

If your files are static, I agree just tar them up and then place that in a RAM disk. Probably be faster to read directly out of the TAR file, but you can test that.

edit:: instead of TAR, you could also try creating a squashfs volume.

If you don't want to do that, or still need more performance then:

  1. put your data on an SSD.
  2. start investigating some FS performance test, starting with EXT4, XFS, etc...
于 2011-06-18T19:34:46.940 回答