Games

A Quick Review of Torchlight for PC

I bought Torchlight on Steam. I spent ~19 hours playing a “Destroyer” class character, dual-wielding a hammer and a sword for much of the game and finishing at level 37. Here are my quick thoughts the experience:

Pros…

The artwork – The cartoon look of the game is reminiscent of WoW. It’s a nice break from the usual game textures.

The loot – In short, tons. If you’re at all a fan of Diablo, Titan Quest, and the like, this game’s for you.

The pet – Besides fighting the hordes along side you, your cat or dog companion has its own inventory slots for you to stash even more of your spoils. And when all of your slots are full you can send your pet back to town to sell your loot! Single best game feature ever.

The price – I paid $20 for it through Steam and spent a little over 18 hours playing it. That’s $1.11/hour – damn cheap entertainment.

Cons…

The artwork – While I found the artwork endearing, not everyone will find Torchlight’s “cartoony” art style appealing.

The repetition – Kill everything that moves, pick up the spoils, rinse and repeat. I found myself occasionally wonder “when does this game end?”

The pet – While your pet may excel as your emissary back at the market, her endurance leaves something to be desired. She doesn’t die, but rather runs away when her health drops too low. This is followed by a narrator repeatedly uttering the annoying phrase “your pet has fled.” You can feed her health potions by opening your inventory and dragging one of your health potions to her food dish, but it’s a bit clunky.

Hardware

My Intel Core i7 Build: Putting It Together

Recently I decided it was finally time to upgrade my gaming computer. I had skipped over Intel’s recent spate of chipsets, as well as Windows Vista, so my computer – still based on the Intel x975 chipset and Windows XP Pro – was definitely in need of an upgrade.

This is the second post documenting my upgrade to an Intel Core i7 Lynnfield system. In my first post I discussed the components I selected and why. In this post I’ll talk about assembling the system and the challenges I encountered. In my final post I’ll cover my attempts at overclocking the new system.

The Build

I like to build systems outside of the case. Then, when I’m sure everything is running well, I’ll place the components in the case and dress up the wiring (See Figure 1). Similar to other motherboard manufacturers, Intel has finally taken to mounting the SATA II ports horizontally, facing the back of the case, instead of vertically. Good thing too because the video card would likely have prevented me from using the first couple of ports. I’m using two 36GB Western Digital “Raptor” drives configured for Raid 0 to hold the OS. I placed these on SATA ports 0 & 1. I also have a pair of 74 GB Raptors will be configured for Raid 0, but these will become my d:\ drive and hold only data files. I placed these drives on SATA ports 2 & 3. My CD/DVD drive then ends up on port 5.

 Screenshot of my Core i7 build outside of the computer case

Figure 1

I decided to get a new power supply for this rig. The existing PC Power & Cooling Silencer 750 that I originally intended to use for this upgrade I felt could best be used elsewhere. I’m partial to the single 12 VDC rail design for PC power supplies so I ended up picking up Corsair’s’s 750TX.

Intel offers several methods for updating their BIOS, including updating directly from the OS using a utility called “Express BIOS Update.” Sans OS though, your choice is to use Intel’s tried and true “IFLASH2” utility and the BIOS file from a bootable floppy, USB or optical disk, or use a bootable ISO image to update the BIOS firmware. I chose the latter and it was a breeze. Burn the image to a CD-R, boot to it, and in 5 minutes your BIOS firmware is updated.

In order to build the RAID arrays, I navigated to Advanced -> Drive Configuration -> Configure SATA and made sure that the RAID option was selected, then rebooted and entered Intel’s Raid configuration utility (using CTRL-l). I chose the default stripe size of 128 KB for my two RAID 0 arrays. Returning to the BIOS, I made some additional preliminary tweaks before installing the OS, including disabling the 1394 port (never use it), disabling CPU and System fan control (I prefer to run them wide open), and turning off the Event Log (this is a feature?). Adjustments to Performance section of the BIOS will be saved for when I start overclocking the system. I then booted into Memtest86+ (v4.00) and ran it for 2-3 passes to verify that the RAM was solid. Sweet, no errors.

Windows 7 comes with native support for RAID, so rather than choosing to install my own via the usual “F6” method I let Windows use its own. After the OS was fully operational though, I installed Intel’s RAID driver, as well as the essential audio, LAN and graphics drivers; activated the OS and downloaded Microsoft updates. I then installed applications and performed the my usual OS performance tweaks. With the exception of a few applications, such as Guild Wars and Quake 3 Arena, which I made run using compatibility mode, all my applications installed and ran just fine on Windows 7 Pro 64-bit.

My Canon i560 printer had me scratching my head though. First, Canon’s Windows 7 64-bit driver for the i560 does not work; and, to complicate things, my printer is parked on a D-link print server. To install a driver that would allow this PC to see the printer, I first had to connect the printer directly to the PC via USB. Then, instead of messing further with the flaky Canon driver, I let Win 7 find and use its own native driver. Then I deleted that printer and put the printer back on the print server. I created a new printer, but this time configured for a proper TCP/IP port. When it came time to load a driver, I simply reused the one Win 7 added when the printer was directly connected.

The Temp

Almost immediately after I get a new system up and running on the bench I navigate to the BIOS’s hardware monitor to verify the temperature(s) it’s reporting for the CPU so as to ensure I have the heatsink and fan installed and working correctly.

Back in the good old days (you know, before Core i7), you would typically pay attention to the “CPU temperature” the motherboard was reporting. This is the processor’s Tcase temperature, the temperature at the geometric center of the topside of the integrated heat spreader as measured (or estimated) by a sensor IC. This temperature value is routinely used by utilities such as Everest, SpeedFan, as well as ones provided by the motherboard manufacture, to report the thermal condition of the processor. According to Intel, Tcase should be maintained at or below the thermal threshold listed in the processor’s datasheet. For the Core i7 860 processor for example, that value is 72.7C. Given a reasonably accurate measurement of Tcase and the not-to-exceed threshold value provided by Intel, you knew exactly where you stood with respect to your processor’s temperature.

Enter core temperatures. Unlike Tcase, the processor’s core temperature is the temperature measured by the processor’s Digital Thermal Sensor (DTS). This value is always relative to what Intel feels is the maximum core temperature threshold for a given processor model, a parameter Intel calls TjMax. Nominal core temperature values, as reported by utilities such as Core Temp and Real Temp, would be an equally reliable way of representing processor temperature if you knew with certainty the value of TjMax. Knowing that value would provide you with a fairly reliable way to calculate your core temperature, and by extension, how much margin you have before encountering TjMax:

Core Temperature = TjMax – DTS reading

Unfortunately, Intel treats the TjMax value as if it were a matter of national security, and so these utilities are left to essentially guess what the TjMax value is in order to report the nominal core temperature values. In other words, core temperatures, while nice to know, aren’t terribly useful because: 1) Their accuracy is suspect; and 2) there is no direct correlation to the nominal value of Tcase and it’s threshold as provided by Intel in the processor’s specification.

On the Intel DP55KG that I’m using for this upgrade, the situation seems to have gotten even murkier. On this motherboard there are two temperature readings reported in BIOS: Internal and Remote. Instead of Tcase, this Internal temperature is apparently meant to represent the processor’s core temperatures. This was confirmed when, after installing Real Temp, the temperatures reported by that utility matched the one reported by the BIOS within about one degree. Speedfan’s readings also closely matched these readings. And the “Remote” temperature reported by the BIOS? Since it routinely reports temperatures 2-5 degrees below those reported by the Internal reading, I suspect its readings come from a thermal sensor near the processor, whose job it is presumably to keep track of the internal case temperature.

It appears then that Intel now seems to be more interested in focusing on core temperatures and their relative difference from TjMax. But how does this help me ascertain how much headroom I have with respect to the Core i7 860’s thermal profile value of 72.7C? In short, it doesn’t. So I guess I’ll need to trust that Intel will keep the processor from exceeding whatever it feels are its critical thermal thresholds, Tcase or otherwise. My job, it appears, is merely to keep the core temperatures as low as possible.

The DP55KG’s BIOS was reporting that the processor’s core temperature was idling at ~36C (ambient room temperature is routinely ~20C). I felt I could probably do better than this so I went in search of a heatsink to replace the Arctic Cooling Freezer 7 Rev.2 I was using for this build. As mentioned in my initial post, even finding a suitable heatsink for an LGA1156 CPU was a challenge. While there were plenty of options for 1366-based boards at the time I was pulling the parts together for this build, very few of the more reputable heatsink manufactures had yet to put out parts made specifically for with newer LGA1156. The second time out though I ran into a Maximum PC article regarding the Cooler Master Hyper 212 Plus air cooler.

I picked one up, replaced the Freezer 7, and was able to lower the idle temperature to 30C. Needless to say I’m quite happy with it. As you can see though, the heatsink does land very close to the RAM modules (See Figure 2).

 Screenshot of proximity of the heatsink to the RAM

Figure 2

This brings up another issue that would be a good to mention here and that’s the best procedure I found for applying the thermal compound. Arctic Silver suggests applying their Arctic Silver 5 product in a line over the CPU heatspreader horizontally, but not spread the line out. Instead, when you place the heatsink on top of heatspreader of the CPU, the line of Arctic Silver 5, they suggest, will “spread out just like an oval pancake.” Well, it did spread out a bit and it may resemble an oval pancake (See Figure 3), but this method does not yield the best results. I tried several variations of this pancake method and compared the results with the more traditional method of placing a small amount of compound in the center of the processor and spreading it thinly and evenly so it covers the entire top of the processor, and in each case the latter method produced the best results.

 Screenshot of the Core i7 860 and the result of applying a thin horizontal line of thermal compound

Figure 3

I think the problem with Arctic Silver’s method is that it actually places too much compound on the processor resulting in poorer heat transfer, not better. But perhaps a more significant factor leading to poorer results in my case is the unique design of the Cooler Master 212’s heatsink itself. Instead of the typical smooth copper surface, this heatsink is built in such a way as to allow its heat pipes to rest directly on the processor. Consequently, the heatsink surface is not smooth but instead has ridges where the heat pipes nestle against a nickel plate. These ridges seem to be preventing the thermal compound from spreading out as well as Arctic Silver intended (See Figure 4).

 Screenshot of the Core i7 860 and the result of applying a thin horizontal line of thermal compound

Figure 4

Final Thoughts

After putting each of these speed bumps behind me I was ready to place all of the components in the NZXT Tempest mid tower case. I decided to forego using the case’s side fan in order to improve positive air flow, but even with one less fan, it was immediately apparent that I was going to run out of fan headers. No worries though, I typically run the fans wide open anyway so I simply wired 12VDC to each of them. The Tempest isn’t the easiest case to dress up wiring in but I managed hide some of it behind the motherboard (See Figure 5).

 Screenshot of the Core i7 860 and the result of applying a thin horizontal line of thermal compound

Figure 5

In the next post I’ll share my experiences with overclocking the DP55KG and Core i7 860.

Hardware

My Intel Core i7 Build: The Parts

I’m fortunate (or cursed) enough to be able to upgrade the desktop computers here at the iceflatline compound fairly often. The way this usually works is that my personal desktop computer gets overhauled and then the older parts are used to build, upgrade and/or maintain the other machines in the house – call it the “trickle down” method of upgrading.

Recently I decided it was time to start this cycle again. I had elected to skip over Intel’s X38 and X48 chipsets (and p45/p55 chipsets too) and Windows Vista, and so my computer – still based on the x975 chipset and Windows XP Pro was definitely in need of an upgrade.

This will be the first in what I intend to be three related posts documenting this upgrade – the parts I selected for it and why; the assembly of the system and the challenges I encountered; and finally, the steps taken to overclock the system.

The Parts

I’ve built a good many PCs over the years. Everything from bleeding-edge, fire breathing, water-cooled dragons to systems just fast enough to run Puppy Linux. My goal this time was to use the best quality components I could find for a low price, and build a fast, reliable machine for right around $1000 – $1500. In other words, build a machine that’s a good value. Since this was an upgrade, I also had a couple of other objectives in mind. First, since this machine, like its predecessor, would be used primarily for PC gaming and the occasional video/audio project, I wanted to upgrade the graphics capability; second, I wanted to significantly increase the amount of system memory; and finally, I wanted to use Windows 7.

The case – I’ve been a fan of Lian Li cases for some time; however, while they look great and their quality is second-to-none in my opinion, they’re not what you would characterize as a “gamer” or “enthusiast” case. This is primarily because they typically lack good cooling. I’m currently using water cooling in one of their tower cases and so the lack of good case cooling has not really posed a problem for me. However, I wanted to try and save on what I anticipated would be the cost for a new water cooling solution to fit a new motherboard and instead go with air cooling if I could. That steered me towards a mid-tower case with good air flow. I decided on the NZXT Tempest case. I had built a system for one of my kids with this case and really liked it. The three 12cm fans provide good air flow; it’s easy to work in, and it looks good.

The power supply – This was an easy one. I almost exclusively use power supplies from two manufacturers. For lower cost builds I use Fortron and for everything else I use PC Power & Cooling. I was already using a Silencer 750 in my current system so my solution here is to simply reuse this unit.

The CPU – This was a tough choice. Being somewhat of an Intel fan boy I had more or less settled on going with one of their Core i7 products. But Intel has presented a very challenging decision for the gamer/enthusiast building a new system today. Intel’s newest CPUs – code-named Lynnfield – include the 2.93GHz Core i7-870, the 2.83GHz Core i7-860, and the 2.66GHz Core i5-750. Lynnfield chips use essentially the same “Nehalem” 45 nm architecture as Intel’s other Core i7 CPUs, code-named “Bloomfield.” However, the Lynnfield CPUs are incompatible with existing Bloomfield-based Core i7 motherboards. The most notable difference is Intel’s decision to use a new socket for the Lynnfield CPUs – LGA1156, which is incompatible with the current Bloomfield-based CPUs. To make matters even worse, the fan/heatsink mounting holes for each socket type are also incompatible.

A significant advantage in using Bloomfield is Intel’s use of tri-channel DDR3 memory (to save cost, Intel uses dual-channel DDR3 for Lynnfield). So then why go with Lynnfield if a bigger memory bus is arguably better? I want a fast rig right, and I have to get a new motherboard in either case. Well, for one thing, LGA1366 motherboards aren’t cheap. Those added traces from the socket to the RAM slots to support tri-channel RAM mean more layers and pricier motherboards. Yet another factor to consider is that while Lynnfield is cheaper and gets you 90 percent the performance of a Bloomfield system, Intel will purportedly introduce a yet another new CPU skew in 2010 (“Gulftown”). This architecture supposedly adds two more physical cores to the CPU, add to that hyper-threading, and that’s 12 threads available to the OS. But alas, it will only be available on the Bloomfield/LGA1366 platform.

But, after weighing all these factors and the desire to stay true to be goal of pulling together the best system for the money, going with a Lynnfield build made the most sense to me. I chose the 2.83GHz Core i7-860, which should overclock quite well and, for ~$280.00, would seem to be the sweet spot for price versus performance. I also save at least $100 on the board and a little more on the RAM. However, I arguably give up a clearer upgrade path by passing on a Bloomfield-based system.

The Motherboard – I’ve traditionally used ASUS motherboards but then started to run into reliability problems with them. I also grew tired of the growing list of “features” their boards began to offer that I had no use for (e.g. WiFi, Bluetooth, etc.), resulting in time spent trying to disable them somehow. For my last build I used Intel’s D975XBX2, the so called “Bad Ax” board, and really liked it. No it didn’t have all the candy-ass features and overclocking capabilities of say an ASUS or Gigabyte motherboard at the time, but it turned out to be sufficiently overclockable for my needs and has been 100% reliable. Given this experience, I decided to go with an Intel motherboard again and chose their DP55KG.

The Heatsink – The Corsair Nautilus 500 water cooling solution I’m currently using, while it has served me well, wouldn’t be useable on the new LGA1156 motherboard. Besides, Intel’s latest CPUs run cooler than their predecessors and air cooling has gotten significantly more effective. So, there just wasn’t any reason in my mind to hassle with another water cooling solution for this build. However, finding a suitable fan/heatsink for an LGA1156 CPU turned out to be somewhat of a challenge. As I mentioned, the fan mounting holes for LGA1366 and LGA1156 motherboards are incompatible. So while there were plenty of options for 1366-based boards at the time I was pulling my parts together, very few of the more reputable heatsink manufactures had yet to put out parts yet that were made specifically for with newer.LGA1156. I ended up choosing the relatively inexpensive Arctic Cooling Freezer 7 Rev.2 with the hope of finding something a perhaps a bit more effective in a couple of months when other companies started to release parts for the LGA1156 motherboards. I also chose Arctic Silver 5 for the thermal compound.

The RAM – One of my goals for this build was to double my system memory. That meant 8GB for this build. After all, this is supposed to be an upgrade right? I was looking for either an 8GB kit (2x4GB) or two 4GB (2x2GB) kits with the timings as low as possible. Another factor that I was glad I considered ahead of time was whether the RAM would fit under the CPU’s fan/heatsink due to the close proximity of the RAM slots to CPU. I ended up eliminated a couple of products (Corsair Dominator I’m looking at you…) because they were too tall to fit. I ended up selecting two 4GB DDR3-1600 Mushkin Redline kits from which run at 1.65v with timings that spec at 7-7-7-18.

The Graphics – I have no allegiance to either AMD or Nvidia and was willing to go with either depending on price versus performance. I ended up going with AMD this time around though and chose a Radeon 5870 from ASUS. For ~$380, I felt it provided the best performance for the money.

The Optical Drive – Believe it or not I actually had to buy one of these. The Lite On drive I’m currently using is IDE and I needed one with a SATA interface. Sadly, I guess it really is time to move on. Here’s how much time I spent shopping for it though – I went to Newegg.com, navigated to the CD/DVD burners, selected “Best Rating” from among the search options and dutifully paid for the one that was at the top of the list. I think it was from Samsung :).

The Hard Drive – This was a tough decision too. I really really wanted to get a solid state drive but with prices so high and firmware support for features like Trim so fluid I decided to stick with with my trusty Western Digital Raptors that I currently have set-up in Raid 0. I fully expect that SSD performance will improve and prices will come down soon so I plan on revisiting this at a later time.

The OS – Not much of a surprise here. I went with Windows 7 Pro 64-bit. Why the pro version and not Home Premium? Remote Desktop. Home Premium doesn’t support it and I really wanted this feature so I could easily access this machine remotely.

Final Thoughts

Well, that’s it for the parts list. Most of which I elected to get from Newegg.com. Cost, not including shipping, came in right around ~ $1400.00. Next time I’ll share my experiences with assembling the system and the challenges I encountered.

Linux

My Conky Configuration

One of my favorite things about using Linux and BSD is Conky. Conky is a free, light-weight system monitor that can display nearly any information about your system directly on your desktop. Originally a fork of Torsmo, Conky’s torsmo-based code is BSD licensed. New code in Conky has been licensed under the GPL 3.0.

Installation is easy. On a Debian-based distribution like Ubuntu:

On Fedora-based distributions:

And on BSD, if you’ve installed the Ports collection:

Or if you would prefer to add the package:

Conky is very simple to configure. Using a pre-defined set of variables in a configuration file you define what Conky should monitor and where those monitored parameters are displayed on your desktop. The look and feel of what’s displayed is highly customizable.

On most systems the default configuration file location is /etc/conky/. There you will find the sample configuration file conky.conf. You’ll want to copy it to ~/.conkyrc and then start modifying it.

When setting up my Conky configuration, I decided to dispense with the fancy network graphs and other eye candy that I’ve seen in so many others use and go with a more utilitarian approach. I settled on four areas for Conky to monitor:

  • System – basic system information showing kernel version, uptime, total RAM and Swap usage, etc.
  • Processor – shows the top five applications or processes based on CPU usage
  • Memory – shows the top five applications or process based on system RAM usage
  • Network – shows basic information regarding wired and wireless connections, including IP address, inbound and outbound speed, connection quality, etc.

This minimalistic approach looks good (less “cluttered”) in my humble opinion, and provides just the information I need while not straining system resources.

One of the many cool things about Conky is its support for the use of conditional statements within its configuration file. The ${if_existing} variable, as an example, checks for the existence of a file passed to it as an argument and will display everything between ${if_existing} and the matching ${endif}. I used this particular variable to my advantage when configuring the network monitoring section. Instead of displaying information about each wired and wireless interface, even when they weren’t up, I chose instead to display information about them only if they were up by using the existence of a particular interface (e.g., eth0) in /proc/net/route.

Anyhoo, here’s the configuration file I’m currently using. Feel free use it as is or change it to fit your needs and taste. Post your Conky configuration in the comment section.

And here are some screenshots:

 Screenshot of Conky running on my Crunchbang linux desktop

Figure 1

 Screenshot of Conky running on my Crunchbang linux desktop

Figure 2