OrientDB中的磁盘缓存如何由读写缓存分隔(百分比)

时间:2016-04-13 15:40:47

标签: caching orientdb orientdb-2.1 diskcache

我从文档中发现,如果使用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参数进行更改)
  3. 谢谢大家!

1 个答案:

答案 0 :(得分:0)

  

很明显,在读取缓存已满的情况下,它需要超过70%的磁盘缓存。

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

  

从写入缓存中获取一些空间,或者从读取缓存开始给予更多空间

写缓存和读缓存共享相同的内存空间,但部分空间专属于写缓存。

  

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

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

  

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

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