object_store_memory 和 redis_max_memory 有啥关系?
Posted
技术标签:
【中文标题】object_store_memory 和 redis_max_memory 有啥关系?【英文标题】:How do object_store_memory and redis_max_memory relate?object_store_memory 和 redis_max_memory 有什么关系? 【发布时间】:2019-10-31 15:13:18 【问题描述】:我认为我没有完全理解 object_store_memory 和 redis_max_memory 之间的关系。我最初认为 redis db 将所有对象都保存在内存中,但是如何使对象存储大小大于 redis_max_memory 大小?或者它的某些部分是否写入磁盘? RAM是如何消耗的?是RAM_CONSUMED = object_store_memory + redis_max_memory,还是它的并集?
【问题讨论】:
【参考方案1】:redis 数据库只保存关于对象和任务的元数据(即对于任务:任务依赖于哪些对象以及它产生的输出的 ID,需要运行哪个函数来产生输出;对于对象:在哪个集群中的节点是存储的对象)。 redis_max_memory
限制此数据库的大小,旧条目以 LRU 方式丢弃。
实际数据存储在共享内存对象存储中(请参阅https://arrow.apache.org/docs/python/plasma.html),其大小受object_store_memory
限制。同样,当前未映射到任何工作内存的旧对象将按 LRU 顺序从那里被驱逐。通过提供plasma_directory 参数,也可以使用磁盘备份对象存储。这允许对象存储大于 RAM 的大小,但也会使对象存储变慢,具体取决于磁盘大小和缓冲区缓存的数量。
所以是的,RAM_CONSUMED = object_store_memory + redis_max_memory
,除非您通过磁盘备份对象存储,在这种情况下 RAM_CONSUMED = redis_max_memory
。
如果您还有其他问题,请告诉我。
【讨论】:
谢谢你。 redis 数据库的合理大小是多少?如果它只保存元数据,它应该足够小吗? 我想说 10^9(字节)对于大多数工作负载来说应该足够了。任务/对象的元数据是几百字节,所以 10^9 可以让你一次存储几百万个任务/对象,应该足够了。 嗨,想知道答案,通常object_store_memory
的合理尺寸是多少?有什么经验法则吗?
我还资助了 Ray 的 driver_object_store_memory
,关于设置它的价值有什么建议吗?以上是关于object_store_memory 和 redis_max_memory 有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章