Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determining recommended system requirements

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)

like image 555
Daemonic Avatar asked May 21 '09 14:05

Daemonic


2 Answers

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.

like image 118
NotMe Avatar answered Oct 23 '22 03:10

NotMe


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.

like image 22
PaulJWilliams Avatar answered Oct 23 '22 04:10

PaulJWilliams