aim 如何配置RocksDB的Options.max_open_files?

rjee0c15  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(30)

你可以通过修改RocksDB的配置来避免这个问题。具体来说,你可以调整max_open_files参数以限制同时打开的文件数量。以下是如何设置这个参数的示例:


# include <rocksdb/options.h>

# include <iostream>

int main() {
  rocksdb::Options options;
  options.create_if_missing = true;

  // 设置最大打开文件数为1000
  options.max_open_files = 1000;

  // 其他RocksDB配置...

  return 0;
}

关于你的另一个问题,关于在日志音频对象时只记录路径而不是文件内容,你可以在Aim中创建一个自定义函数来实现这个功能。这样,你就可以在UI中显示音频对象,而不需要将其从文件系统复制到.aim文件夹。

nhhxz33t

nhhxz33t1#

来自RocksDB docs的附加信息:

max_open_files - RocksDB将所有文件描述符存储在一个表缓存中。如果文件描述符的数量超过了max_open_files,一些文件将从表缓存中移除并关闭它们的文件描述符。这意味着每次读取都必须通过表缓存来查找所需的文件。将max_open_files设置为-1以始终保持所有文件打开,从而避免昂贵的表缓存调用。

mefy6pfw

mefy6pfw2#

感谢hendriks73的提问和研究结果 🙌

看起来您面临的问题有多个方面。
让我们从您面临的基本问题开始,关于音频文件跟踪。我们计划添加对外部存储类型的支持。这些主要是云存储支持,但本地文件系统也是一种有效的外部存储。术语external是相对于目标存储(基于rocksdb)而言的。由于我们正在解决关键性能问题,因此已经推迟了这项工作,但您可以在这里跟踪进度 #1570#1621

至于保持.sst打开文件描述符的低级问题,保持所有文件打开旨在优化读取性能。确实,rocksdb选项应该针对每个单独的情况进行调整(不仅仅是打开文件的数量,还包括压缩选项、.sst文件的最大大小等)。我们将审查当前设置的选项并在短期内查看哪些可以进行调整。
以下设置rocksdb选项的代码:
aim/aim/storage/rockscontainer.pyx
第76行 in e5cc38a
| max_open_files=-1, |
另一个临时解决方案是实现自定义Object,它将以与aim.Audio对象相同的方式被接受,但不会复制文件内容。如果您认为这是一个选项,我可以准备仅执行此操作的代码补丁。

cigdeys3

cigdeys34#

我们计划添加对外部存储类型的支持。
听起来很棒。有预计的发布日期吗?
确实,rocksdb选项应该针对每个单独的情况进行调整。
如果可以在日志记录和命令行(或某个首选项文件)中以某种方式在aim up使用时编程设置这个功能,那就太好了。每次我尝试使用aim up时,它似乎都会使我的系统崩溃,如果仓库中有多个运行。
感谢你指出rockscontainer.pyx。我一直在寻找一个不需要深入了解aim内部的解决方案。:-)
另一个临时解决方案是实现一个自定义对象,它将像aim.Audio对象一样被接受,但不会复制文件内容。请告诉我这是否是一个选项,我可以准备代码补丁来实现这一点。
也许这是最简单的方法,而且还可以节省我大量的SSD存储空间。我想这只是一个自定义的CustomObject子类,对吧?我会用它代替Audio,但它也会在UI中显示为音频吗?

相关问题