Common Application Streaming question:
How much data lands in the execution cache compared to what is captured at profiling?
My quick answer to this question is 25 to 30% of the captured content will land on the execution machine at runtime. A more correct answer is … “it depends”. People like numbers and they need numbers, so we give them numbers. Statistics though can be misleading. Are they good numbers? Sure, absolutely! Read more to understand some of the complications.
To get it started, this is the wrong question.
What people really want to know is how much disk space is used to deliver this application via Application Streaming as compared to delivering it via local install? Answer: 35.6%. Again, read on for more details because the real cost is a bit lower than this number and gets back to that 30% space, or the real cost is quite a bit higher than this number depending on whether you’re going to go offline or not.
The selection of the application here greatly changes the outcome of the question and deliverying for OFFLINE really changes the calculation. First, consider online execution. If the application has only a few files, all of which are accessed at runtime, then the isolation system will populate 100% of what was profiled. By contrast, if the application has thousands of files, most of which it never accesses, then the answer approaches zero.
The key point is that files are brought in when they are ACCESSED. If they are not accessed, the isolation system LIES to the application to tell it that the stuff is present when it really isn’t. When it isn’t, it doesn’t use any disk space and it doesn’t occupy any network time being copied in from central strore.
It is amazing to watch how much stuff applications install that they NEVER, EVER reference.
The measurements that follow are taken from my primary notebook machine, running non-release Windows 7 RC1, with Citrix Application Streaming, non-released development “tips” build from about 2 days ago that flunked build test, but which seems to be working pretty good for me. I’m connected to the “showcase” farm inside Citrix, which is where we put the stuff that isn’t released yet to “use what you sell”. Hundreds of people using this by the way. I’m running a non-release and pretty current PNAgent which I haven’t changed since before Synergy conference. This is about as “stable” an environment as I get. Other than these items, my environment is pretty typical and should be fine for statistics.
Why Microsoft Office 2007? Answer: It’s a really big application and everyone understands it. Is it an example of a typical application? I’m not sure, but it is sure an excellent testcase for proving out an isolation system.
Framing the problem
There’s more to it than what gets populated into the execution cache; offline/deploy and online are also part of the equation. If the execution is “stream to server” then there’s no need to deploy a copy of the execution image on the execution machine. Disk space usage will be optimal, the low number.
For “stream to client”, offline will be common, so disk usage will be higher as you have to store a COPY of everything that is on the Application Hub that supports your execution. This storage though is a compressed version of what was captured at profiling, so it is reduced in size and you only get a copy the execution target that is right for your machine, so the size used for deploy will often be less than the disk space used on the server that stores the execution content.
Our showcase farm is consuming 27.2 GB of disk space to store MS Office 2007, on the server. Much of this is wasted space because no house cleaning has occured. There are for example 5 version of the execution target stored which support Vista/Windows 7 and there only needs to be 1. My admin could save 80% of this disk space and nobody would notice. By spending the disk though, he retains the ability to perform rollback.
Deploy: 1,161,958,306 bytes.
Notice this is a WHOLE bunch smaller than on the App Hub. I’m pretty sure our admins flush out the old stuff to help keep this number small, but even if they don’t, I format and reinstall machines often enough that this doesn’t come up. The deploy location though is COMPRESSED. We install everything and a bunch more when profiling for the showcase farm. The expanded number for the size of the packaged MS Office is 2,125,243,930 bytes.
RadeCache populated execution space = 321,401,139 bytes.
Drum roll for the math
Online: 321,401,139 / 1,161,958,306 = .2766 = 28% OR
Online: 321,401,139 / 2,125,243,930 = 15% (That’s a nice statistic!)
Offline: (321,401,139 + 1,161,958,306) / 1,161,958,306 = 128%
Did you just say that offline streamed uses MORE than locally installed? Yes. We made a conscious decision for this actually. The extra disk usage allows online and offline streaming to be largely the “same” from the view of the isolation engine. Technically, this is called “deployed” or “not deployed”.
Compare to locally installed.
I had to struggle, but I found a Citrix PM who is still has MS Office 2007 locally installed where I could get some numbers. His machine has 904MB, 904,155,136 bytes consumed. Notice that this is smaller than the 1.1GB that is in the CAB file that our showcase farm has. This is expected. Our build has some other stuff added beyond the base MS Office and also was profiled with the of MS Office install selections, selecting “everything”. Among the nuggets that are “extra” in the profile are a full copy of Mozilla Firefox. I’m not sure what it’s doing in there, but adding these things does make the profile grow.
Using these “common user” numbers for locally installed and comparing to the showcase MS Office 2007 profile, we can calculate a second statistics.
Online vs common user: 321,401,139 / 904,155,136 = 35.6%
Offline vs common user: (321,401,139 + 1,161,958,306) / 904,155,136 = 164%
Fascinating numbers. What good do they do me? I’m not totally sure. If you operate on the theory that streamed delivery will use about the same disk space as installed delivery, you’re in the right ballpark.
Product Architect – Application Streaming