AMD clock drift bug – fixed for Microsoft SQL

Short comment on my previous post: apparently, MSFT fixed this bug for SQL Server 2005 with SP3. More details are in their KB. It’s pretty detailed and you can get a picture of what you can miss with SP3 :) In the end, I should uninstall the AMD gaming mode stuff from the servers…

amd dual-core / quad-core bug and SQL Server

The AMD multicore CPUs have an interesting feature: the timers of the cores are not synchronized. This is the so-called clock-drifting which can be accountable for a lot of unexpected phenomenons due to the fact that the cores have different times and processes using multiple cores can be badly surprised. During the last year I had the chance to collect a few of the tricks:

  • Negative round-trip time during ping (Windows 2003)
  • Excessive amount of events in SQL Server errorlog (W2K3, SQL 2K5)
  • find -mtime 0 won’t find the recently created files (Red Hat EL 3)

Given that this is a mostly-SQL blog, I’m going to detail the second one. You can see events like this in the errorlog:

Date 11/25/2008 9:57:47 AM
Log SQL Server (Current – 11/25/2008 12:49:00 PM)

Source Server

Message The time stamp counter of CPU on scheduler id 3 is not synchronized with other CPUs.

And you can see this quite frequently. Now AMD created a fix for the bug but its target audience is not the big tribe of the sysadmins but the desktops. Why do you need a quad-core for a desktop user? Exactly: for gaming. So the fix called AMD Dual-Core Optimizer Version 1.1.4 gives you a chance to minimize the clock drifting by enabling the Game Mode. I gave it a try and installed it onto the server. Unfortunately the issue didn’t disappear, but it dropped by 97% which is a pretty good result – at least for me.

The idea sounds a bit wacky: fix an enterprise production database server with a gamer hotfix, but:

  1. It does the job
  2. If the Spanish MSFT support team could afford it, then I could as well :)

AMD dual/quad core bug és SQL

(English version here)
A több core-os AMD CPU-kba annak idején egy kiváló bug került: a core-ok órája nem volt rendesen összeszinkronizálva, és ez mindenféle érdekes dolgot eredményezhetett. 2008 számomra ezen bugok töredékének felfedezéséről (is) szólt. A következőket sikerült begyűjtenem:

  1. Ping esetén negatív round-trip time.
  2. SQL Servernél tonna hiba az errorlogba
  3. A legfrissebb: find használatakor az mtime 0-val nem találja meg a még friss fájlokat (ez mondjuk egy RedHat-on ütött be, bocs az offtopicért, de ez szebb, mint a másik kettő).

Engem az SQL Serveres érdekelt leginkább. Ez konkrétan így néz ki az errorlogban:

Date 11/25/2008 9:57:47 AM
Log SQL Server (Current – 11/25/2008 12:49:00 PM)

Source Server

Message The time stamp counter of CPU on scheduler id 3 is not synchronized with other CPUs.

Az AMD csinált egy hotfixet a bugra, de alapvetően ők nem szervert, hanem desktopot akartak javítani. Miért kell egy desktopba dual-core? Leginkább játszani (bár a GTA4 már quad-core-t akar, két magon szaggat :). Ennek megfelelően a csoda hotfixben, melynek neve AMD Dual-Core Optimizer Version 1.1.4 a clock driftinget a Gaming Mode bekapcsolásával lehet minimalizálni. Sajnos teljesen nem javította meg a problémát, de harmincad részére csökkentette az előfordulását.
Az ötlet amúgy elég hülyén hangzik, hogy gamer patch-csel javítsak élesüzemű SQL-t, de ha a spanyol MSFT SQL support team megtehette, akkor én is :)