3

我从文档中发现,鉴于 orientdb 100% 使用磁盘缓存,它使用最大大小为 70% 的读取缓存和 30% 的写入缓存(http://orientdb.com/docs/last/plocal- storage-disk-cache.html#interaction-between-read-and-write-caches)。

阅读有关读取缓存的更多信息,它被 3 个队列划分:a1in、a1out 和 am,它们的最大大小分别为读取缓存大小的 25%、50% 和 75%(http://orientdb.com/docs/last/ plocal-storage-disk-cache.html#queue-sizes)。

很明显,在读缓存满的稳定状态下,读缓存需要70%以上的磁盘缓存。这是如何处理的?从写入缓存中占用了一些空间,还是从一开始就将更多空间分配给了读取缓存?

另外,我想确定:

  1. 所涉及的“磁盘缓存”是普通磁盘(HDD 或 SDD)中包含的 RAM,而不是机器的 RAM;
  2. orientdb使用的磁盘缓存的默认空间是100%,在第一个链接中写到(可以通过storage.diskCache.bufferSize参数改变)

感谢大家!

4

1 回答 1

0

很明显,在读缓存满的稳定状态下,它需要70%以上的磁盘缓存。

并非读取缓存中的所有队列都包含加载的数据。消耗 50% 磁盘缓存大小的 a1out 队列仅包含有关在 a1in 队列中加载的页面的信息。所以这个队列包含所谓的“幽灵条目”,实际上并不影响磁盘缓存内存消耗。需要这个队列来提供额外的统计数据来克服简单 LRU 缓存的缺点。

从写入缓存中占用一些空间,或者从一开始就将更多空间分配给读取缓存

写缓存和读缓存共享相同的内存空间,但部分空间独占写缓存。

所涉及的“磁盘缓存”是普通磁盘(HDD 或 SDD)中包含的 RAM,而不是机器的 RAM;

我们使用服务器的 RAM,不使用 HDD 缓冲区。

orientdb使用的磁盘缓存默认空间为100%

它在数据负载高的情况下 100% 使用,否则现在 15%(不是文档中所述的 30%)仅用于写入缓存,因此在没有高数据负载的情况下不使用。

于 2016-04-18T15:20:44.023 回答