Blog Technology

Oculus Rift: A Bug with Windows Power Plan Configuration

I pre-ordered the Oculus Rift, a digital actuality headset, on January sixth of this yr. After following the Rift from its Kickstarter campaign to making an attempt it in individual at PAX 2014, I’ve been waiting for the promise of virtual actuality for years. Final week, my dream finally came true– I acquired one of the very first Oculus Rift “CV1” headsets. After plugging it in and launching demos that can’t be defined with words, I observed one thing improper with my PC. The CPU fan was going crazy, and the sensors have been reporting abnormally high temperatures.

TLDR: EVE: Valkyrie– a recreation for the Oculus Rift– has a problem where it, sometimes, might change your power administration settings at the incorrect time, leading to your processor not throttling down and probably causing loads of warmth and noise. This was exaggerated by my previous, power hungry processor, however may still affect others. You possibly can good to the repair when you’re not taken with my thought process to diagnose the difficulty.

My pc is comparatively previous– in truth, it’s based mostly on an OEM HP PC. My motherboard is a few obscure brand I can only assume sells solely to HP, and my processor is a nearly-6-year-old Intel 970. Though it has 6 true cores, it typically can show its age when I attempt to run trendy software program. The PC originally got here with an NVIDIA GTX 580– a prime of the road GPU of its time– however I’ve swapped it out with a more moderen NVIDIA GTX 970. The previous OEM HP case was also beginning to disintegrate, with the metallic warped and screws rattling inside, presumably from one of many many occasions I’ve opened the computer up. I’ve since switched to a Fractal Design r5, which utterly hides that this pc continues to be based mostly on an OEM model from 2010.

Each Oculus and HTC/Valve have a beneficial specification for digital reality headset customers. On the GPU front, I match the really helpful specification with my NVIDIA GTX 970. But because of the “Constellation” head monitoring system that Oculus uses, they have a really helpful CPU model that is many years newer, more powerful, and extra efficient than my growing older Intel 970. This initially concerned me, however I decided to defer the doubtless messy motherboard-CPU-RAM upgrade till some later time. My confidence elevated as soon as Valve released a digital reality benchmark suite, which put my pc as an entire squarely into the “Good for VR” category. Though Valve themselves indicated that the benchmark suite didn’t really symbolize CPU readiness, the truth that my pc might run the benchmark was still reassuring.

An Ominous Whir

I acquired my Oculus Rift on Thursday, March 31st, and excitedly set it up for the first time. I had pre-loaded the software program onto my pc a few days earlier through the “launch day”1, so I used to be virtually able to go. Though my impressions of the Oculus Rift and the arrival of shopper ready virtual actuality is enough for a submit in itself, it’s protected to say that I was extremely impressed. The “CV1” was a exceptional enchancment on the older improvement kits, and I used to be extremely glad with my purchase.

Although I used to be blind to it once I used the headset myself (because of the audio, which I admittedly was impressed with), once I demoed the headset to others I observed a fan inside my case kicking into high gear. I originally was unconcerned, since I noticed my getting old processor doubtless struggled with this new, demanding know-how.

After an thrilling day of demoing the brand new know-how to my family and having some time to play with it myself2, I shutdown my pc for the day. Once I began it again up the subsequent day, nevertheless, I observed one thing was extremely flawed: without any software program operating and immediately after my pc booted up, that very same fan I observed earlier was operating at full drive. After some investigation (learn: placing my ear to my pc to seek out the source of the sound), I found out that the sound was from my CPU fan operating at 100%.

Diagnosing the Drawback

The very first thing to examine was clearly the inbuilt Activity Supervisor. My preliminary thought was that there was some rogue process operating my CPU into the bottom, and although Process Manager indicated my CPU was at 100% load, there weren’t any processes that have been apparent culprits. Chrome had occasional spikes into the 50%-usage territory, however it wasn’t anything out of the bizarre.

Once I switched to the “performance” tab, I observed something odd. The CPU graph indicated 100% usage, and my processor was operating at the full 3.three GHz without throttling down.

One factor to notice with current Intel processors is their means to throttle down beneath low masses. This function– referred to as EIST, or SpeedStep– modifications the CPU multiplier to scale back the clock velocity, and in consequence the facility utilization and heat generated. This can be a good factor beneath normal circumstances since less heat is generated, and subsequently the lifetime of your processor is increased.

CPU Throttling On a traditional PC, when you take a look at the “performance” tab of Activity Manager you will notice the “Speed” quantity fluctuate. At high masses it probably will reach at or above your processor’s clock speed3, but when sitting in Chrome or checking your e mail, you will probably see this quantity drop to a fraction of the traditional velocity. For example, my Intel 970 runs at 3.2 GHz, though I recurrently see it drop to 1.57 GHz.

Nevertheless, this throttling didn’t occur, and the utilization remained at a continuing “100%”. I appeared on the “details” tab of Activity Supervisor– which exhibits all processes, together with the System Idle Course of– and all the things appeared regular as properly. Actually, if I excluded the Idle course of and added up the CPU utilization numbers, I arrived at a total of only 2-5% CPU utilization. This was nothing like what the other sections of the Process Manager reported.

I also used the superb “HWMonitor” program to examine my temperatures. My CPU ran at approximately 80 degrees Celsius, which was the apparent reason for the fans.

Useful resource Monitor also reported 100% CPU utilization across all 6 cores, though like the “details” tab in Process Manager, there were no processes that used more than 1-2% CPU. I assumed that this could be some type of bug, so I checked a third social gathering activity supervisor referred to as “Process Explorer”. It too reported that each one processes used less than 1-2% complete CPU usage, despite the high temperatures and obvious drawback.

As a last resort, I performed a full scan of my pc with both Windows Defender and MalwareBytes, hoping that it wasn’t the result of a virus or rootkit. Scans revealed nothing, to my aid.

At this level, I used to be dumbfounded. One thing prevented my CPU from throttling down, yet nothing consumed more than a single proportion point of my CPU with the exception of the System Idle Process, which was normal. I assumed again to when the problem started and tried to recollect what I put in: nothing. Keep in mind, I put in the Oculus software program much earlier within the week. The one vital change was that I plugged in the Rift and tracking digital camera, but I already had unplugged these to see if their mere presence brought on the CPU situation to occur. I used to be partially in denial– my new toy was the one factor that had changed, but I didn’t need to settle for that it was the offender. There wasn’t really any evidence to recommend this, anyhow.

As a final ditch effort, I booted into Protected Mode. This– supposedly– would let me know if it was third social gathering software program responsible. As my pc turned back on, I used to be crossing my fingers. My heart sank as I heard the followers spin back up at full drive. I checked the Activity Manager as soon as again, and my fears have been confirmed– 100% CPU utilization.

Out of concepts and determined to get again into the virtual realm, I simply reformatted my pc and hoped this was the top of it.

As I reinstalled my software, I had doubts behind my mind. I knew that the last major change to my pc was associated to the Rift, so I apprehensive that installing the software once more would deliver the difficulty back and I might be caught with the exhausting selection of letting my CPU run scorching, or purchase a brand new and more environment friendly motherboard and CPU. Some hours later after the software program, my drivers, and every part else I needed was again on my pc, I once once more tensed up as I launched a Rift recreation.

Although the followers spun up whereas I performed Lucky’s Story, shutting down the game and pulling the headset off resulted within the fans once again decreasing to a low hum. It wasn’t my Rift.

Or, so I assumed.

The Drawback Returns

The very next day, the problem relapsed. I used to be heartbroken– the Oculus software and Rift video games have been actually the only pieces of software that I had put in, and needed to be the wrongdoer. I once again went by way of the steps: Process Manager, Resource Manager, Process Explorer, and HWMonitor to verify temperatures. Literally all the similar signs have been reoccurring.

I ultimately checked the facility management settings constructed into Windows. I knew that there was a setting for “Maximum Processor State” and “Minimum Processor State”, and there was a risk those have been modified someway. Nevertheless, they have been regular– 5% minimum, and 100% maximum. Nevertheless, I was stunned that once I modified the “Maximum” value to 50%, the processor velocity also dropped to half within the Process Supervisor (3.2 GHz to about 1.57 GHz), and the followers spun down. Nevertheless, the “Utilization” proportion of my CPU was also locked to 50%. I suppose it made sense– I capped the processor’s velocity to 50%, so now no matter was utilizing up my complete CPU was simply utilizing all the 50%.

RealTemp reported that EIST was enabled.

As an alternative of this being a problem with Windows, perhaps it was an issue with Intel’s EIST– that too, might have been disabled. There’s a couple packages that help displaying the status of Intel EIST, including “RealTemp”. Nevertheless, to my dismay, EIST was enabled so far as I might inform.

As soon as once more, I had to hunt for any leads I might. At this point, I used to be doubtful that there was any process on my machine that was truly utilizing up 100% of my CPU, so I targeted on energy management and the throttling difficulty.

The Discovery and Repair

Ultimately, I came across the documentation for the Windows power administration configuration. Although Windows exposes quite a lot of power configuration options within the control panel, there are various others that are not exposed within the GUI, and that can be accessed by way of the command line software PowerCfg4. There’s one setting particularly that was of interest, nicknamed “IDLEDISABLE”. The outline of IDLEDISABLE was an enormous clue:

IDLEDISABLE specifies if the processor idle states are disabled on the system. If disabled, the kernel spins in a loop when there isn’t a code to execute on a processor as an alternative of invoking a transition to an idle state.

With the followers still operating at full, I queried the facility management configuration of my pc:

Positive enough, the IDLEDISABLE setting was set to 0x00000001 for AC energy, which is the one setting that issues for a desktop PC:

Flipping this back to “0” is definitely pretty straightforward. From an administrative command prompt, you want to sort two commands:

This does two issues– it units the IDLEDISABLE property on the current, lively energy management scheme to a worth of “0” (i.e. off), after which re-sets the facility administration configuration so that it masses the new values. As soon as I carried out these two steps, my followers instantly spun again down and the Process Manager reported that the whole lot was again to normal.

Effect of disabling IDLEDISABLE

Publish-Mortem

This easy, two line repair was the end result of many hours of analysis, Google searches, and software updates. But, why did this even happen in the first place?

System Idle Course of

First, you’ll need somewhat background on the System Idle Process. At a primary degree, CPU should all the time be doing something. Nevertheless, CPUs run plenty of totally different processes which are triggered at totally different occasions, and sometimes there shall be a time the place there are not any consumer processes which are operating. So, what’s your CPU purported to do? That is where the “System Idle Process” comes in on Windows. The “System Idle Process” is the Windows model of a bit of code that runs when there’s nothing else to do5. Primarily, the Idle course of is simply taking over additional CPU cycles.

This, in fact, is why the Idle process is of no concern beneath normal circumstances. Initially, in case you recall, I dismissed the Idle course of within the Process Manager’s “Details” tab and in Process Explorer. Though it took up 99% of the CPU time, this was regular: the Idle course of would yield cycles to other consumer processes if wanted, and it doesn’t usually forestall a CPU from throttling down. The truth is, although the Idle course of was initially analogous to a while(1) loop, trendy variations of Windows truly run directions that enable the facility saving options of recent processors.

IDLEDISABLE

In fact, the above is true provided that the system is allowed to idle. As you might of guessed, the IDLEDISABLE setting actively disables the throttling features of processors, inflicting the Idle course of to revert back to a primary whereas loop. In Microsoft’s phrases, “the kernel spins in a loop when there is no code to execute on a processor instead of invoking a transition to an idle state”.

This, in fact, explains why my system by no means truly felt sluggish, regardless of the Activity Manager reporting 100% CPU utilization. Though the Idle process was consuming 100% of my CPU by being in a loop, it yields to consumer processes, which means that different packages on my PC might still operate at a traditional degree.

Oculus Rift and Latency

But, how does this all relate to the Oculus Rift?

The Rift, and digital reality usually, could be very latency sensitive. The gadget runs at 90 frames per second to scale back motion illness for the consumer, which means that the system solely has about 11 ms to truly render a frame. That’s a loopy small amount of time for an entire scene in a video game to have its physics calculated by the CPU, rendered by the GPU, and sent to the headset. Dipping under this 90 fps goal also is extraordinarily dangerous for movement illness, so Oculus implements a ton of different features (akin to asynchronous time warp) to help scale back latency as much as potential.

The Rift additionally implements both rotational and positional monitoring, which means that you could tilt your head in area to have your character in a recreation do the identical, or you possibly can even lean forwards, backwards, or to the aspect. The Rift has an inertial measurement unit (IMU) package deal inside it, with an accelerometer, gyroscope, and magnetometer to determine the movement of the headset. This package deal runs at a a lot larger frequency than the similar sensors in your telephone– up to 1000 Hz (one thousand measurements per second), in reality. The Rift additionally sends these knowledge points each 2 ms over the USB cable.

All of those improvements are needed to scale back latency as a lot as potential, but there’s one thing that they’re doing that they haven’t talked about to my information– altering the facility plan of your pc to “High Performance”. In Windows, there’s a pair default “Power Plans”. These plans include the settings– corresponding to the amount of idle time earlier than your monitor turns off and your pc goes to sleep– that govern the efficiency and power usage of your pc. By default, your desktop pc is about to “Balanced”, which incorporates a mix of options that permit your pc to perform properly when needed, but still save electrical energy. There’s additionally a “High Performance” plan that modifications characteristics of your pc to help it carry out at its maximum always.

What chances are you’ll not discover is if you truly put your headset on6, the Oculus software modifications the facility plan of your pc to “High Performance”. That is instantly toggled again once you take your headset off. The GIF under exhibits me putting my finger over the sensor– you possibly can see the Oculus software program mechanically switching the facility plan to “High Performance”.

Automatic Toggling of the Power Plan

Nevertheless, the default “High Performance” energy plan in Windows truly has IDLEDISABLE set to “0”, which means that the idling features are all the time enabled out of the box for Windows desktops. On prime of that, my problem was that the followers have been kicking in because IDLEDISABLE was truly set to “1” on the default “Balanced” energy plan.

It seems, CCP (the builders of EVE: Valkyrie) deliberately set IDLEDISABLE to “1”. This isn’t precisely far fetched– Intel truly has a presentation on low latency computing where they recommend that builders do exactly that to scale back latency as a lot as attainable.

Though they could intend to set the flag to “1” when the sport is launched and again to “0” when it is closed, if the sport is closed incorrectly (reminiscent of if it crashes or is pressured to shut by way of the Activity Manager, and so forth.), there is a potential for the IDLEDISABLE flag to remain at “1”, thus inflicting further warmth and fan noise. This can be compounded if EVE: Valkyrie modifications the IDLEDISABLE flag to “1” when the facility plan continues to be set to “Balanced”, as that is the plan that the majority computer systems will change back to once the Oculus Rift headset is eliminated.

The Good Storm: My Previous Hardware

Aside from the fact that there’s only a pair thousand Oculus Rift units in the wild, why is it that nobody has found this before?

My hardware is perhaps an evidence: it’s previous, extra power hungry than newer processors, has a inventory CPU fan that undoubtedly needs cleaning, and the thermal paste is probably all dried up by now. It was already operating hotter than it must be, however with it operating at 3.3 GHz and with IDLEDISABLE set to “1”, it heated up sufficient to trigger my loud fan to kick in. With a more moderen, more power efficient processor or a greater CPU cooler, I won’t have even observed the difficulty. In any case, nothing felt sluggish7.

I hope this provides some insight into the method I went via to debug this drawback, and save someone time. Should you’re seeing the Process Manager show 100% CPU usage and your CPU clock at the most but with none processes which might be obviously the difficulty, you may need to verify the facility administration configuration of your system to see if IDLEDISABLE is about to “1” when it must be reset back to the default of “0”.

This challenge has been reported to EVE: Valkyrie and I will update this text as I hear back from them.

  • April 4th, 2016 @ 5:40 PM PST – Reported the difficulty to EVE: Valkyrie help

Particular because of Reddit consumer /u/GodLikeVelociraptor, who appears to have pinpointed that it’s in truth EVE: Valkyrie inflicting the difficulty, not the Oculus software itself. I’ve up to date the article to mirror this reality.