From Tableau Server Processes :
A query cache distributed and shared across the server cluster. This in-memory cache speeds user experience across many scenarios. VizQL server, backgrounder, and data server (and API server and application server to a lesser extent) make cache requests to the cache server on behalf of users or jobs. The cache is single-threaded, so if you need better performance you should run additional instances of cache server.
I believe the general rule of thumb is to scale up before you scale out. Scaling out introduces more potential for network latency but it provides redundancy.
Hope this helps!
my understanding is that there are multiple levels of cache.
Query cache - Shared across vizql processes via the cache server
Model and image cache - specific to each vizql process. And its hit or miss as to whether a report hits the same vizql or not
John, do you have any rule of thumb better than a vizql process for each 4 cores? I heard at one time 50 concurrent threads per vizql, but I'm not sure if this still holds true.