views:

166

answers:

4

We recently changed some of our system requirements on a light weight application (it is essentially a thin gui client that connects to a "mainframe" that runs IBM UniVerse). We didn't change our minimum requirements at all, but changed our recommended requirements to match those of Windows 7 and Vista (since we run on those machines).

Some system requirements are fairly easy to determine (ie: network card, hard drive space, etc...). But CPU and RAM are harder to nail down.

Our current list of minimum requirements for CPU and RAM both state that you have to meet the minimum's for your operating system. That seems fairly reasonable to us, since our app uses only 15MB or active memory and very little CPU (it's a simple GUI, in this case), so that works. This seems fine, no one complains about that.

When it comes to recommended requirements though, we've run into trouble nailing down specifics, especially nowadays, when saying minimum 1.6 gHz (or similar) can mean anything when you start talking about multi-core processors, atom processors, etc... The thin client is starting to do more intensive stuff (it now contains an embedded web browser to help display more user friendly html pages, for example).

  • What would be a good way to go about determining recommended values for CPU and RAM?
  • Do you take the recommended for an O/S and add your usage values on top (so do we then say 1GB for Vista machines?)?
  • Is there a better way to do so?

(Note: this is similar in nature to the server question here, but from an application base instead)

+1  A: 

Come up with some concrete non-functional requirements relating to things like latency of response, throughput, and startup time, and then benchmark them on a few varied machines. The attempt to extrapolate to what hardware will allow a typical user to have an experience that matches your requirements.

Visage
Unfortunately, because, as you stated, hardware varies so wildly, profiling seems like the best (only?) option. Virtual solutions will give close approximations, but you'll want to know that the hardware actually gives the performance the virtual machine offers.
Stefan Kendall
+1  A: 

For determining the CPU and RAM you could try using Microsoft Virtual PC which allows you to set your CPU and RAM settings. You can then test a few different setups to see what would be sufficient for a regular user.

As for the recommended requirements, adding them on top of the basic OS requirements would probably be the safe bet.

Brandon
+1  A: 

Microsoft introduced the Windows Experience Index in Vista to solve this exact problem.

UPDATE FOR MORE INFO

It takes into consideration the entire system. Bear in mind that they may have a minimum level processor, but if they have a crap video card then a lot of processor time is going to be spent just drawing the windows... If you pick a decent experience index number like 3.0 then you can be reasonably assured that they will have a good experience with your application. If you require more horsepower, bump up the requirements to 4.0.

One example is the Dell I'm using to type this on. It's a 2 year old machine but still registers 4.2 on the experience index. Most business class machines should be able to register at least a 3; which should be enough horsepower for the app you described.

Incidentally, my 5 year old laptop registers as a 2.0 and it was mid level at the time I purchased it.

Chris Lively
But that takes into consideration the video card, no? This would be entirely irrelevant for a business app.
Stefan Kendall
The problem is that the majority of our clients haven't moved to Vista yet, nor are they planning to yet. So giving them a Windows Experience Index won't help them when XP doesn't give that value...
Daemonic
+1  A: 

Let's try this from another perspective.

First, test your application on a minimum configuration machine. What bottlenecks if any exist?

  • Does it cause a lot of disk swapping? If so, you need more RAM.
  • Is it generally slow when performing regular operations (excluding memory usage) then increase processor requirements.
  • Does it require diskspace beyond the app footprint such as for file handling? List that.
  • Does your app depend on certain instruction sets to be on chip? (SSE, Execute Disable Bit, Intel Virtualization,.. as examples). If so, then you have to list what processors will actually work with the app.

Typically speaking, if the app works fine when using a minimum configuration for the OS; then your "recommended" configuration should be identical to the OS's recommended.

At the end of the day, you probably need to have a couple of machines on hand to profile. Virtual machines are NOT a good option in this case. By definition, the VM and the host OS will have an impact. Further, just because you can throttle a certain processor down doesn't mean that it is running at a similar level to a processor normally built for that level.

For example, a Dual Core 1.8 GHz processor throttled to only use one core is still a very different beast than a P4 1.8 GHz processor. There are architectural differences as well as L2 and L3 cache changes.

By the same token, a machine with a P4 processor uses a different type of RAM than one with a dual core (DDR vs DDR2). RAM speeds do have an impact.

So, try to stick to the OS recommendations as they've already done the hard part for you.

Chris Lively