License Server Introduced! NCrunch 2.16 now available

by Remco 10. August 2015 17:00

New License Server

By popular demand, NCrunch now has a custom-built license server designed to take the pain out of license management on large sites.

The server is a web application running under IIS, and it lets you manage your licenses centrally using a web UI.

NCrunch has had client-side support for the license server since the v2.15 release.  Once your organisation has a server set up and running, all you need to do is choose to use it in your license details.



Usage of the license server is entirely optional.  If you want to work offline, you can still enter your license key just the way you used to.

For more information about the new license server, check out the documentation.


Fixes and Compatibility Improvements

v2.16 introduces a number of fixes to issues reported over the last few months.

Worth mentioning is also a significant change to the way in which NCrunch stores its cached data.  The cache file is now packed to reduce redundancy and save disk space.  NCrunch cache files can sometimes become quite large due to the massive amount of coverage data they can store.  v2.16 includes a change to the format of the cache file that reduces its size by approximately 50-60%.  This has also improved initialisation performance, as there is now less I/O involved.


New Challenges for NCrunch

The eco-system NCrunch exists in continues to evolve.  A couple of weeks ago, Microsoft officially released Windows 10.  Just prior to this, we had Visual Studio 2015 and v4.6 of the .NET framework finally hit RTM.

These new platforms bring their own unique challenges.  The good news is that NCrunch has already been integrated with VS2015 since early this year, so there's been plenty of time to work out the kinks and make sure the product works well.

However, Windows 10 and v4.6 of the .NET framework have been a bit more complicated.

Windows 10 introduced a number of changes around the way Windows Store applications interact with the UI.  Unfortunately, this has resulted in a serious regression that prevents a test runner from suppressing splash screens while it initialises Windows Store applications.  This means that if you try to use NCrunch on a Windows Store application under Windows 10, you'll be bombarded with blue ticking screens.  To date, I have found no workaround for this issue, and it also seems to affect VSTest.  I've reported the issue to Microsoft here.  If you're developing Windows Store applications, make sure you vote for this reported issue as without a fix from MS it will be problematic to support Windows Store development under NCrunch in future.

v4.6 of the .NET framework has also introduced some very interesting changes to the way the .NET garbage collector functions in x64 processes.  The changes seem to trigger excessive GC activity during certain algorithms used by NCrunch for its internal processing.  The impact is very significant - where under an x86 process the NCrunch engine could index a large amount of code coverage in about 5 seconds, this can take over 2 minutes when the engine is running under x64.  It seems that these changes are present for all versions of the .NET framework once v4.6 has been installed, so there is no avoiding them simply by switching framework.  I have so far been unable to build a self contained code sample that will surface the issue in a way that I can report it, but I believe that the issue only presents itself in very specific and complex scenarios.

NCrunch v2.16 introduces a workaround that suppresses GC activity during code coverage indexing.  This effectively allows the x64 engine to initialise itself at full speed.  My tests so far indicate that other algorithms inside the engine do not seem likely to trigger the issue, but I have still observed some unusual GC behaviour on large solutions.  If you're running on a system with .NET v4.6 installed and you notice the NCrunch engine locking up for periods of time, try changing your engine hosting strategy to x86SatelliteProcess.  This will run the NCrunch engine under x86 - where the issue doesn't seem to exist.  Hopefully this will be tracked down soon and MS will put out a fix for it.


Anyway, v2.16 is available for download.  You can also check out the full list of changes here.


*********** Update 14-Aug-2015:

Maoni Stephens (on the CLR GC Team) has posted that Microsoft are aware of a GC performance issue similar (or identitical) to the issue I've described above.  It looks like they are planning to include a fix in the next hotfix rollup for 4.6.


Comments (2) -

Mathias Lorenzen
Mathias Lorenzen Denmark
8/11/2015 12:25:48 AM #

As for the X86 working while X64 does not in .NET 4.6, could this be due to RyuJIT, which happens to only be available for the X64 flavor? Also, there has been reported a critical bug in RyuJIT which still hasn't been patched.

Remco New Zealand
8/11/2015 8:18:44 AM #

I strongly suspected this to be the case, so I disabled RyuJIT for the NCrunch engine process.  Unfortunately, the issue still seemed to exist.  It looks like many of the GC upgrades were introduced outside of RyuJIT, which is quite concerning as there is no way to turn them off.

I have seen at least one other GC performance issue reported that was related to RyuJIT though, so if you're seeing strange things happen then disabling RyuJIT would still be a good way to go.

Comments are closed

Month List

Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download