Unresponsive Servers due to DST and an unsupported registry key

Unresponsive Servers due to DST and an unsupported registry key

  • Comments 14
  • Likes

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_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation
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

http://support.microsoft.com/default.aspx?scid=kb;EN-US;2687252

David “What’s a TARDIS?” Beach

  • 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'

  • It would make a pretty decent ringtone, now that I think about it. Identifies you to fellow geeks, when in mixed company...

  • 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!!!  WOOHOO

  • 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.

  • 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.  :)

  • 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:\scripts\powershell\production #

    Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    PSPath                      : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\Curren

                                 imeZoneInformation

    PSParentPath                : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\Curren

    PSChildName                 : TimeZoneInformation

    PSDrive                     : HKLM

    PSProvider                  : Microsoft.PowerShell.Core\Registry

    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:\scripts\powershell\production #

    (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation).RealTimeIsUniversal

    jspatton@L1132C-PC01 | 14:36:57 | 03-09-2012 | C:\scripts\powershell\production #

    Any thoughts would be greatly appreciated.

  • @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:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    PSPath                      : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    PSParentPath                : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

    PSChildName                 : TimeZoneInformation

    PSDrive                     : HKLM

    PSProvider                  : Microsoft.PowerShell.Core\Registry

    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:SYSTEM\CurrentControlSet\Control\TimeZoneInformation).RealTimeIsUniversal

    1

  • Ok, for the record this works, but looks gross

    jspatton@L1132C-PC01 | 14:51:48 | 03-09-2012 | C:\scripts\powershell\production #

    $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:\scripts\powershell\production #

    ($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:\scripts\powershell\production #

    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.members

  • @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.

  • @Jeffrey

    By any chance did you create the value in the registry by cutting the value name out of the post above and pasting it into the Registry Editor? If so, double-check to see if you have a trailing space after the value name -- "RealTimeIsUniversal ".

    A wild-card would catch that, but the explicit property check will return nothing.

  • @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.

  • 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}!\\.\root\default:StdRegProv")

    objReg.GetDWORDValue HKEY_LOCAL_MACHINE,"System\CurrentControlSet\Control\TimeZoneInformation","RealTimeIsUniversal",strData

    If strData Then

    ' Alert

    End If

    If isObject(objReg) Then Set objReg = Nothing

  • @Jonathan

    DOH! gigo...needs to be a built-in trim() in my copy/paste!

    thanks!

  • fwiw

    code.google.com/.../Check-DTSRegIssue.ps1