I haven't been playing StarCraft as much. I haven't been home much. However, I knew that I was going to be away a lot, so I had invested in a gaming laptop. However, when I tried to play StarCraft this weekend, it was awful. Not my play, which is normally awful, but the performance of the laptop. By the time I got to the 10-minute mark in the game (the time when I'm supposed to attack using the filterstarcraft builds), it was unplayable. It wasn't responsive, and the screen started looking like a slideshow. I lost a ton of matches. It also pissed me off, and that also wouldn't help in my ladder matches even if the computer didn't exhibit problems.
I gave up on ladder matches and decided to use a game vs. the AI as a benchmark. I would play against the CPU on Daybreak LE. I would use Ctrl+Alt+F to see what the framerate was when I was playing, and try and do the same build each time. It would start out at a normal framerate, but then it would drop as the game went on. By the 10-minute mark when I would attack the frame rate had dropped to 15 fps or slower.
Was it a patch? A bad video driver update? Something else? I did the typical tech stuff - update all the drivers, make sure there wasn't any other programs running on the machine (I had a APM counter and some other utilities running, so maybe a Java update or something else could affect the performance of the laptop.) It was weird, because the laptop and my desktop have similar specs, but StarCraft II runs great on my desktop and it was doggedly slow on my laptop.
I thought I might have screwed up or reset the graphics settings, so I started there. I kept fiddling with them, trying different options, disabling some graphics settings. It would seem like it would work for a while, but then it would start stuttering in-game.
I bought my Alienware laptop a couple years ago, so it was already out of warranty. I didn't buy a warranty because I figured if things got bad enough, I'd junk the pieces that I couldn't reuse and upgrade anyway. I was still able to play at home on my desktop, but it was annoying me since I pretty much bought this laptop to play StarCraft II on it. It worked fine with the StarCraft II beta, and it worked fine for the past year or so, but I don't think I played much on it in the past month or so.
I started reading up on it more, and found that even though my laptop had an i7 CPU and the desktop had an i5 CPU, the desktop actually had a better processor. The desktop version had more cache and ran marginally faster. I didn't think it would have made that big of a difference, though. The graphics chip in the laptop was better, but I was beginning to think that it wasn't a graphics problem. When I ran the game on low graphics settings, the computer would still slow down, but later on in the game. It was starting to sound like the CPU was the bottleneck.
This got me wishing that I had bought a higher-end computer, because the laptop model I had didn't have the fastest CPU that was available. I also started window shopping on the gaming laptop sites to see what I could buy that would be faster. It would be another $2000 that I'd have to save up though, and I was sure that I had other things that I really needed that money for besides a StarCraft machine.
I used to build PCs and work as a help desk tech back in the day, so I thought I'd try my hand at troubleshooting. I checked for malware, just in case. None, but I didn't expect any - I'm pretty careful with my computers. I updated the video drivers and looked for known issues with StarCraft II, but since the game's been out for so long, all the issues with graphics cards that they knew about have been fixed with either video driver updates or StarCraft II patches.
Using some tips from the stickied notes in the StarCraft II technical support forum on Battle.net, I did the following:
- Downloaded CPUID Hardware Monitor to monitor the temperatures of the cores in my i7 CPU.
- Downloaded the Intel Processor Identification Utility to see what my CPU frequency was.
I tried my benchmark games vs. the AI, and then would exit StarCraft and look at my utilities. The hardware monitor showed that the CPU was hot, around 85 degrees Celsius, but that was still within the specs of the CPU.
I still had a hunch that it was a CPU problem, so I looked for a way to test the CPU. I found a utility that calculates Mersenne prime numbers, and that it was a good CPU test. It runs a mathematical formula which is supposed to heavily tax the CPU. I downloaded a utility called Prime 95. I ran it, and I saw the same symptoms - the temperature of the CPU would rise to 85 deg Celsius.
While I was surfing tech support forums and computer hardware web sites, I started reading up on CPUs. I had run across stuff while I was reading, including "turbo mode" for my Core i7 CPU and Intel SpeedStep.
"Turbo Mode" is where the CPU shuts down some of the internal cores (it's a four-core CPU that runs at 1.73 GHz, but if you only need two of them, it'll run with those two cores faster than the stock 1.73 GHz).
The second function, Intel SpeedStep, is a power-saving function. It changes the frequency of the CPU based on load. If you are running applications that need a lot of horsepower, it'll ramp up the CPU speed, but then bring it back down when you don't need it. The part I realized, though, was that it also would slow down the CPU when it got too hot. It prevents you from damaging your hardware, but at the expense of system performance. "Aha!" I thought. This was my smoking gun.
I kept the prime number utility running and kept re-running the CPU frequency utility. The CPU speed was actually going down. It was originally running at 1.86 GHz (overclocked more than the 1.73 GHz that's stock) but then when taxed by the prime number calculations, it would drop to 0.9 GHz or 0.5 GHz.
I was actually able to recreate this by running StarCraft II with my example game. I switched from StarCraft to the utilities via Ctrl+Esc and saw it when the CPU was still hot. I found that my CPU would max out around 85 deg Celsius. That seemed within the specs of the CPU, but then I saw something else: the CPU frequency dropped from 1.86 GHz to 0.5 GHz. I think Intel SpeedStep was slowing down my CPU because it was running so hot, preventing from damaging it.
I think this is also part of why I didn't find the problem right away. I would play a game. It wouldn't crash, but then it would slow down. I'd exit to the menu, maybe watch the replay to see if it was slow, and then give up. By the time I got back to the Windows desktop, the CPU was cooled down and the CPU was probably running at 1.73 GHz again. I did see it at 1.86 GHz once. (At the time, I thought it was a fluke, because I hadn't read up on SpeedStep yet. I similarly dismissed the 0.5 GHz reading that I got one time as well.)
I also noticed that the CPU was hot, but the graphics card heat sink was not. I think that also made sense - the CPU was probably the bottleneck, and the graphics card wasn't taxed, even if StarCraft II was set to Ultra.
I ended up taking apart my PC. I blew out the CPU heat sink, but it wasn't that dusty. I did notice, though, that the thermal compound didn't look like it was contacting between the CPU and the heat sink that well.
I went to the local computer store and picked up a can of compressed air, and a tube of thermal compound. I got Antec Formula 7, but I heard that Arctic Silver 5 is also good.
After applying the compound and reassembling the PC, I started it up again. After it started, the computer still idled around 54 deg Celsius. When I ran the Mersenne Prime search, it shot up to 85 degrees again, but the CPU speed stayed at 1.86 GHz. This looked promising.
I ran StarCraft II, set up my single-player game against the CPU, and then started off. The framerate started around 40 fps on Ultra settings. I started the build, and played for about 10 minutes. The computer seemed to stay responsive. At the end of the game, when I looked up, it was still at 40 fps!
Anyway, I think my problem is fixed. I've only played a couple of games, but I'm keeping my fingers crossed. I'll probably know more after the weekend.
Log in to comment