I think it would be safe to say that Shared Cache in App-V 4.6 was not the most popular solution for reducing the impact of App-V cache on client machines. From VDI to RDS, people didn’t want to duplicate the potentially huge sftfs.fsd cache file across their disks and consume unnecessary space. The Share Cache solution was a way around this however it could prove to be hard to manage when trying to update a centrally located cache file to which multiple machines had a handle to.
Shared Content Store in App-V 5.0 allows us to stream directly from a content source without having to stream the package to the local platform. The great thing is App-V 5.0 packages now use a flat file format and are no longer stored collectively in a single cache file, which means we no longer have the read only challenges we faced with the Shared Cache solution in App-V 4.6 when it comes to updating applications and replacing the cache.
By default when a App-V 5.0 package is published to the client it is stored in a flat file format in %PROGRAMDATA% as shown below where we can see a WinRar package:
You will notice the size on disk matches the file size, this package is currently cached locally on this machine.
However if we enable Shared Content Store we can choose not to hold these files locally and instead stream from the content source directly. We can enable this setting during installation by using the following switch for installation: appv_client_setup.exe /SHAREDCONTENTSTOREMODE=1 /q
We can also enable this setting after installation by using PowerShell:
Set-AppvClientConfiguration -SharedContentStoreMode 1
Or we can use this simple registry change on the client as shown:
After a reboot of the client, next time we publish an application, it no longer downloads the entire package but instead creates NTFS pointers to the files which only consume 4KB on disk:
You will notice the change in icons for the App-V WinRar package files also indicating that these are sparse files which actually do not contain the data locally. The package will now utilise the original stream location for these files to run the application without ever having to download them locally to disk. A very small percentage of package files will always have to stay local however such as icons and metadata, this is called the publishing feature block, read more about it here.
So that is a quick overview of Shared Content Store in App-V 5.0, click here for a deeper look into how this great feature works.
Is management server required to use shared content store?
There is no dependency on the management/publishing server. Along as the client has the relevant registry key set and it has an accessible location for the package assets, it will be able to utilise shared content store. Hope that helps!
Ok i did some testing.... This works with standalone scenario... Cool:)
Is there any performance lose if Shared Content Mode is enabled? Like longer loading time and slow response.
Good question Kenshinvc, there are no official performance stats published yet but on a low bandwidth/high latency network I can imagine there definitely would be an impact . This feature however is more geared to the datacentre solutions such as RDS and VDI where we would expect fast attached storage and good network connectivity, in such scenarios I don't see this as being a concern or at least no more than shared read only cache in App-V 4.6.
Good blog and informative nice one mate!
Ok, what am I missing here. I want to bypass the management and publishing server altogether and just use a share content store. I installed my client and set the registry to HKLM\Software\Microsoft\Appv\streaming\SHAREDCONTENTSTOREMODE=1
I created my packages and put then in a packages share (ensuring everyone had read access)
How do I set the location of where the actual packages are? Is that the PackageInstallationRoot String? I set that to \\servername\packagesharelocation but my client is still not picking up any packages, even after restarting the client service. Any help would be greatly appreciated. Thanks!
If by bypass the management and publishing server you mean you don't want the infrastructure involved in the delivery on the app then you want to use standalone mode to publish the app as described here: blogs.technet.com/.../app-v-5-0-standalone-mode-adding-and-publishing-a-package.aspx
The -Path argument will specify where the client can retrieve the content on aper app basis and because you have put your client into SCS mode it will simply stream the content directly from there and not attempt to bring it locally.
The PackageInstallationRoot you mentioned in registry has nothing to do with where you will stream packages from but where they get stored locally in cache. This should be left as the %ProgramData%\App-V location unless you have a specific reason to change it.
Hope that helps and let me know how you get on...
If we are enabling the SCS then user has to stream the application directly from the content source. Suppose multiple users are using the content source at the same time. will there be any performance issue.
Hi Surrender, we use the intelligence of Windows memory management to reduce that load in terms of RAM in the case of multiple users running the same application. in terms of the data itself, this solution would primarily be used in data centre environments where there is fast attached storage.
In a mixed environemnt scenario with the desktop client and the RDS client is it possible to point the RDS client to a local content source, I am thinking a disk near the XenApp servers, would the PackageSourceRoot in the RDS client pointing to the local disk mean that with shared content mode enabled the files would be streamed from the local disk regardless of the original publishing location? (I have seperate content stores for the desktop clients).