Hi, thanks for posting.
At the moment, we don't have any facility in NCrunch that can specifically do this.
The best thing I can suggest would be to apply some concurrency constraints to the heavier tests to limit how much the engine will run them in parallel. An option would be to create several groups of tests, marking each group with a different ExclusivelyUsesAttribute value. For example, if you have 100 tests, you could mark 25 of them with ExclusivelyUses("Database1"), 25 more of them with ExclusivelyUses("Database2"), 25 more with ExclusivelyUses("Database3"), 25 more with ExclusivelyUses("Database4"). In this way, you won't get any more than 4 of these tests running in parallel on the same machine at the same time.
As I see it, the root cause is that it's possible for tests to be much more resource hungry than consuming a single CPU thread (which is kind of the assumption that NCrunch makes). An ideal feature would give you a way to assign a relative cost to each test, so the engine could shape its concurrency in a way that fits within your system resources. Unfortunately, it's quite complex for us to implement this as it involves resolving a frightful number of edge cases. Hopefully we'll get there at some stage.