Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Remote server: Why 5 task runners in a 2-task-defined environment?
GreenMoose
#1 Posted : Tuesday, April 15, 2014 2:26:26 PM(UTC)
Rank: Advanced Member

Groups: Registered
Joined: 6/17/2012(UTC)
Posts: 503

Thanks: 142 times
Was thanked: 66 time(s) in 64 post(s)
v2.6.0.13

I have a grid node on Azure (2 core) set up to use 2 processing threads and 1 test runner process to pool. Engine is idle.
[img=(- BROKEN LINK -)]Resource Monitor[/img]

(NCrunch Engine is idle and so is the cpu on the Azure machine)

How come I have 5 task runner processes running, in addition to the grid node service? (I expected 1 process upon idle machine, the pooled one..)

When NCrunch is not idle I seem to have 6 task runner processes (one additional nCrunch.TaskRunner45.x86.exe,).

Thanks.
Remco
#2 Posted : Tuesday, April 15, 2014 11:48:48 PM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 6,982

Thanks: 931 times
Was thanked: 1257 time(s) in 1170 post(s)
NCrunch uses two process pools - one for build processes, and one for test processes.

The max effective build process pool size is always set to the max number of processing threads setting.

The max effective test process pool size is equal to the process pool size setting, plus the max number of processing threads.

This means that in your situation, the max number of task runners you can see when the engine is idle will be: 2 [max processing threads for build pool] + 2 [max processing threads for test pool] + 1 [process pool size] = 5.

The grid node also keeps a separate process pool for each active connection. So if you opened two instances of Visual Studio pointing at the same node, you'll see up to 10 task runners operating on the node at any one time.

I admit that this isn't probably the behaviour many people would expect when looking at these configuration settings. The formula for calculating process pool size has changed several times throughout NCrunch's lifespan. The current approach seems to work well for reducing unnecessary process recycling, while still giving some level of control over memory consumption.

In theory, it should be possible to set the process pool size to a negative value, thus offsetting the effect of max processing threads. However, I would recommend against this as your performance will probably fall through the floor. If memory consumption is a concern, there are more effective ways of reducing this through the other configuration settings.
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

YAF | YAF © 2003-2011, Yet Another Forum.NET
This page was generated in 0.023 seconds.
Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download