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:
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?
Thanks in Advance
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
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:
What does this mean?
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.