Setting Priority of Service with Flash Cache


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



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.


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



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


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.


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?




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


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?


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


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?


Do you have access to download the tech report I listed?

Sent from my iPhone 5


Hi Scott,

yes, I am currently reading it. so hear my scenario here.

What I would like is to cache all volumes, however I want certain volumes data to stay longer in the flash cache. I know it is a first in-first out in the cache. But base on what I am reading, you have to choose metadata option and then pick and choose the QoS for the volume you want to stay in cache.

I guess I am also confuse as to what metadata is vs userdata. I am reading the definitions but still not clear.