Unresponsive Servers due to DST and an unsupported registry key
Hi, David here to tell you about a thorny little problem that a few of our customers have run into during their testing for the upcoming Daylight Saving Time changes. For reference, the US enters DST this weekend, and parts of Europe enter DST on March 25th. (For a list of all the various Daylight Saving Time changes, click here)
What you need to know
If you have the following registry key implemented on any Windows systems, and your system clock is running faster than your CMOS clock, that computer will become unresponsive at the DST change. This unresponsiveness will persist until the CMOS clock catches up with the DST changeover time. For example, if the CMOS clock is set to 3/11/2012 6:55 AM UTC and the OS time is set to 3/11/2012 1:59 AM EST, when the system clock reaches 2:00 AM EST, the CPU will spike to 100%, and will remain pegged for 4 minutes until the CMOS clock reaches 7:00 AM UTC.
Key: HKEY_LOCAL_MACHINESystemCurrentControlSetControlTimeZoneInformation
Value: RealTimeIsUniversal
Type: REG_DWORD
Data: 0x1 (default: 0x0)
We recommend the following steps:
1. Don’t use the undocumented and unsupported RealTimeIsUniversal registry key! If you have it set, delete it and reboot that computer. Make sure it doesn’t return via automation, like Startup Scripts or Group Policy Preferences
2. Check CMOS clocks on your systems and make sure that they are set to the correct time (yes, we know this requires a reboot).
See this KB article:
268725 - System may be unresponsive around Daylight Saving Time (DST) change when RealTimeIsUniversal is Set
https://support.microsoft.com/default.aspx?scid=kb;EN-US;2687252
David “What’s a TARDIS?” Beach
Comments
Anonymous
March 09, 2012
Time and Relative Dimension in Space. "the most beautiful sound in the world"...the sound the TARDIS makes whenever it appears From the Series 2 episode 'Love and Monsters'Anonymous
March 09, 2012
It would make a pretty decent ringtone, now that I think about it. Identifies you to fellow geeks, when in mixed company...Anonymous
March 09, 2012
I'm glad I'm not the first person to think that. Though I don't know if I could sink that far into Dr. Who fandom. And, I'm pretty sure my wife would put her foot down if I did. Side note: SERIES 6 IS FINALLY AVAILABLE FOR STREAMING ON NETFLIX!!! WOOHOOAnonymous
March 09, 2012
Please...a ring tone is not that far. If you want FAR...check this out. crafty-tardis.livejournal.com/60487.html And I now know what I'm doing this weekend, thanks to NetFlix.Anonymous
March 09, 2012
Watching the show is about as far as my wife will let me go. Though she does enjoy the show too. Jonathan, if that was a Facebook status I would have totally "liked" it. :)Anonymous
March 09, 2012
I'm attempting to write a PowerShell script to test for the existence of this key across 30 odd servers. To test I created this key on my workstation and gave it a value of 1. But when I attempt to filter on that key I get nothing returned. Here is the output: jspatton@L1132C-PC01 | 14:36:17 | 03-09-2012 | C:scriptspowershellproduction # Get-ItemProperty HKLM:SYSTEMCurrentControlSetControlTimeZoneInformation PSPath : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESYSTEMCurren imeZoneInformation PSParentPath : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESYSTEMCurren PSChildName : TimeZoneInformation PSDrive : HKLM PSProvider : Microsoft.PowerShell.CoreRegistry Bias : 360 DaylightBias : -60 DaylightName : @tzres.dll,-161 DaylightStart : {0, 0, 3, 0...} StandardBias : 0 StandardName : @tzres.dll,-162 StandardStart : {0, 0, 11, 0...} TimeZoneKeyName : Central Standard Time DynamicDaylightTimeDisabled : 0 ActiveTimeBias : 360 RealTimeIsUniversal : 1 jspatton@L1132C-PC01 | 14:36:45 | 03-09-2012 | C:scriptspowershellproduction # (Get-ItemProperty HKLM:SYSTEMCurrentControlSetControlTimeZoneInformation).RealTimeIsUniversal jspatton@L1132C-PC01 | 14:36:57 | 03-09-2012 | C:scriptspowershellproduction # Any thoughts would be greatly appreciated.Anonymous
March 09, 2012
@Jeffrey - There is nothing wrong with your PowerShell. When I do the same on my Windows 7 workstation, I get the following: PS C:> Get-ItemProperty HKLM:SYSTEMCurrentControlSetControlTimeZoneInformation PSPath : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation PSParentPath : Microsoft.PowerShell.CoreRegistry::HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl PSChildName : TimeZoneInformation PSDrive : HKLM PSProvider : Microsoft.PowerShell.CoreRegistry Bias : 300 DaylightBias : -60 DaylightName : @tzres.dll,-111 DaylightStart : {0, 0, 3, 0...} StandardBias : 0 StandardName : @tzres.dll,-112 StandardStart : {0, 0, 11, 0...} TimeZoneKeyName : Eastern Standard Time DynamicDaylightTimeDisabled : 0 ActiveTimeBias : 300 RealTimeIsUniversal : 1 PS C:> (Get-ItemProperty HKLM:SYSTEMCurrentControlSetControlTimeZoneInformation).RealTimeIsUniversal 1Anonymous
March 09, 2012
Ok, for the record this works, but looks gross jspatton@L1132C-PC01 | 14:51:48 | 03-09-2012 | C:scriptspowershellproduction # $RegValue.PSBase.Members |Where-Object {$.MemberType -eq 'NoteProperty'} |Where-Object {$.Name -like 'RealTimeIsUniversal*'} MemberType : NoteProperty IsSettable : True IsGettable : True Value : 1 TypeNameOfValue : System.Int32 Name : RealTimeIsUniversal IsInstance : True jspatton@L1132C-PC01 | 14:51:54 | 03-09-2012 | C:scriptspowershellproduction # ($RegValue.PSBase.Members |Where-Object {$.MemberType -eq 'NoteProperty'} |Where-Object {$.Name -like 'RealTimeIsUniversal*'}).Value 1 jspatton@L1132C-PC01 | 14:52:12 | 03-09-2012 | C:scriptspowershellproduction # Not entirely sure what the deal is, but the only way I could get it to show up at all was to use -like and tack a wildcard onto the end of the key name. This was only AFTER I had to walk through psbase.membersAnonymous
March 09, 2012
@Jonathan Weird, I rebooted and tried that again and it didn't go, only after I posted how I got it did I see your post.Anonymous
March 09, 2012
The comment has been removedAnonymous
March 09, 2012
@Jeffrey By the way, we checked the blog post itself and discovered that there was a trailing space after the registry value name above. We've corrected that.Anonymous
March 09, 2012
Here it is in crusty old VBScript. Just easier for me since I have lots and lots and lots of machines to check, many of them very old: Const HKEY_LOCAL_MACHINE = &H80000002 Dim strData Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!.rootdefault:StdRegProv") objReg.GetDWORDValue HKEY_LOCAL_MACHINE,"SystemCurrentControlSetControlTimeZoneInformation","RealTimeIsUniversal",strData If strData Then ' Alert End If If isObject(objReg) Then Set objReg = NothingAnonymous
March 09, 2012
@Jonathan DOH! gigo...needs to be a built-in trim() in my copy/paste! thanks!Anonymous
March 09, 2012
fwiw code.google.com/.../Check-DTSRegIssue.ps1