I have a piece of multi-threaded software which runs at different speeds under the latest ubuntu server, redhat enterprise and CentOS - all installed on the exact same server for comparison.

Ubuntu server was slowest, followed by CentOS and then redhat enterprise. The difference was 10-20%.

The difference between centOS and redhat might be exaplined by a newer gcc version, but at least in the last two operating systems the same version of gcc was used.

What I could see in the ubuntu run is that although the program used, say, 13 cores, the total CPU reported by "top" was about 1220%, while on redhat (and centOS) it was 1300%

Does anybody have an explanation? I prefer to work with Ubuntu (it's free), but I cannot afford the slow-down. I tried other multithreaded benchmarks which seemed to also indicate that ubuntu is somewhat slower - on the same downloaded executable, not compiled locally.

  • Just want to point out that CentOS is free as well. Have you looked into different system parameters across the different distros? sysctl -a for a list... compare and contrast.
    – djk
    Mar 11 '12 at 11:19
  • 1
    Why am I being down-voted? Please explain
    – eyal
    Mar 11 '12 at 13:50
  • I don't know why this has bee downvoted/closed, it is clearly a technical question asking for a technical answer! Looks like way too keen mods just reading the title to me. Mar 12 '12 at 11:04
  • +1, seems like a perfectly good question, can't understand why it was down-voted. Possibly because the title made it look like a recommendation question, which is off topic according to the FAQ, although reading the question it is clear that this isn't a recommendation question.
    – Bryan
    Mar 12 '12 at 11:17
  • Can you give us some specifics about the type of workload you're testing. Is this RAM heavy, processor heavy, I/O? An example of the type of work would help. I assume it is a compiled c/c++ program? Does it use external libraries? Did you install the same programs on the three different distros?
    – webtoe
    Mar 12 '12 at 11:59

This isn't a conclusive answer, just some thoughts that are too long for a comment.

  1. Have a try with atop rather than top. It provides a much better view of what's going on. I find the output of top to be very inconsistant these days as well. I have no explanation as to why, but I've seen the same behaviour you have with multiple cores.

  2. Are these installs within VMWare by chance? I ran some benchmarks using various tools on 5 different VMs running 5 different distros: Ubuntu, CentOS, RHEL, SUSE and Debian. I got WILDLY differing results that didn't seem to correlate with anything I could find. The advise I received when I escalated this to Red Hat was that some distributions kernels are better optimised for VMWare than others. This was several years ago though so things may have changed.

  3. Are you able to better describe the internal benchmark you're running in your app? This question could easily end up sitting between serverfault and stackoverflow...

  • no, clean install, i would not trust a virtual machine
    – eyal
    Mar 12 '12 at 11:42
  • The internal benchmark is a piece of optimization software i wrote, I can't say much about it, but it's just plain OMP-based multi-threading, nothing sophisticated in the multi-threaded implementation. I also tried intel's linkpack benchmark, which also seems to indicate a faster speed for redhat.
    – eyal
    Mar 12 '12 at 12:10
  • At your suggestion I looked at sysctl. There are differences, for example in kernel.sched_domain variables, but I do not understand what these differences mean. Could different distros be differently tweaked to improve performance, and if so, could I copy the tweak to the other distro?
    – eyal
    Mar 12 '12 at 12:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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