RAMbo wrote:L2 cache is not persistent between reboots.
You can tell it to be persistent if you setup the Cache Task as read/write. It will hold a "copy" of what it's written out and stay as full as it can at all times, and you can tell it to reload that cache at boot time. Simply turn off the "Free Cache on Written" feature, so it holds contents even after writing.
RAMbo wrote:How often is the data written back to the medium it's cached from? Is it
the same time as the deferred setting for L1?
The write cache can be set to use different algorithms. Both the L1 and L2 use the same algorithm inside the same cache task. Click the "Advanced defer write options" icon to the right of the time dropdown and read about the different options. These work directly with the write time you choose in that dropdown to control how often and how aggressive the L1/L2 write out.
RAMbo wrote:L1 cache is 200MB
L2 cache is an SSD
If I'm working on a 50MB file I assume that takes place in L1 cache. Right?
What happens if I work on 1GB file?
Is it moved to L2 as a whole? Or just active blocks?
If the access to that 1GB files is very random (say a database) what
happens then? No caching at all?
If you had previously read it into the L1 so it was already there, yes. If not, then when you loaded the file it would load it into the L1, so the next access of the data was available for it there. Note: there is some "weighing" of the data accessed - Primocache tries to keep the most often accessed data in the cache at all times.
The same applies to a 1GB file - if it's already in the cache, part will reside in the L1, and part in the L2. If the L1 can't hold the entire file (as in the case of a 1GB file with your settings), then the remainder will try to be placed in the L2. It's always a case of either the most recently accessed blocks, or the most frequently accessed blocks - Primocache determines what's appropriate.
If it was a 1GB database with frequent randomly accessed areas of the file, those blocks would be held and given priority over less frequently accessed cache data. There's no way to pre-load a file or folder currently however, it's been asked for as a future feature.
RAMbo wrote:Like everyone I like speed, but at what cost does it come? I have
frequent automatic backups scheduled and I don't want missing or corrupt
files because FancyCache is doing 'something'.
I use the following .bat file script with my backup software to temporarily pause Primocache, flush any deferred writes, preserve the current data in L1/L2, run the backup, then un-pause Primocache and reset caching statistics so they aren't affected by backup activity:
Code: Select all
rxpcc pause -a -s
timeout 10
cd "C:\Program Files\Macrium\Reflect"
Reflect.exe -e -w "C:\Users\username\Documents\Reflect\My Backup.xml" -full
timeout 10
rxpcc resume -a -s
timeout 5
rxpcc perf -a -r -s
RAMbo wrote:I'm planning to buy a SSD that I'll use as L2 cache only.
How big should that SSD be? Is there a rule to roughly calculate the best size?
I like to have a L2 that's no smaller than 10% of the actual data on the drive, but I also like high hitrates, so even 5% may be enough for a L2. That means if you want to cache 10TB of data with a L2 SSD, you'd want to give Primocache a 1TB SSD. If you're only caching 500GB of data, then a 50GB L2 volume would be enough. If you can handle a slightly lower hitrate, even a 25GB volume to cache 500GB of data may be enough, though I always try to give it as much as possible. It works best when it has "room to breathe".
RAMbo wrote:I also would like to know how the L2 works.
AMD's StoreMI gives a great speed increasement in both read and write. But it does so by moving frequently used files from HDD to SSD.
I don't like that because it makes backups more complex because I don't know where the files are.
Does PrimoCache L2 work in a similar way?
Primocache works completely on a "block" level with the disk (pieces of files). On a read/write Cache Task, anything that's written to the drive passes through the L1/L2 first, then is written out to the disk based on the time and strategy you defined when you set up the Cache Task. Anything that's read from the disk, Primocache checks the L1/L2 first to see if it's there, and if it is you get super fast access. If it isn't there already it fetches it from the drive and places those blocks in the L1/L2 for subsequent fast access. It always tries to keep the cache(s) as full as possible, to get the highest hit rates. It is fully transparent and doesn't mess with files/locations at all. It will never move a file, or alter it's contents beyond what
you do with the Operating System (copies/moves/edits/deletes). And it can be set to prefetch at boot time, further increasing the speed of applications/files accessed after. It always works with copies of blocks of data, never moving the actual data into/out of the caches.