Multi-Core, Multi-OS Scaling Performance
In this article we are looking at how Linux, OpenSolaris, and FreeBSD scale across multiple cores. Benchmarked are CentOS 5.5, Fedora 14, PC-BSD/FreeBSD 8.1, and OpenIndiana b148 as we see how the performance differs when running on one, two, three, four, and six cores, plus when Intel Hyper Threading is enabled.
To do this comparison the Intel Core i7 970 "Gulftown" processor was used, which boasts six physical cores plus Hyper Threading. With the ASRock X58 SuperComputer motherboard, from the BIOS the number of enabled cores can be adjusted as well as toggling Hyper Threading. CentOS, Fedora, PC-BSD, and OpenIndiana were tested in their stock OS configurations, aside from building GCC 4.5.1 on each of these operating systems to have a similar compiler across platforms.
Aside from all operating systems being tested with the GNU Compiler Collection 4.5.1 release, CentOS 5.5 has the Linux 2.6.18-194.el5 kernel, GNOME 2.16.0, X.Org Server 7.1.1, and an EXT3 file-system. Fedora 14 has the Linux 18.104.22.168 kernel, GNOME 2.32.0, X.Org Server 1.9.0, and an EXT4 file-system. PC-BSD 8.1 has the FreeBSD 8.1 packages including the 8.1-RELEASE kernel, KDE 4.4.5, X.Org Server 1.7.5, and a UFS file-system. Lastly, OpenIndiana b148 has the 5.11 kernel, GNOME 2.30.2, X.Org Server 1.7.7, and a ZFS file-system. The 64-bit versions of all operating systems were used in this comparison.
Besides the Core i7 970 and ASRock X58 motherboard, there was 3GB of system memory, a 320GB Seagate ST3320620AS hard drive, and a NVIDIA GeForce 9800GTX graphics card.
Benchmarks included PHP compilation, Apache compilation, C-Ray, 7-Zip compression, GraphicsMagick, HMMer, and NAS Parallel Benchmarks (NPB) from NASA. All of these test profiles are multi-threaded. With the testing having been done through Phoronix Test Suite 3.0-Iveland and the results being published to OpenBenchmarking.org, that is where the results were analyzed. In doing so, for the purposes of this comparison, each of the operating systems results were normalized against their single-core performance values and the multi-core results are relative to those values. This is all easily achievable with a few clicks on OpenBenchmarking.org, or to view the raw result values.