January 19, 2012

Skyrim Crash/Rebooting Fix: Disable Core Parking?

If you've read this blog before, you'll know that I've been having some issues with Skyrim on my new system.  Namely the problem was that Skyrim would cause the system to reboot intermittently.  It was very frustrating.  I had tried many, many things and the one that worked was disabling Speedstep.

However, this "solution" bugged me: it was not ideal and didn't explain the millions of other systems out there with Speedstep enabled that wasn't crashing.  In other words, it was not elegant or clean.  Of course, there are enough Internet posts that talk about the crashing, but certainly it is not as widespread as it should be if the problem was Speedstep.  Another problem was that my system was using power like it was still the 1990s!  This certainly goes against my green tendencies.  And then two days ago, I got yet another reboot in the middle of Skyrim.

So, I kept on searching when I stumbled across a series of posts and articles related to "Core Parking."  Having either never heard of this or assuming it's the same as Speedstep, I was surprised to learn that this was something that was found only the latest Intel processors (like mine) and is only found in the latest Windows OS (like mine).  I read through many many articles and it seemed this was indeed a likely culprit.

My theory goes like this: Skyrim's engine, the "Creation Engine" is not really new.  In fact, many others on the Internet postulate that it's simply built on the old engine, Gamebryo.  Gamebryo had some issues with Skyrim's predecessor, Oblivion.  Some research shows that the Creation Engine and Gamebryo share similar configuration files and in fact, the same behaviors.  Anyway, there's a lot to be said about Gamebryo vs. Creation that could fill pages and pages, but in short, I believe that "Creation" is a "new" engine that was built on the old one.  Gamebryo had problems with multi-core processors and it seems the Creation Engine also has at least some version of these problems.  Namely, not effectively using multi-cores and being single threaded.  In fact, some websites have shown that Skyrim does not run that much better with a quad-core vs a dual-core.  Something like 50% more performance from single-core to dual-core but only 3% from dual-core to quad-core.

Core Parking is essentially Windows deciding that if a core is not busy, it will power down that core to save energy.  If that core is needed for something, it wakes up in milliseconds.  My disabling Speedstep effectively prevented cores from being parked because they were running at full speed all the time anyway (although no load - it's quite possible that Core Parking relies on Speedstep to lower the core ratio/frequency and/or core voltage before deciding that the core is ready for 'parking').  At this point it's probably best to describe each:

Speedstep - this is a power-saving technology that reduces the frequency ratio of a core (mine goes from 34x to 16x @ 100MHz base, so 3.4GHz to 1.6GHz.  Additionally, it can reduce the voltage draw of a core as well.  The latest iteration also has a "Turbo" mode where the core can boost up to something like 42x (4.2GHz) if needed.  This is enabled/disabled in the BIOS.

Core Parking - also reduces power use, this basically disables a core.  This is a Windows thing.

Since I have a quad-core 2600K with multi-threading, Windows sees 8 processors.   During my test, when idle, with Speedstep on, Windows parked CPU1, CPU3, CPU5 and CPU6 and sometimes CPU7.  When I kicked up the load, the CPUs would get unparked and would kick in.

When Skyrim runs, it's not very processor intensive, at least not on my system.  The loads go up and down depending on what's happening.  Perhaps while in game, some cores are parked.  Perhaps combined with my 16GB of RAM and virtually nothing else running on my system, save for Steam, I'm not really needing a lot of cores while playing Skyrim.  My current theory is that neither the Gamebryo or the Creation Engine handles this very well with 4 cores and 8 "virtual processors."

I tested this by re-enabling all the defaults (i.e. Speedstep) and then disabling the Core Parking feature of Windows 7.  Note that there are many ways to do this.  I went with enabling the menu options and then setting minimum to 100% and maximum to 0% (see below).

Be sure to set "min cores" to 100% and "max cores" to 0%.
I recommend checking out the Microsoft way.  Anyway, it worked - I verified the Core Parking and Core Un-Parking effects using the built-in "Resource Manager" of Windows (scroll down for what it looks like).  Skyrim was played thoroughly for about and hour and DID NOT HAVE ANY CRASHES.  It's quite possible that this may be the "core issue" (pardon the pun).


It's still early in the testing, but at least I'm being somewhat green again, although not as green as when Core Parking is enabled.  But the power savings is minimal for me.  This is mostly intended for the huge server farms where some systems may stay idle for long stretches of time.

I'll give this at least a week of testing before I call it a win, but so far so good.  (I'll be out for a few weeks though, so no updates for a while.)   It's a nice discovery in any case and I learned way more about power savings than I intended to.  But now that I found it, I can't stop looking at it - kinda like the orb in Skyrim,

I found it, now I need to understand it before I can control it.

These are what parked cores look like in resource manager

After disabling core parking
Final note: After enabling the menu item, I made the changes and it immediately took effect, no reboot was necessary.  But, you probably should reboot anyway, just to make sure.  This is still Windows after all.  :-)

8 comments:

  1. Thanks for this. This is the best lead I have seen so far in figuring out the black screen crashes. I tried it, and alas, I had a crash. I didn't reboot though so that's something to try. But I wonder why did you set min cores to 100%?

    ReplyDelete
  2. Thanks for your comment, Allan. It seemed to be the only way to get the cores to stop parking. With both at 0%, some cores were still being parked. Please do keep me in the loop about your crashes.

    If you still crash with the cores not being parked (did you verify using Resource Manager?), I suggest you go into the BIOS and disable Speedstep, C1E and all the other C-state related settings (I have an earlier post which details it) and see if that helps. That was my initial success. I haven't yet had a chance to fully test the Core Parking method.

    ReplyDelete
  3. No Cores are parked in resource manager. I'm actually using a MacBook Pro w Core i7 so there isn't a PC BIOS to boot into. I'm not sure if MBPs use Speedstep or not. I'm going to look over all this agai. To make sure I didn't miss anything.

    ReplyDelete
  4. I disabled the core parking as described in this article and Skyrim crashes continue for me. The crashes happen in Oblivion on this system too (both Steam).

    Again, as this is a Mac I don't immediately know where to find the SpeedStep settings, though I have set the minimum CPU to 100% in power management.

    I'll keep following along. You've done some fantastic research here.

    ReplyDelete
  5. I worked with the Intel Macs a bit in the past and if I remember right, you'll need to boot into OSX and then open a terminal and make changes to the bios using "sysctl".

    Also you can interrupt the boot process and enter the Open Firmware using this key sequence: CMD-OPT-O-F

    You'll need to google what to do next, but I think that is the way to muck with the equivalent BIOS settings on a MBP.

    I'll be able to post updates starting next week and I'll start with the upcoming 1.4 patch that should be released this week.

    Thanks for reading my posts! I'm glad it's of value to somebody! :-)

    ReplyDelete
  6. Hello, I know this is rather late to comment on this discussion, but I found it in a google search and just wanted to hear if you ever found a solution to the problem as I have the same one.

    ReplyDelete
    Replies
    1. Hey Martin, Yes, I fixed this rebooting problem by replacing the video card.

      http://one-miguel.blogspot.de/2012/04/new-gtx-570-no-more-skyrim-issues.html

      Delete
    2. Aww shoot I was hoping thath I wouldn't have to replace it.

      Delete

Please be helpful and courteous. Thanks!