Thursday, February 18, 2010

World of Warcraft on a Mac Pro - Video Card Options

So as some people may realize I'm a Mac user. I play WoW on my Mac Pro. Playing on the Mac Pro means we have some options for video cards. Unfortunately, I've never really seen a good writeup about what these options actually provide in terms of performance. I've seen a lot of anecdotal evidence about the performance of the various options. So this month I decided to upgrade to a newer Mac Pro. I've had a 2006 model for quite some time and my girlfriends iMac with a ATI 4850 was making my older Mac Pro look downright sad. Unfortunately, running the newer video cards in the 2006 wasn't really an option. So time to get a 2009 model.

The Hardware

I ordered a 2009 Refurbished Mac Pro with the following specs:
  • Two 2.26GHz Quad-Core Intel Xeon "Nehalem" processors
  • 6GB (6x1GB) of 1066MHz DDR3 ECC memory
  • NVIDIA GeForce GT 120 with 512MB GDDR3 memory
  • 640GB Serial ATA 3Gb/s 7200 rpm
  • 18x SuperDrive (DVD±R DL/DVD±RW/CD-RW)
I upgraded the RAM by adding 8 GB of Crucial 1066MHz DDR3 ECC memory bringing the total to 14GB. Not that this is particularly important for WoW but I wanted 12GB of RAM for reasons outside of WoW. Adding 8 to the included 6 GB was the most economical way to get at least 12 GB of RAM.

I bought a EVGA GeForce GTX 285 video card with the following spec:
  • PCI Express 2.0
  • 1GB GDDR3 memory
  • Two dual-link DVI-I ports
And I also bought a ATI Radeon HD 4870 video card with the following specs:
  • PCI Express 2.0
  • 512MB GDDR5 memory
  • One dual-link DVI-I port and one Mini Display Port.
Testing

When you go searching for information on video cards and WoW you will generally find people telling you what frame rate or fps they are getting. Often they will recite the frame rate they get in Dalaran and under the best possible conditions of just flying around the world. Unfortunately, this data is not particularly useful for comparing video cards. WoW is a very dynamic game. Different realms and areas have different populations of people on them at different times. Someone on a high population realm will get much lower frame rates in Dalaran than someone on a low population realm.

So my primary test for comparing the cards has been running the /timetest command and taking the flight path from Dalaran to Valgarde Point and from Valgarde Point back to Dalaran. The /timetest command will put on the screen a FPS display and lock the camera while you take the next flight path. After the flight path it will print to the default chat box the minimum, maximum and average fps over the course of the flight. During the flight path monsters, players and other units will not be displayed.

The advantage of this method is it provides a consistent test that doesn't vary by realm population or who happens to be in the area I'm flying through. The average results are very close to each other even on repeated runs.

For configuration I tested all the cards driving an 30" Apple Cinema HD Display at 2560 x 1600. Except where otherwise noted the video settings were set to Ultra with Windowed Mode turned off, and Multisampling set to "24-bit color 24-bit depth and 1x multisample".

No addons were installed for running these tests except as otherwise noted in the tests.

Testing was done with OS X 10.6.2 and WoW 3.3.2 Build 11403.

The Results


Dalaran to Valgarde Point
GT 120 23.38 fps
GTX 285 38.707 fps
HD 4870 40.208 fps


Valgarde Point to Dalaran
GT 120 19.863 fps
GTX 285 35.204
HD 4870 37.245

As you can see the HD 4870 edged out the GTX 285. Which is surprising since the GTX 285 should be the better of the two cards. It's not a huge amount but only a couple of extra frames per second on average. But given the GTX 285 being a tier above the HD 4870 and the extra graphics memory you'd expect the GTX 285 to do much better.

A lot of people out there speculate that the GTX 285's drivers need some work and this would seem to be the case based on this testing.

Windows Truths are Mac Myths or are they?

There are a couple of things that I've found people saying about video card setups and settings that I wanted to test.

Most notable of the "Windows Truths" is the mixing of video card brands in the same machine issue. It's the conventional wisdom that you shouldn't mix video cards of differing brands in the same machine. Apparently, Windows has issues doing this.

I've seen a lot of people say that they believe that this is also a problem on the Mac. However, in my testing, I've seen no problems running the GT 120 at the same time as the HD 4870.

The other "Windows Truth" that I wanted to test was if running in Windowed mode carries a performance penalty on the Mac. It's generally understood that on Windows running without Windowed mode turns off rendering of the desktop and other things and provides a performance increase. I did some testing with the GTX 285 and the HD 4870 to see if this was true. In my testing on the Mac, Windowed mode doesn't seem to have any significant performance impact in most cases.

Oddly the GTX 285 was the only setup that seemed to show a performance difference. Going from Dalaran to Valgarde Point I only got 31.971 fps and the opposite direction 29.794 fps as opposed to the 38.707 and 35.204 fps respectively I got in non-Windowed mode. Even still a 6-8 fps drop seems pretty minor. The HD 4870 saw no such frame drop, so it's possible that again some sort of driver issue is coming to play with the GTX 285's Windowed mode.


Multiple Displays

For all of the test results I've given so far I've only been running one 30" display attached to the machine. However, my typical setup has 2 of these beasts running. I always was under the impression that running the second display was a drain on the performance of WoW so I wanted to test this by comparing the results of running both displays off the same card versus running the display running WoW off the GTX 285 and the 2nd display off the GT 120. I couldn't run both displays off the HD 4870 since the HD 4870 only has one Dual Link DVI port. But I did test the HD 4870 running one display while using the GT 120 for the second display.

What I found was surprising. Running WoW on one display while running nothing but a simple desktop pattern on the second saw virtually no difference between running both cards off the GTX 285 and one off their own video cards. The difference was literally just 10ths of a fps from each other. However, with 2 displays you want to run both in windowed mode. The GTX 285 performance hit from doing this was present still regardless of running the 2 displays on the same card or not.

The HD 4870 on the other hand, performed just as well in windowed mode running one display while the GT 120 ran the other as it had when the GT 120 and the other display were not connected to the machine. Again the differences between the two was literally just 10ths of a fps. For in essence no effective difference.

Dalaran

Dalaran is an area that players often talk about WoW performance with. Primarily because large numbers of other players congregate in the area. As I noted before in my comments about testing methods the number of players will vary from realm to realm and even at any given moment based on what other players are doing. I looked at frame rates with all 3 cards I tested while looking around Dalaran. The one thing I can say is that due to the number of players the frame rates in Dalaran seem to be more CPU bound than they are limited by video cards. All 3 of the cards produced somewhere in the range of 15-20 fps for me varying by where I was looking and the number of players.

processAffinityMask

Since WoW is sometimes more CPU bound than GPU bound at times I've seen a lot of people suggest that plaing with processAffinityMask can improve their performance. According to this forum post on the subject WoW will try to use as many processors as it can as of 3.3.2 so playing with the processAffinityMask will not really do much. For that matter I'm really not clear if this CVAR is even used on the Mac.

I've seen users say that setting the CVAR to 255 drastically improved their performance so I decided to do some testing. I set the CVAR to 255 and ran my time test flying from Dalaran to Valgarde Point and then back again. I found no significant difference between having no processAffinityMask setting and setting it to 255 with the /timetest. But what about looking around Dalaran was their a noticeable difference in frame rates? Again I was still getting rates around 15-20 fps just like I was before. Looking at the Activity Monitor's CPU usage monitor I see that all 8 of my real cores are being used with small amounts of activity from time to time on my virtual cores. No other apps except WoW and the Activity Monitor are running.

This is not surprising since the forum post says that setting it should do nothing unless you want to restrict WoW to specific cores. So I decided I would try setting the mask to 1 which should restrict WoW to running on one core. After changing this value WoW still seems to be using all 8 of my cores. Running /timetest with this setting also produces nearly identical results. So I'm not convinced that this does anything at all on the Mac.

AddOns


So far all of my testing has been done with addons off. But we've been seeing results in Dalaran that suggest that the game is CPU bound more so than it is GPU bound. So what impact does my normal addon setup have on my frame rates? Running my normal addon setup I get about the same frame rates maybe a few fps less looking around Dalaran than I did without. However, the addons are mostly idle at this point anyway. Running the /timetest also should about 3 fps loss when running the HD 4870. Of course how much loss you get will vary with your addon setup and CPU. But I found this interesting nonetheless.

Conclusions

With the HD 4870 currently selling for $349.00 versus $449.95 for the GTX 285. The HD 4870 really is the better bang for the buck. It performs slightly better than the GTX 285 on the Mac.

The upside for the GTX 285 is that with the better supported Windows side drivers if you want to use BootCamp to run Windows games you will get the value out of the card. You won't gain much from the GTX 285 on the Mac side but it should be much better on Windows. The GTX 285 may also be preferred if you're interested in doing work with OpenCL/CUDA on the Mac, but I have done no testing to see how the GTX 285 performs in this respect.

Hopefully EVGA/nVidia will work on the drivers for the GTX 285. But for now HD 4870 is the best card for WoW on the Mac.

Outside of the video card, WoW does seem to be incredibly CPU bound and as such the better CPU you have the better it will perform in general. Particularly when you add things like addons to the mix.

Wednesday, June 24, 2009

Defaults

I came across Keven Kelly's Triumph of the Default today. Which made me think about the state of defaults in WoW addons. The situation is really all over the place. Some addons come in a very usable state while others come needing extensive configuration to really be useful.

I work on PitBull and TBag. Which are on pretty opposite ends of the spectrum. TBag has a pretty complete default setup. So much so that I think hardly anyone really bothers to alter the actual sorting much. They may move around the bars in which things go but generally nobody touches the actual sorting rules. Some of this is a result of the fairly difficult configuration for the sorting rules. Something I really would like to redo if I ever find the time to do it.

PitBull on the other hand when you first load it up all the frames are stacked up on top of each other. They're all configured the same. It's been a pretty constant complaint about PitBull that it takes too long to setup. Yet despite this it is still a very popular addon.

I really need to find the time to sit down and work on better defaults for PitBull4. We can certainly have the frames positioned in reasonable places. There's been a lot of confusion for users coming from PitBull3 and thinking they get one set of configuration for all the frames. A good set of defaults could help communicate the design of the configuration better. As Kevin Kelly put it "Defaults are a tool that tame expanding choice." We can help users moving to PitBull from PitBull3, another unit frame or even just the stock Blizzard frames by providing them a default configuration that they can then immediately use and make choices about how it works over time. Our current defaults aren't doing this and need to be improved.

A good example of a bad default is the use of the Health - Smart tag. It will only show something on the health bar for a player if they're missing health, while showing the standard current / maximum display that users are used to for NPCs. But this is throwing a lot of users off. Because typically the only health bar they see while configuring it is their own. So we end up with a lot of questions about "Why don't my health bars show how much health I have."

Changing long standing defaults is not without risks though, even if the default was bad. Recently we changed the default text provider in PitBull4 to LuaTexts. LuaTexts provides much better performance while keeping the same set of pre-written texts for users. However, it does so at the cost of ease of customization. Due to the way Defaults in AceConfig work changing this default changed all the existing users over to LuaTexts just by upgrading. This caused a lot of confused users wonder where their customized texts went.

But the experience with changing to LuaTexts reinforces how much the defaults drive people. LuaText adoption really picked up when we changed that default. Of course it made it more visible. As all the users had to either configure it or switching back to DogTagTexts. They ended up on forums wondering about it where they learned of the advantages and some of them decided to make the switch.

Defaults may not be the most exciting thing to work on. But the difference between a quality set of defaults and a largely unconfigured addon can be worlds apart. PitBull needs to work on this.

Sunday, June 14, 2009

Welcome

Welcome to my blog about World of Warcraft. I decided to create this blog to be able to share with you my readers thoughts about the World of Warcraft UI and particularly the creation of Addons. There won't be a whole lot of discussion of class, boss, or pvp mechanics. Though I'm sure I'll probably mention some of these things. Rather, I'm going to focus on thoughts and issues I've found while working on addons.

I've been playing World of Warcraft since just before The Burning Cursade expansion came out and over time and gotten more and more involved in working on addons. I started by fixing bugs and things that annoyed me in some of the addons that other people wrote. Eventually I ended up picking up TBag and maintaining it. Since then I've written a few smallish addons from scratch and have been a major contributor to PitBull. I've done a significant amount of the work that's gone into PitBull4, in particular I wrote the Aura module and LuaTexts (a replacement for DogTagTexts, that is now the default text provider).

In particular as I've worked on PitBull4 I've come across things about WoW that are either downright irritating, frustrating or that I wished were a little different. I've discovered techniques that help save CPU time or work around bugs in the game. I wanted a place I could share these with people, provide updates on what I'm working on and just in general have a way to publish interesting tidbits.

So here we are. Shefki's WoW Blog.