Showing posts with label overclocking. Show all posts
Showing posts with label overclocking. Show all posts

Monday, June 10, 2013

Unlocked and Overclocked - Overclocking my AMD Phenom II 550 - Part 2

Previously, I posted about my experiences overclocking my Phenom II CPU that sits at the heart of my gaming rig. In order to see what difference the tweaks made to system performance, I had to benchmark the machine before and after and I'll attempt to draw some conclusions from the results.

Performance Testing

Given the amount of time I had spent producing a stable system, I wasn't keen on spending an age producing performance figures, but I still wanted to be able to highlight any gains in performance. With this in mind, I decided to use the following benchmarks:

  • Synthetic Tests
    • Cinebench - both the single and multi-threaded CPU rendering tests.
    • POV-Ray - again, both single and multi-threaded CPU rendering tests.
    • Unigine Heaven Benchmark - Full screen, 1920x1080, 8x Anti-Aliasing, 16x Anisotropy, with textures and shading set to high/maximum, occlusion, refraction and volumetric enabled, tessellation set to normal, with a trilinear filter. Vsync was disabled to see how fast the system could push out frames, despite the screen-tearing that would occur.
  • Real-World Tests
    • ARMA2:CO - 1920x1080, with the quality preference set to "high" and vsync enabled. I profiled the E08:Benchmark scenario (provided by ARMA2:OA) performance by running FRAPS for the duration.
    • Battlefield 3 - 1920x1080 with with graphics quality set to "ultra" and vsync enabled. I played through the car park segment of the Operation Swordbreaker mission, recording performance for 60 seconds using FRAPS.
    • Crysis - 1920x1080, details set to "very high", anti-aliasing set to x16 and vsync enabled. I ran the 64bit version of the "Assualt_Harbour" benchmark provided by the Crysis Benchmarking Tool and recorded frame times with FRAPS.
    • TES V: Skyrim - 1920x1080, with graphics options set to "ultra" and vsync on. I found an outdoor location that was near a giant's encampment with a dragon circling overhead and started benchmarking before attacking the giants, recording frame times with FRAPS for 60 seconds.

The first two synthetic tests (Cinebench and POV-Ray) are primarily to see how much additional raw processing power is unlocked by tweaking the CPU. I expected to see quite linear performance increases here, as the test are primarily CPU-bound. From Unigine Heaven through all the real-world tests, I expected to see varying performance gains; each engine will rely on CPU performance to a different degree, with multiple cores making more of a difference in some and clock-speed providing more of a boost in others.

The Results

Analysis

As expected, there were some variations in results, which I'll try to provide some analysis for below:

  • The synthetic CPU benchmarks (Cinebench and POV-Ray) produced pretty unsurprising results; performance appears to increase linearly with additional CPU horsepower. For example, when comparing the dual-core and tri-core results you can see there is a around 50% improvement with the additional core.
  • Unigine Heaven was a little disappointing: the only tangible improvement was a slight increase in minimum frame rate. However, I suspect this is because it's a GPU-focused test, without any other factors to impact performance, such as AI-related calculations, etc.
  • The most impressive improvement was produced by the ARMA2:CO benchmark. In fact the game is very CPU-dependent given it's primarily a military simulation title, as opposed to your usual run-and-gun FPS affair. The unlocked and overclocked CPU provided much less deviation in the frame rate, bringing up the minimum frame rate to almost 10 FPS over the stock configuration. Surprisingly, the overclocked dual-core configuration seemed to reduce performance, which leads me to believe there's some additional optimisation required at the higher clock speed (e.g. increasing CPU-NB bandwidth).
  • Looking at Battlefield 3, there's a similar story: the 3.4GHz tri-core brought up the minimum frame rate and you can clearly see on the frame-time graph a more consistent performance was produced throughout the benchmarking run.
  • Crysis seemed to gain similar improvements with both the 3.6GHz dual-core and 3.4GHz tri-core configurations. I suspect that the older title might not benefit from the addition core and the improvements seen with the 3.4GHz tri-core are tied to the marginal increase in clock speed. This theory is backed up by the frame time graph as all three CPU configurations seem to suffer from the same dips in performance at the same time during the benchmarking run.
  • The performance improvements in Skyrim were in line with ARMA2 and Battlefield 3, with the tri-core producing the most significant benefit.
Conclusion
In line with current understanding of game engines, newer titles seem to favour additional cores over CPU frequency. Fortunately for me, I have a Phenom II were I can easily unlock the third core, which instantly gives me better frame rates in the games I regularly play. I would have liked to try and push the clock speed of both the dual and tri-core configurations a bit higher, but I was seriously limited by the thermals of the system. Improving the cooling of the CPU could give me a bit more head room for me to increase voltages, both in the CPU core and the CPU-NB. Overall, I'm pleased with the additional performance I've unlocked in my PC and I'm very happy with the amount I've learnt in the process.

Tuesday, May 21, 2013

Unlocked and Overclocked - Overclocking my AMD Phenom II 550 - Part 1

An AMD Phenom II 550 Black Edition

Ejecting the Core

Several months ago I wrote about my limited success unlocking the additional cores on my CPU. Unfortunately, I recently decided to disable the extra core when I experienced some stability issues.

For a long time the machine was solid, but after several months a BSOD was generated when I tried to jump into a game of Diablo III. When I ran the Minidump generated by the BugCheck through the WinDBG tool, I was surprised to see "danew.sys" referenced in the BugCheck event, which is the driver for my DeathAdder mouse. To mitigate against the problem recurring, I reset the mouse's polling rate and DPI back to their defaults via the DeathAdder control panel. However, the next time I played I was subjected to a far worse crash; the system simply froze, forcing me to hit the reset button. No BSOD left me with no BugCheck and corresponding Minidump to analyse.

Oh noes!!! A Blue Screen of Death

Obviously by now I was concerned with the system's stability so I immediately tested the machine using Intel CPU Burn and I was dismayed to see it fail within a couple of iterations. In fact, I tried the test several times and it failed consistently.

Taking some time to think, I remembered that I had recently made a change to the system: forcing the Kingston HyperX RAM to run at it's rated clock speed of 1600MHz instead of the 1333MHz it had been operating at, which had also meant forcing the voltage to 1.65V. Keen to keep my memory operating at the higher clock speed, I tried ever-so-slightly increasing the CPU core voltage (Vcore) in the BIOS. This was a step I had heard many people took to reliably unlock additional cores on their CPUs; perhaps the faster RAM had magnified some inherent instability of the system at the stock voltage (1.3V)?

This minor increase to the Vcore seemed to pay off: the Intel CPU Burn test yielded successful results, even with an extended run (100 iterations), so I was sure the issue was resolved. I seemed to be right for a few months, until another BSOD occurred while I was using the machine at the same time a system backup was taking place. Running CPUBurn resulted in negative results again, which was enough for me to lose my confidence in the unlocked core and I finally decided to disable it. Sure enough, after dropping back down to a dual-core configuration the stress tool ran through 100 iterations without any issue, and it was at this point that I decided to try and overclock the processor.

Research

I've always had an understanding of the basic overclocking process, but no real practical experience. Starting from scratch is a time-consuming and repetitive procedure, made slightly easier by the fact I have a Black Edition Phenom II, which includes an unlocked multiplier:

  1. Raise the multiplier by a small increment (usually 0.5).
  2. Boot the system and check stability (by running a program like Prime95 for a couple of hours, for example).
  3. Repeat until the system is no longer stable, then increase the CPU core voltage (Vcore) by a small amount.
  4. Boot and check stability.
  5. Rinse and repeat until further voltage doesn't help achieve higher clock speeds or the temperature limit is reached (most people recommend a max temp of 55°C for a 24x7 stable overclock).

Given my desire to not fry my CPU, I spent a great deal of time researching Overclocking Phenom II chips. Because of the age of the Phenom II, I found a lot of good guides and personal experiences documented, some of the more useful posts I've linked to below:

Trial and Error

Finally, after all the research, I felt slightly more comfortable overclocking my CPU. To ensure would be able to measure any improvement to system performance, I first ran through a round of benchmarks to establish a baseline for the system. Then, with much trepidation I began the process:

  1. First, I switched off the "Cool 'n' Quiet" feature in my M4A77TD Pro's BIOS; this down-clocks the CPU and reduces the voltage in order to reduce power consumption, but isn't really useful when achieving a stable over-clock.
  2. Then, following the guide on Tom's Hardware, I bravely set my CPU Vcore to 1.5V and and the core multiplier to x17, giving an effective clock speed of 3.4GHz. I booted the machine into Windows and kept an extremely close eye on the CPU temperatures while running Prime 95. Core temps peaked at around 55/56°C, which was a little higher than I had hoped.
  3. By slowly increasing the multiplier, I managed to get the CPU clock to 3.8GHz, but this was very unstable; Prime 95 wouldn't run for very long before a BSOD occurred.
  4. I dropped the multiplier to 18.5 (a 3.7GHz CPU clock) and for a while, this seemed to provide me with a stable overclock, however Prime95 failed after several hours.
  5. Given the max temperature being reached by the CPU during stress testing was between 55/57°C (temp. reported by the chip itself and the motherboard respectively) I wasn't comfortable raising the voltage any further, despite reports of people operating at 1.55V. In fact, given my high temperatures I was keen to try and bring the Vcore down if possible.
  6. After all BSODs and crashes the stability testing process was inflicting on my Windows installation, I started to worry that I would end up trashing my OS. I started searching for boot-able CDs to perform the testing, which is when I discovered StressLinux, which I promptly switched over to using.
  7. During my research, I had discovered how important other system components were to system stability. In the Phenom architecture, the Northbridge (CPU-NB) is integrated into the CPU and can impact both performance and stability significantly. Based off a chart included in Dolk's Phenom overclocking guide, I increased the CPU-NB clock to 2200MHz; providing more bandwidth between the CPU, memory and other components of the system. This looked as though it stabilised the 3.7GHz overclock, but Prime95 failed after 20 hours. Increasing the CPU-NB voltage may have been able to help, but this would have increased the temperature further, and mentioned previously it was already as high as I was comfortable with.
  8. As a follow up to the CPU-NB tuning, I dropping the memory clocks down as far as possible (1066MHz). Many people suggest trying this and loosening timings when going for higher clock speeds, only ratcheting up the clock and tightening timings after a stable core is achieved. Unfortunately for me, however, this didn't resolve my stability issue.
  9. I ended up dropping the multiplier to x18, bringing the CPU down to 3.6GHz, which finally seemed stable.
  10. After I had finished tweaking the unlocked multiplier, I attempted to wring a bit of extra performance out of the system by increasing the base clock. However, I couldn't get it stable, even increasing by 1MHz (to 201MHz) resulted in a system that couldn't run Prime95 for longer than 30 minutes.
  11. As a final effort, I tried playing with the memory, however, neither slowing the memory clock or loosening timings seemed to work; it allowed Prime95 to run longer, but it would still eventually hang. I think the longest it managed was a couple of hours. Something positive did result from this process; while researching it, I made the discovery that the memory controller integrated into the CPU only supported memory operating at a maximum speed of 1333MHz and any higher clock speeds would actually be considered an overclock. It then dawned on me that I had been inadvertently overclocking my memory (previously having set it to run at 1600MHz) and this could have been the reason my unlocked CPU core had appeared unstable. Realising this, I made the decision to attempt to re-enable the 3rd core after I stabilised and benchmarked the overclocked system.
  12. Leaving the base clock at 200MHz, the CPU multiplier at 18x and the CPUNB at 2000MHz, I was able to drop the VCore to 1.4V and maintain a stable and cool (around 50°C at load) overclock; Prime95 managed to run for 72 hours without any problems.
The Outcome

To achieve the stable 3.6GHz overclock, I really only had to modify a small number of settings. For completeness, I have documented all the settings I checked and/or changed below:

  • Secure Virtual Machine Mode: Disabled
  • AMD Cool 'n' Quiet: Disabled
  • C1E Support: Disabled
  • CPU Bus Frequency (base clock): 200MHz
  • CPU Ratio (multiplier): x18
  • CPU/NB Frequency: 2000MHz
  • CPU Over Voltage: 1.4V
  • VDDNB Over Voltage: Auto
  • LoadLine Calibration: Auto
  • HT Link Speed: Auto
  • HT Link Width: Auto
  • DRAM Frequency: 1333MHz
  • Memory Over Voltage: 1.71V
  • Memory Timings: All auto (9-9-9-27)

Once I had run the system through another round of benchmarks, I went back into the BIOS and enabled the 3rd core. Interestingly, this rendered the system unstable, so I had to experiment with settings again until the system would run reliably. Not only that, but the CPU temperature at load started hitting 56°C, so I resigned myself to dropping the CPU clock back down to 3.4GHz as I couldn't realistically add more voltage. After this, I could run Prime95 for 72 hours without any problems, but the CPU temperature would still hit that uncomfortable high. The final settings were much the same as before, with additional BIOS changes needed to enable the 3rd core:

  • Secure Virtual Machine Mode: Disabled
  • AMD Cool 'n' Quiet: Disabled
  • C1E Support: Disabled
  • Advanced Clock Calibration: Auto
  • Unleashing Mode: Enabled
  • Active CPU Cores: Manual
    • 2nd Core: On
    • 3rd Core: On
    • 4th Core: Off
    • 5th Core: Off
    • 6th Core: Off
  • CPU Bus Frequency (base clock): 200MHz
  • CPU Ratio (multiplier): x18
  • CPU/NB Frequency: 2000MHz
  • CPU Over Voltage: 1.4V
  • VDDNB Over Voltage: Auto
  • LoadLine Calibration: Auto
  • HT Link Speed: Auto
  • HT Link Width: Auto
  • DRAM Frequency: 1333MHz
  • Memory Over Voltage: 1.71V
  • Memory Timings: All auto (9-9-9-27)



Overall, I'm quite pleased with my first foray into overclocking and once I have collated all the benchmark data, I will generate some graphs and publish all the benchmark scores in a later post. I'd like to have another attempt at pushing the chip further, as I'm sure that additional voltage to the CPUNB would allow for it. Additionally, I came across several recommendations to favour an overclock to both CPU and CPUNB, instead of just pushing the CPU core as high as possible, as this would provide better overall system performance. However, before I can attempt anything else I will first need to get that CPU temperature lower, which means looking at the system's cooling configuration.

Thursday, April 11, 2013

Stability Testing with StressLinux

I've been experimenting with over-clocking my primary gaming machine and I became extremely concerned about the constant BSODs I was generating while stability testing with Windows-based tools such as Prime95 and Intel CPU Burn. Knowing how fragile a Windows installation can be, I was keen to reduce the likelihood that my testing would result in a non-booting system.

My initial searches turned up some bootable images, such as the Ultimate Boot CD (UBCD), that came equipped with builds of Prime95, but I finally settled on a specialised Linux Live CD: StressLinux. This is an OpenSuSE derived distribution that comes bundled with the following utilities:

  • stress - a basic load generating tool that can stress CPU, memory and disk I/O.
  • cpuburn - a collection of utilities for stressing various CPU architectures.
  • hddtemp - a tool for reading the system temps from the S.M.A.R.T. information present in modern hard drives.
  • lm_sensors - a tool for monitoring hardware temperatures; CPU, motherboard, etc.
  • mPrime - a Linux version of the popular Prime95 tool.

The reasons I favoured the StressLinux distribution over the UBCD was that the combination of the above utilities allowed me to watch my system temps while running the mPrime/Prime95 torture tests to ascertain where instabilities lay. I was pleased to find the mPrime tool mimicked the functionality of its Windows counterpart, despite being command line driven:

       Main Menu

    1. Test/Primenet
    2. Test/Worker threads
    3. Test/Status
    4. Test/Continue
    5. Test/Exit
    6. Advanced/Test
    7. Advanced/Time
    8. Advanced/P-1
    9. Advanced/ECM
   10. Advanced/Manual Communication
   11. Advanced/Unreserve Exponent
   12. Advanced/Quit Gimps
   13. Options/CPU
   14. Options/Preferences
   15. Options/Torture Test
   16. Options/Benchmark
   17. Help/About
   18. Help/About PrimeNet Server
Your choice: 15
Number of torture test threads to run (2):
Choose a type of torture test to run.
1 = Small FFTs (maximum FPU stress, data fits in L2 cache, RAM not tested
much).
2 = In-place large FFTs (maximum heat and power consumption, some RAM
tested).
3 = Blend (tests some of everything, lots of RAM tested).
11,12,13 = Allows you to fine tune the above three selections.
Blend is the default. NOTE: if you fail the blend test, but can pass the
small FFT test then your problem is likely bad memory or a bad memory
controller.
Type of torture test to run (3): 3

Accept the answers above? (Y):
[Main thread Apr 11 23:22] Starting workers.
[Worker #1 Apr 11 23:22] Worker starting
[Worker #2 Apr 11 23:22] Worker starting
[Worker #1 Apr 11 23:22] Setting affinity to run worker on logical CPU #1
[Worker #2 Apr 11 23:22] Setting affinity to run worker on logical CPU #2
[Worker #1 Apr 11 23:22] Beginning a continuous self-test to check your computer.
[Worker #1 Apr 11 23:22] Please read stress.txt. Hit ^C to end this test.
[Worker #2 Apr 11 23:22] Beginning a continuous self-test to check your computer.
[Worker #2 Apr 11 23:22] Please read stress.txt. Hit ^C to end this test.
[Worker #1 Apr 11 23:22] Test 1, 6500 Lucas-Lehmer iterations of M12451841 using AMD K10 type-2 FFT length 640K, Pass1=640, Pass2=1K.
[Worker #2 Apr 11 23:22] Test 1, 6500 Lucas-Lehmer iterations of M12451841 using AMD K10 type-2 FFT length 640K, Pass1=640, Pass2=1K.