Some weeks ago, we took a look at the issue of thread scheduling and performance on AMD’s Bulldozer-based FX processors. Since current versions of Windows were not aware of Bulldozer’s shared CPU “modules,” the OS wouldn’t schedule threads in the most optimal fashion on those processors. By manually controlling thread allocations, we demonstrated that Bulldozer CPUs perform best when threads are scheduled one per module, avoiding sharing if possible. In fact, we saw performance gains of roughly 5-20% in a small sampling of benchmarks. Avoiding sharing was clearly most optimal despite the fact that scheduling to favor sharing would result in higher clock speeds from AMD’s Turbo Core feature. Our conclusion? Bulldozer performance would benefit nicely if only Windows were to assign threads to Bulldozer modules just like it does to Intel’s Hyper-Threaded cores.
Happily, we won’t have to wait for Windows 8 to see that happen. Microsoft has released a hotfix for Windows 7 and Windows Server 2008 R2 that appears to use the scheduling logic for Hyper-Threading (or SMT, simultaneous multithreading) on Bulldozer processors. From the patch description:
This article introduces an update that optimizes the performance of AMD Bulldozer CPUs that are used by Windows 7-based or Windows Server 2008 R2-based computers. Currently, the performance of AMD Bulldozer CPUs is slower than expected. This behavior occurs because the threading logic in Windows 7 and in Windows Server 2008 R2 is not optimized to use the Simultaneous Multithreading (SMT) scheduling feature. This feature was introduced in the Bulldozer family of AMD CPUs.
I don’t think one would say that shared Bulldozer modules use traditional SMT, but since they should pretty much be scheduled that way, I doubt anyone at AMD is shedding a tear over that description. If you have an FX processor or a Bulldozer-based Opteron, this hotfix should offer some decent performance benefits for free. Nice to see it out in the wild now, instead of late next year with Windows 8.
Update: Microsoft has apparently pulled the patch from its download servers for unspecified reasons. We’ll try to post another update when we find out more.
Update II – 10:55AM: We’ve spoken with an industry source familiar with this situation, and it appears the release of this hotfix was either inadvertent, premature, or both. There is indeed a Bulldozer threading patch for Windows in the works, but it should come in two parts, not just one. The patch that was briefly released is only one portion of the total solution, and it may very well reduce performance if used on its own. We’re hearing the full Windows update for Bulldozer performance optimization is scheduled for release in Q1 of 2012. For now, Bulldozer owners, the best thing to do is to sit tight and wait.