Setting Priority of Service with Flash Cache

[ Edited ]

Here’s a tip for anyone who would like to control what goes into and is kept out of Flash Cache.


By default, Flash Cache will cache reads of WAFL metadata and user data for all volumes behind the storage controller. You have the option to cache user data for some volumes and exclude user data for others. (WAFL metadata will always be cached for every volume).


The trick is to use FlexShare quality-of-service feature in combination with Flash Cache. In the Normal (default) and Low Priority modes of Flash Cache operation you can deny caching on a volume by volume basis. Conversely, in the Metadata mode you can enable the caching of user data on a volume by volume basis.


For more information, including the FlexShare commands to use, see TR-3832 Flash Cache and PAM Best Practices Guide. Section 3 of this technical report has the details you will need to know.  Here’s a link to this report:




Mark Woods

Re: Setting Priority of Service with Flash Cache

And a new tip it is... considering that the TR was issued 16 months ago...

I don't know how widely "FlexShare" is in use, but I have found it to be very useful even with less loaded systems. Without actually having done a thorough scientific analysis, I find that it sort of evens out the bumps and spikes on the I/O "road".  It adds a nice complexity to I/O scheduling that works very well for multi-purpose (the marketing droids call it "unified storage") filers.  I've advised its use here in the communities a few times to solve performance situations.

Anyway, good to see that someone at NetApp is sacrificing their Sunday.

Re: Setting Priority of Service with Flash Cache

I have a few questions related to Flash Cache and setting priority?

  1. Is it better to set priority on every volume on a filer, or just a higher priority on the volumes you want to keep in cache?
  2. What performance impact will this have on the controller as a whole, especially the "lower" or "normal" priority volumes?
  3. Is there a way to dedicate an amount to keep in cache in as a percentage of the whole cache available for different volumes?
  4. Where can I find the most up-to-date info on setting priorities and using Flash Cache, or is TR 3832 the most current doc?

Thanks in Advance


Re: Setting Priority of Service with Flash Cache

I see how to set priority on a volume, how does one "unset" priority, or set it back to normal?

Re: Setting Priority of Service with Flash Cache

You're not required to set the priority for every volume and it may make more sense to change the system default for caching if you find yourself setting the vast majority of volumes.  Volumes that do not have a specific caching policy set will use the default system setting as determined by the flexscale options.  This is also the way you can "unset" a priority, but setting cache=default (as opposed to reuse or keep).  There's no way to keep a specific percentage of cache devoted to a specific volume or volumes.  The options you set allow you to control the data that gets put into the cache, but the amount of cache that's used by a specific volume is determined by the workload characteristics.  One can think of Flash Cache as a system-level component, similar to the WAFL main memory cache.

TR-3832 is the most current doc and may continue to be updated if necessary for future Data ONTAP releases.

Re: Setting Priority of Service with Flash Cache

ok, I am somewhat confuse with flexscale and flexshare.

Right now we have lopri_blocks on using the flexscale options. However I want certain volumes to never leave the cache. Do I use flexshare for this? how do I achieve this?



Re: Setting Priority of Service with Flash Cache

TR-3832 gives examples of using this..

To enable FlexShare at the command prompt, type:

> priority on

If you only want the caching of FlexShare enabled (if you intend to use all FlexShare functionality do not

perform this step), also type:

> priority set enabled_components=cache

Once the components are enabled, you have two options to combine with the PAM caching mode:

> priority set volume Vol1 cache=keep

Re: Setting Priority of Service with Flash Cache

I am confuse with that line that says if I only want caching? What does that mean. Isn’t flexscale the one that set ups caching, either metadata, normal or lowpriority?

Re: Setting Priority of Service with Flash Cache

when I type “priority show” this is what I see.

filer> priority show

Priority scheduler is stopped.

Priority scheduler system settings:

io_concurrency: 8

enabled_components: all

What does this mean?

Re: Setting Priority of Service with Flash Cache

Flexshare can be used to turn on or off per volume. So if most volumes except a few need cache them enable it and use flexshare priority to disable on the volumes you don't want to cache. Or vice-versa to turn off the flex scale and enable on volumes that need it.

Sent from my iPhone 5