Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We are purchasing a server to run various Bioinformatics software packages. The main package on our test machine is multi threaded and is totally CPU bound, the IO & RAM are not limiting performance - the CPU runs at 100% whereas the RAM & disk IO are at minimal levels.

We want to ensure that we get the best processor(s) for our workload, but given the rather large list of Intel Xeon's to choose from, how can we select the best one for our needs?

I appreciate that on a fundamental level, "more" = "better", but how can I tell if for instance a faster bus speed makes a bigger difference compared to a large cache or if more cores are better than clock speed.

So is there a way of profiling our software package to figure out what processor to choose. The software in question is a collection of Python scripts, so we can do the profiling on Linux or Windows.

share|improve this question
    
The PassMark CPU rating is a pretty good measure of the total raw CPU capability of all cores put together. –  David Schwartz Jan 31 '12 at 5:45
    
@David Very interesting, I was familiar with the site for desktop CPU's. The "Multi" CPU section is quite enlightening. Still I feel it's a bit too synthetic a benchmark to make a decision on, but it's a good start. –  Jon Rhoades Jan 31 '12 at 11:50
    
You said that you don't care about I/O or RAM and all your application is totally CPU bound. That's the situation where a synthetic CPU performance benchmark is perfect, especially when comparing CPUs with very similar architectures. –  David Schwartz Jan 31 '12 at 20:35
add comment

1 Answer

Have you taken a look at cachegrind, which is part of the really excellent Valgrind memory profiling package?

Cachegrind will at least give you an idea of how much cache thrashing is happening. You may find that your application thrashes the cache so much that it doesn't matter whether you have the larger L2/L3 cache of a Xeon or not, then again, you may be bound by the CPU pipeline and thrashing may not be occurring that much.

Cachegrind will also allow you to set arbitrary cache sizes, so you'll be able to test your code under various cache-size scenarios.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.