L1 vs VMM, page file, metadata database
Posted: Mon Jul 05, 2021 8:42 am
Greetings!
I have recently discovered PrimoCache and have not yet started an evaluation, but after reading the available use cases, guides and this forum, I have three initial questions:
1. L1 cache vs. Windows Virtual Memory Manager.
The VMM normally caches backing file accesses using the Standby memory pool, sizing it automatically depending on memory pressure. It appears that PrimoCache's L1 cache duplicates this built-in functionality.
If I understand correctly, the L1 cache memory pool is useful to increase write IOPs and write bandwidth, in combination with deferred writes.
Is it correct that if I'm not interested in improving write IOP + write bandwidth, I should set the Level-1 cache at minimum, and let the OS cache I/O while taking into account memory pressure?
2. Page file handling
Since PrimoCache operates at block level, does it mean it will cache blocks of the page file, if the page file is placed on a cached partition? If the page file were to become heavily thrashed, its contents would be frequently read, leading to the naive interpretation that it should be cached (in memory, thus further increasing the thrashing, and/or on SSD, thus unnecessarily wearing it out). Is there a special case handler for the pagefile whereby it is never a caching candidate?
I can put the pagefile on a separate, uncached partition, but then I miss out on the auto-sizing feature of windows, since page file partition size would be fixed at creation time.
3. Metadata database maintenance
I assume that PrimoCache keeps a database (on the cache volume) of LRU data which is used in deciding how the cache is allocated. How is the LRU data maintained? Specifically, what mechanisms are in place to prevent a stream of LRU data being continuously updated, causing erase cycle wear and tear on the cache drive?
Is it possible, or are there plans to enable LRU updates only when the cache hit rate drops below some threshold? Ie, freshen the cache only when I/O performance drops, rather than continuously?
Thank you kindly
I have recently discovered PrimoCache and have not yet started an evaluation, but after reading the available use cases, guides and this forum, I have three initial questions:
1. L1 cache vs. Windows Virtual Memory Manager.
The VMM normally caches backing file accesses using the Standby memory pool, sizing it automatically depending on memory pressure. It appears that PrimoCache's L1 cache duplicates this built-in functionality.
If I understand correctly, the L1 cache memory pool is useful to increase write IOPs and write bandwidth, in combination with deferred writes.
Is it correct that if I'm not interested in improving write IOP + write bandwidth, I should set the Level-1 cache at minimum, and let the OS cache I/O while taking into account memory pressure?
2. Page file handling
Since PrimoCache operates at block level, does it mean it will cache blocks of the page file, if the page file is placed on a cached partition? If the page file were to become heavily thrashed, its contents would be frequently read, leading to the naive interpretation that it should be cached (in memory, thus further increasing the thrashing, and/or on SSD, thus unnecessarily wearing it out). Is there a special case handler for the pagefile whereby it is never a caching candidate?
I can put the pagefile on a separate, uncached partition, but then I miss out on the auto-sizing feature of windows, since page file partition size would be fixed at creation time.
3. Metadata database maintenance
I assume that PrimoCache keeps a database (on the cache volume) of LRU data which is used in deciding how the cache is allocated. How is the LRU data maintained? Specifically, what mechanisms are in place to prevent a stream of LRU data being continuously updated, causing erase cycle wear and tear on the cache drive?
Is it possible, or are there plans to enable LRU updates only when the cache hit rate drops below some threshold? Ie, freshen the cache only when I/O performance drops, rather than continuously?
Thank you kindly