编译服务器的硬盘驱动器/内存configuration?

我有一个工作站,3人login编译源代码。 我们的项目由大约1000个文件和GCC编译到〜200MB .elf文件(带debugging)。

我们目前的工作站是Intel Core 2 CPU X6800 @ 2.93GHz,配有2个软件–RAID0 SATA 7.2K RPM硬盘和8GB内存。

当一个人正在编译时,这个系统工作的很好,但是当两个人同时编译时,这个系统会显着减速。 使用distcc将编译分发到其他服务器会有所帮助,但当然这并不能帮助链接时间。 链接可能需要长时间。

新服务器的硬盘驱动器/内存configuration是什么? 我希望总共花费不到五六千美元。 例如:

  1. RAID0是这个工作负载的好主意吗? 我听说RAID0可能会影响搜寻时间,我想在编译大量小文件时可能会受到影响。

  2. 如果我想支持3个开发人员,那么为我的价格范围购买3个便宜的机器还是1个大的服务器会更好吗?

  3. 鉴于我的价格范围,我应该考虑15K SCSI驱动器? 或者2个SW / HW-RAID0 SATA 7.2K硬盘性能如何?

2期间的加载示例使得:

Tasks: 238 total, 1 running, 237 sleeping, 0 stopped, 0 zombie Cpu(s): 1.5% us, 3.5% sy, 0.6% ni, 90.0% id, 4.3% wa, 0.0% hi, 0.1% si Mem: 8096556k total, 8052960k used, 43596k free, 50248k buffers Swap: 2040212k total, 224k used, 2039988k free, 6745740k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18972 user1 15 0 138m 131m 1076 D 10 1.7 0:03.25 ld 3414 user2 18 0 6148 1024 476 D 8 0.0 0:14.97 mv 18975 user3 18 0 61672 12m 652 D 6 0.2 0:00.52 make 

问候。 这是一个很好的问题,我最近不得不面对类似的问题。 虽然看内存和CPU是重要的,但你会惊讶于在编译代码时,硬盘I / O有多大的差别。 我的任务是为我们的开发人员寻找新的开发机器,授予参数有点不同…这些是C#开发人员,检查SVN和编译C#代码,但最终产品应该是非常相似的。 从我的老板那里阅读下面的日记条目: http : //it.toolbox.com/people/martin_sielaff/journal-entry/4562

最后我们发现SSD硬盘,核心的i5或i7 CPU和64位的操作系统都有很大的不同。

既然你现在有一个现有的系统,花时间来看看它。 在编译期间查明你的系统是CPU,内存还是I / O。 然后购买设备来解决最薄弱的环节。

我没有做太多的编译工作,但是在大多数情况下,我看到最弱点往往与CPU /内存相关,而不是I / O。

我无法评论哪些因素可以为您的工作负载贡献GCC性能,但总的来说,您正在寻找更多的CPU咕噜声以及更多的内存带宽。 这可能是值得考虑购买一个适当的服务器。

成本方面,你应该能够得到至less5500的双插槽服务器和12G的1333Mhz DDR3内存的预算(约6K)。 这使得内核数量增加了四倍,加上超线程技术的提升,这很容易得到另外一两个核心的支持。 总的主内存带宽也快大约4倍(6个通道@ 1333Mhz,比2 @ 1066Mhz)。 时钟5520的时钟也离开了Core Duo的尘埃。 而且你会得到更现代的IO子系统的好处。

抛出一对英特尔X25M在RAID 0作为编写的临时工作区,你应该能够轻松地吸引Core2 X6800工作站的性能。 对于即使最小的闪存SSD的处理文件的大小应该做的伎俩。

在这里,我倾向于同意Zoredache,尽pipe你的CPU在打印的顶级打印中空闲90%。

用户2的内存使用情况似乎相当广泛,1GB(除非在K中,我认为它不是,可能是错误的)。如果是1GB,知道他们在移动(“mv”命令)来占用那么多的内存。

链接阶段似乎是CPU密集度最高的(正如你已经想到的那样)。如果这是我的系统,我很想看看内存的使用情况,并可能在编译期间分析iostat输出。

这是处理器的四核版本还是双核? 无论哪种方式,它是一个相当强大的工作站,所以我不认为夹住更多的硬件会有很大的帮助。 就像Zoredache说的那样,更好的分析你所拥有的系统,找出瓶颈并加以处理。