Primocache Recommendations for dealing with overhead on a complex system.
Posted: Sun Aug 05, 2018 5:58 am
Hey there, I'm pretty new to Primocache and after having... complications... with Fuzedrive I decided to give this software a try as it seems a lot more malleable.
So, my setup is: Ryzen 1700, 32GB RAM
and the fun part:
1x 240GB NVME SSD for OS drive
1x 480GB NVME SSD for Cache drive
roughly 32 terabytes of data spread over 6 slow mechanical hard drives (mostly between 5400-7200RPM)
So. My OS SSD is the fastest, newest, *** drive in the system by a considerable amount, it's brand new with over 3GB/S read and 1.5 GB/s write. In short, my OS and only my OS and important files are on this drive.
My second NVME drive is slower (but still wicked fast at a supposed 2.4GB/S read speed) and it's what I want to use as my cache drive for the other 32TB of my system. It's technically in a PCI-E 2x slot instead of a 4x slot so it may be a tiny bit slower due to bottlenecking, anyway, that's not the point, it's gonna be a hell, hell of a lot faster than the mechanical drives.
So, all that space in my computer used for two main purposes. One is running a PLEX server, the second one is gaming.
So, with all that setup out of the way....
I've been trying to figure out the best way to use a cache. I need to keep roughly 20-24GB of ram usable by the system so that leaves me with 10ish gigs of ram to play around with for Primocache L1 cache.
All of my games are on a single 8TB drive.
I've tried just setting up the entire 480GB NVME drive as a L2 cache and set the entire 32TB hard drive smorgasboard as a single task in Primocache but the amount of overhead for ram use is ridiculous. 4.4GB of ram overhead for 32kb blocks, double that for 16kb blocks, for gaming I'd really like to be able to get things down to 8k or preferably 4k blocks, but I don't see any way to do that and still keep most of the 480GB space intact.
Also it attempted to use literally 100% of the space available on the drive and I want to keep at least 20% of it empty for overprovisioning and to not degrade read/write speed. Not too hard to fix this.
So I decided to break up the 480GB drive into different partitions for different things. 400GB for gaming, 20GB for plex, etc. but that leaves a LOT of the drive being unused. It does, however, massively reduce the memory overhead. I really don't need much ram for PLEX, maybe just enough to keep whatever current file is being played in the cache and it'll be good. I have no reason to fill up the cache drive with more static movie files as I don't expect many of them to be used repeatedly.
My most recent configuration is:
Cache 1: L1 cache 2GB at 4k blocks for my OS drive. Read only. Overhead for just this drive is basically nonexistant. Mostly doing this to help with wear and to reduce my boot time from a fancy 10 seconds to like, 9.1 seconds.
overhead: 250MB
Cache 2: L1: 4gigs, L2 Cache: 400GB at 16k for my game drive. Read only. Once a game is installed, it's installed and patches generally don't take that long to update. Most steam games save back on the OS drive anyway (and that's also where the main program is held.)
Overhead: 3.5GB (!!)
Cache 3: L1: 1GB, L2 Cache: 40GB at 128kb blocks for my plex server. Read/Write. Anything to help moving these files around faster is welcome, as I'm dealing with gigantic multi-gig files. However once they're in place they're pretty much set. I figure if I just COPY things instead of cut/paste I won't have to worry about data corruption in case something weird happens in transit.
Overhead: 660MB. (Ramps up ridiculously quickly, 1.3gb at 64kb, then 4gigs at 32kb, etc.)
So, this works out to 2.25+7.5+1.6 = 11.35 gigs of ram used. Which leaves me close to my needed 24gigs of ram usable, but not quite there.
Any idea where I could do some improvements or how I could better manage my space? Should I just massively short the amount of space I'm using in my cache drive and directly install games to it? (I'm actively trying to avoid this.)
So, my setup is: Ryzen 1700, 32GB RAM
and the fun part:
1x 240GB NVME SSD for OS drive
1x 480GB NVME SSD for Cache drive
roughly 32 terabytes of data spread over 6 slow mechanical hard drives (mostly between 5400-7200RPM)
So. My OS SSD is the fastest, newest, *** drive in the system by a considerable amount, it's brand new with over 3GB/S read and 1.5 GB/s write. In short, my OS and only my OS and important files are on this drive.
My second NVME drive is slower (but still wicked fast at a supposed 2.4GB/S read speed) and it's what I want to use as my cache drive for the other 32TB of my system. It's technically in a PCI-E 2x slot instead of a 4x slot so it may be a tiny bit slower due to bottlenecking, anyway, that's not the point, it's gonna be a hell, hell of a lot faster than the mechanical drives.
So, all that space in my computer used for two main purposes. One is running a PLEX server, the second one is gaming.
So, with all that setup out of the way....
I've been trying to figure out the best way to use a cache. I need to keep roughly 20-24GB of ram usable by the system so that leaves me with 10ish gigs of ram to play around with for Primocache L1 cache.
All of my games are on a single 8TB drive.
I've tried just setting up the entire 480GB NVME drive as a L2 cache and set the entire 32TB hard drive smorgasboard as a single task in Primocache but the amount of overhead for ram use is ridiculous. 4.4GB of ram overhead for 32kb blocks, double that for 16kb blocks, for gaming I'd really like to be able to get things down to 8k or preferably 4k blocks, but I don't see any way to do that and still keep most of the 480GB space intact.
Also it attempted to use literally 100% of the space available on the drive and I want to keep at least 20% of it empty for overprovisioning and to not degrade read/write speed. Not too hard to fix this.
So I decided to break up the 480GB drive into different partitions for different things. 400GB for gaming, 20GB for plex, etc. but that leaves a LOT of the drive being unused. It does, however, massively reduce the memory overhead. I really don't need much ram for PLEX, maybe just enough to keep whatever current file is being played in the cache and it'll be good. I have no reason to fill up the cache drive with more static movie files as I don't expect many of them to be used repeatedly.
My most recent configuration is:
Cache 1: L1 cache 2GB at 4k blocks for my OS drive. Read only. Overhead for just this drive is basically nonexistant. Mostly doing this to help with wear and to reduce my boot time from a fancy 10 seconds to like, 9.1 seconds.
overhead: 250MB
Cache 2: L1: 4gigs, L2 Cache: 400GB at 16k for my game drive. Read only. Once a game is installed, it's installed and patches generally don't take that long to update. Most steam games save back on the OS drive anyway (and that's also where the main program is held.)
Overhead: 3.5GB (!!)
Cache 3: L1: 1GB, L2 Cache: 40GB at 128kb blocks for my plex server. Read/Write. Anything to help moving these files around faster is welcome, as I'm dealing with gigantic multi-gig files. However once they're in place they're pretty much set. I figure if I just COPY things instead of cut/paste I won't have to worry about data corruption in case something weird happens in transit.
Overhead: 660MB. (Ramps up ridiculously quickly, 1.3gb at 64kb, then 4gigs at 32kb, etc.)
So, this works out to 2.25+7.5+1.6 = 11.35 gigs of ram used. Which leaves me close to my needed 24gigs of ram usable, but not quite there.
Any idea where I could do some improvements or how I could better manage my space? Should I just massively short the amount of space I'm using in my cache drive and directly install games to it? (I'm actively trying to avoid this.)