|
|
|
[
Permlink
| « Hide
]
Mike Roberts [10/Aug/05 09:18 AM]
Nice idea, though as you say getting this into NAnt would be a higer priority for you.
While I agree that NAnt should also have a priority attribute for executed commands, I think CCNet needs this regardless since NAnt is not the only way to execute process tasks. We should be able, for example, to start a Devenv task directly with a specified priority.
Anyway, the fix is rather simple: 1. Added a Priority field to ProcessInfo 2. ProcessExecutor tries to set priority after it starts. I say try because you cannot set the priority before the process starts and I have not found a way to start the process in a suspended state. This leaves the possibility that the process would have ended before we could set the Priority which would draw an exception. The exception is simply ignored. 3. Added a <priority> property to DevenvTask, ExecutableTask, MsBuildTask, NAntTask & NUnitTask. BTW, I deployed this on my build machine and got ramatic results. I have 2 projects set up for the same product: 1. An incremental build - Should take about 4 minutes if no changes were made 2. A Daily full build - Whould take about 1:15h when running alone. Before priority was introduced, if both builds were running together competing for resources, the incremental build would take 20 minutes (4X) and the full build would take 2 hours (!!!) for a total of 2:20h. With priority set to BelowNormal for the incremental build and Idle for the full build, the build times are remarkably almost identical to what they are when running alone. This is because the full build all but pauses when the incremental build is running . The combined total for both is now down to about 1:20h which is just about a full hour savings in machine time. Heck of a lot cheaper than buying another build machine... Unit tests includes All UT passed Updated priority.patch to 1.5 and added the priority property to all BaseExecutableTask children
Update update version of the patch, to actually set the priority on process execution.
Also added the NUnit task, which is not a BaseExecutorTask. Refresh patch against current HEAD (with fixed whitespace issues)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||