It was recently revealed by ZD Net that Apple’s new Mac OS X release, dubbed Snow Leopard, would default to a 32-bit kernel despite being largely portrayed by Apple as the final step in the Mac’s journey to being a fully 64-bit OS. The reactions, as with anything Apple-related, were sheer polemic. Just check out the comments on the ZD Net article, and you’ll see what I mean. The Apple apologists played it off as if 64-bit code is pointless in the kernel, despite being indispensable in applications. The Microsoft partisans acted as if Apple had just halved the speed of the entire OS.
So, what’s the truth? I ran a few quick benchmarks to find out. To isolate the effects of the kernel from the benchmark software itself, I used a 32 bit benchmark program, XBench, so that the only thing that would be changing between the two runs was the kernel. (My understanding of Mac internals is not great, so I hope I wasn’t making a poor assumption here.) The results were interesting. As one might expect, neither side is entirely right or wrong.
The biggest difference was in memory allocation, where the difference was almost a factor of two. The next biggest difference was in the thread benchmarks, where the 64-bit kernel had a roughly 30% improvement in time. Finally, the 64-bit kernel had over a 10% improvement in large block disk transfer speed. These results seem plausible, as all involve tasks where the kernel plays a relatively large role. The rest of the benchmarks, mainly graphics and computation, had little or no improvement, as one would also expect.
So, it seems that while it’s true Apple isn’t doing a terrible thing by defaulting to the 32-bit kernel, it’s certainly also the case that you’re leaving some speed on the table. This is especially true for the disk transfer benchmarks, which can have a real effect on the perceived responsiveness of the computer.
The complete results for my are below. The test computer was a 2.53 GHz Mid-2009 MacBook Pro.
64-bit Kernel
Results 127.31 CPU Test 180.05 GCD Loop 285.50 15.05 Mops/sec Floating Point Basic 145.63 3.46 Gflop/sec vecLib FFT 120.72 3.98 Gflop/sec Floating Point Library 280.68 48.88 Mops/sec Thread Test 331.22 Computation 500.00 10.13 Mops/sec, 4 threads Lock Contention 247.63 10.65 Mlocks/sec, 4 threads Memory Test 200.62 System 255.76 Allocate 618.01 2.27 Malloc/sec Fill 185.89 9038.61 MB/sec Copy 211.31 4364.56 MB/sec Stream 165.04 Copy 157.53 3253.68 MB/sec Scale 155.20 3206.42 MB/sec Add 175.03 3728.48 MB/sec Triad 174.48 3732.49 MB/sec Quartz Graphics Test 190.82 OpenGL Graphics Test 86.25 User Interface Test 245.26 Disk Test 48.75 Sequential 101.56 Uncached Write 120.97 74.27 MB/sec [4K blocks] Uncached Write 119.43 67.57 MB/sec [256K blocks] Uncached Read 64.63 18.91 MB/sec [4K blocks] Uncached Read 137.50 69.11 MB/sec [256K blocks] Random 32.07 Uncached Write 11.66 1.23 MB/sec [4K blocks] Uncached Write 77.18 24.71 MB/sec [256K blocks] Uncached Read 59.85 0.42 MB/sec [4K blocks] Uncached Read 107.70 19.98 MB/sec [256K blocks]
32-bit Kernel
Results 122.67 CPU Test 179.50 GCD Loop 295.89 15.60 Mops/sec Floating Point Basic 141.66 3.37 Gflop/sec vecLib FFT 120.19 3.97 Gflop/sec Floating Point Library 283.69 49.40 Mops/sec Thread Test 260.69 Computation 396.28 8.03 Mops/sec, 4 threads Lock Contention 194.23 8.36 Mlocks/sec, 4 threads Memory Test 190.01 System 234.38 Allocate 369.54 1.36 Malloc/sec Fill 186.29 9057.73 MB/sec Copy 211.60 4370.52 MB/sec Stream 159.77 Copy 153.34 3167.08 MB/sec Scale 150.01 3099.22 MB/sec Add 169.51 3610.92 MB/sec Triad 168.11 3596.34 MB/sec Quartz Graphics Test 187.39 OpenGL Graphics Test 87.04 User Interface Test 237.42 Disk Test 46.82 Sequential 90.51 Uncached Write 118.31 72.64 MB/sec [4K blocks] Uncached Write 79.22 44.82 MB/sec [256K blocks] Uncached Read 60.05 17.57 MB/sec [4K blocks] Uncached Read 154.69 77.75 MB/sec [256K blocks] Random 31.58 Uncached Write 11.29 1.20 MB/sec [4K blocks] Uncached Write 76.69 24.55 MB/sec [256K blocks] Uncached Read 60.83 0.43 MB/sec [4K blocks] Uncached Read 116.08 21.54 MB/sec [256K blocks]
18 responses to “Benchmark results for Snow Leopard: 32- versus 64-bit kernel”
Do you have 10.5 results for the same benchmark by any chance? I’m interested to know how much disk performance has improved betweel 10.5 and 10.6.
Cheers,
R.
I wish I’d had the foresight to do that, but I didn’t. I still have a USB drive with 10.5 on it, and if I get a chance I’ll rerun the benchmarks with Leopard.
Please explain what you mean by “defaulting to 32-bit operation”. Your tests indicate that full 64-bit performance is available, so why in the world would the kernel default to 32-bit operation. The only rationale I can come up with is to use less memory. Is that possible? If not, can you explain what might be the reason?
I have 64-bit applications that seem to run in full 64-bit mode under Leopard. Is there any reason to switch to SL under such circumstances?
Thanks,
BB
The kernel defaults to 32-bit operation because to do otherwise would break a lot of third-party extensions. Apple apparently felt that it was best to go with the 32 bit kernel for now, to give developers a chance to port their extensions to 64-bit. I think this was probably a good call, since the performance hit is admittedly small, and the way the Mac works, applications can be fully 64-bit even if the kernel is 32-bit. Furthermore, the Mac handles memory in such a way that the kernel won’t actually need a 64-bit address space for a long time, and individual applications can still use a 64-bit space.
Completely agree with this. I don’t think it’s fair to compare them at the moment cause we all know how bad Vista was at launch. Snow Leopard just needs some time for devs, thats all. Logic Pro still has a 4GB memory ceiling which is very annoying.
Haha, I’m totally being a hypocrite. I think I was just stunned by how “not awful” Vista really was.
I dual boot my 8 core Mac Pro with 1 terrabyte to each OS. It’s sad but true… Vista 64 is much faster than the new Snow Leopard. I just did my own comparisons. While I still believe OS X is the better OS, it’s true… Vista 64 is much faster. Think twice before you knock it. I know I will.
(My rig consists of 8 cores and 16G of RAM. This plays a big part)
Interesting. But how is it faster? To what kind of benchmark are you referring? My experience with Vista 64 on an eight core machine was less than stellar, but that was admittedly only based on working with a single application (MATLAB).
Admittedly, my test were not formal. I am merely basing this of internet browsing, app launch time but more importantly audio programs which are consuming large amounts of RAM. I could be incorrect as to which one’s faster, but I am sure that Vista 64 performs well despite being very poorly designed.
Interesting. I have done similar comparisons on my Nehalem Mac Pro which sounds like the machine you are using. Using compiled Fortran code, Leopard as slightly faster than Vista 64 running molecular orbital calculations. The difference was slight as both operating systems seemed to provide full 64 bit performance.
Please explain “much faster” and the type of code you were running.
best way to do is by typing:
sudo systemsetup -setkernelbootarchitecture x86_64
reference: http://support.apple.com/kb/HT3773
Does this also work for non-server environments?
[…] Jonathan Birge » Blog Archive » Benchmark results for Snow Leopard … […]
Hello Webmaster (Admin) This is great article. ? found your site on google.com And I love your blog if you have a new blog plzzz tell me. Thank you very much
Difference in terms of performance was minimal once I upgraded to Leopard.
Howdy very cool website!! Guy .. Excellent .. Wonderful ..
I’ll bookmark your site and take the feeds additionally?
I’m satisfied to seek out so many helpful information right here within the put up,
we need work out more strategies in this regard, thank you for sharing.
. . . . .
I want to get across my appreciation for your generosity in support of persons that have the need for help on this issue. Your personal dedication to getting the solution all-around had become unbelievably interesting and have frequently allowed some individuals just like me to reach their dreams. The helpful suggestions indicates a lot a person like me and a whole lot more to my mates. Thanks a ton; from each one of us.
Wow que sé Me encantarÃa saltar la visita a la oficina del médico ! Por supuesto , pude ver algunas trampas con este , pero esto podrÃa ser un gran primer paso , como padre , serÃa genial poder reunirse con un médico sobre el vÃdeo y hacer que tal vez proporcione un diagnóstico sin tener que arrastrar un niño enfermo a la oficina . Se me ocurren un montón de usos para esto. Buen artÃculo, Jennifer !