Jan 18, 2013 4:00 AM
A little about my environment. We run TeamCity 7.1.1 on Windows Server 2003 and have about 20 build agents, mostly Windows 7 x64 VMs. We run the build agents in the console.
I've been encouraged to optimize our build agents in order to deliver faster builds and to provide a better CI environment. I determined our disk system might be a bottleneck and started playing around with putting the build agent working directories on RAM disks and SSDs. I saw some improvements, 10 - 15% faster times, however I still wasn't getting the performance I thought I should.
Investigating what processes might be consuming I/O from the builds, I noticed that the java.exe process for the build agent was running with its Base Priority (CPU) set to "idle" and its I/O priority set to "very low". I saw this using a couple different process monitors such as ProcessHacker and Process Lasso. After increasing the Java process base and I/O priorities to "normal", build times descreased substantially. I've included an example of the build times for one of our configs: