MSIX Performance

MSIX AppAttach and Performance

While we are all pretty excited about the upcoming MSIX AppAttach, it is still pretty new.  Now in preview for WVD, we can also use PowerShell scripting to try it out on local machines.  But is the performance as good as we have heard? Here is an early look at it.

Performance, in this case, is all about dynamic application publishing performance.  On a non-persistent (or semi-persistent, multi-user) OS, how long does it take to deliver the applications to a user post-logon?

MSIX doesn’t do streaming, like App-V does (but is does have a cool single-instance story for another day), so deploying MSIX packages today requires the entire compressed file to be brought down from a network share, decompressed, and stored to disk for app publishing to complete.

MSIX AppAttach uses a different approach.  The MSIX packages are decompressed into individual VHD files that sit up on the network share.  These vhds are mounted to a per-user folder on the client system, a symlink is created, and then a special “Staging” is done using the PackageManager, and then finally a “Register” action is done to complete the publishing.

I took a set of 25 enterprise applications, and packaged each into a Microsoft App-V 5 package and then a MSIX package. I then converted the MSIX packages into the 25 VHDs.

I tested the 25 App-V packages , separating out times for the Add-AppVClientPackage and Publish-AppVClientPackage cmdlets. The App-V packages were packaged using the standard small publishing block that you would use for this scenario, and the App-V client was configured in SharedContentStore mode.

I also tested the 25 MSIX packages, using the Add-AppXPackage cmdlet.

And then I tested the 25 AppAttach packages using PowerShell borrowed from Macin Otorowski’s excellent MSIX Hero application, separating out times for the “staging” (mounting the VHD, creating the symlink, and staging using PackageManager) and “register” (Add-AppxPackage using the -Register option).

The file sizes on the network share were interesting.  On average the App-V and MSIX packages were virtually the same size (0.06% variation measured).  This isn’t too surprising given how similar their format is.  Historically, we know that we get on average between 2 to 2.5x compression in these formats. The VHD files averaged only about 16% larger, which surprised me as I thought that the VHD was not compressed, but clearly it is.

The table that follows shows the average time to “publish” the applications.  As both App-V and AppAttach avoid bringing the bulk of the application down during publishing, they operate much faster than straight MSIX.  This is a trade-off for runtime performance, as the apps need to come down to run, but the user can start working much sooner, and probably only uses 2 or 3 of the apps assigned to them during any given user session. But at 18.8 seconds per application on average on my test systems, I probably don’t want to wait for that every time I log onto a system!

Publishing Time in seconds/application.

MSIX AppAttach was 2.2x the time for App-V (2.57seconds versus 1.17). Given the uproar over how much longer App-V 5 takes to publish over what App-V 4.6 did, this is still significant.

Fortunately, the AppAttach is only a preview at this point, and hopefully when we get a real management capability it will be able to perform quicker by eliminating all of the PowerShell.

Runtime performance has not been analyzed at this point. I’m sure I’ll eventually get to that once we have a real product to work with.