Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Evaluate software minimum requirements

Is there a way to evaluate the minimum requirements of a software? I mean, how can I discover, for example, the minimum amount of RAM that my application will need?

Thanks!

like image 471
Fernando Avatar asked Jul 03 '09 15:07

Fernando


1 Answers

A profiler will not help you here. Neither will estimating the size of data structures.

A profiler can certainly tell you where your code is spending the most CPU time, but it will not tell you if you are missing performance targets - e.g. if your users will be happy, or unhappy with the performance of your application on any given system.

Simply computing the size of data structures, and how many may be allocated at any one time will not at all give you an accurate picture of memory usage over time. The reason is that memory usage is determined by many other factors including how much I/O your application does, what OS services your application uses, and most importantly the temporal nature of how your application uses memory.

The most effective way to understand minimum requirements is to

  • Make sure you have an effective way of measuring performance using metrics that are important to your user. the best metric is response time. Depending on your app, a rate such as throughput or operations per second may be applicable. Your measurements could be empirical (e.g. just try it) but that is least effective. This is best done with some kind of instrumentation. On windows, the choice is [ETW][1]. Other operating systems have other suitable mechanisms.
  • Have some kind of automated method of exercising your application. This will let you make repeated and reliable measurements.
  • Measure your application using various memory sizes and see where performance begins to suffer. This may also expose performance bugs that prevent your application from performing well. If you have access to platforms of various performance levels, use those as well. You didn't indicate what your app does, but testing on a netbook with 1GB of memory is great for many (not all) client applications.

You can do the same with the CPU and other components such as disk, networking or the GPU.

Also note that there is no simple answer here - doing an effective job at setting minimum requirements is real work. This is especially true if your application is participatory sensitive to one platform aspect or another.

There are other factors as well - for example, your app may run fine in one configuration until the user opens another application that may be memory hungry or a CPU pig. Users rarely only have one application open.

This means that in addition to specifying minimum requirements you must do an effective job in setting user expectations - that is explaining when your application will perform well, and when it won't, and what the factors are that impact performance.

[1]: http://msdn.microsoft.com/en-us/library/ms751538.aspxstrong text

like image 95
Foredecker Avatar answered Sep 19 '22 18:09

Foredecker