ZFS, possible to limit/control ARC size per pool ?

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

_alex

Active Member
Jan 28, 2016
866
97
28
Bavaria / Germany
Hello,
i wonder if there is a way to have more fine grained control about ARC usage than limiting arc for the whole kernel module, and therefore all pools.

Let's say i have three pools, one for the root-filesystem, the other for data and one for backup. I want the root-pool to consume a fairly low amount of arc while the data-pool should be able to consume a lot and the backup-pool something between.

I'd like to do so because there will be heavy reads on the backup pool for integrity-checks, deduplication an others. Often, more or less the whole filesystem is read.
That for sure would cause the ARC to evict data from the datapool on a regular basis. So i fear after each check/large read on the backups the arc would be occupied with quite old data from them and not the 'hot' data i want to be there.

i.e.
rpool max 4Gb ARC
datapool max 32Gb ARC
backuppool max 8Gb ARC

Haven't found a way to do this yet, and also no references how zfs balances arc between pools when there are multiple present.

Most suitable thing i came over is limiting root and backup to metadata in primary cache only (or even none) by zfs set primarycache=metadata ..

Does anyone have a better idea / some references, or is it simply not possible ?
Will be running ZoL in recent version(s).

Alex
 
Last edited: