System-level Tuning

The first level of performance tuning is system-level tuning. The goal of system-level tuning is to optimize system resource utilization and speed up your application by improving the way it interacts with the system. System-level tuning usually gives the greatest speed-up with the least amount of effort, making it a good place to start. It is especially relevant for I/O-intensive applications such as applications that are disk-intensive or network-intensive. However, if you know that your application is very processor-intensive (and not I/O-intensive), you may want to skip system-level tuning and move directly to application-level tuning.  

System-level tuning involves the following steps:

  1. Monitor the operating system counters using a tool such as top, gtop, and GKrellM or the VTune analyzer’s counter monitor data collector for applications running on Windows* operating systems.

  2. Interpret the counter data to locate system-level performance bottlenecks and opportunities for improving the way your application interacts with the system.

Once you have resolved system-level performance issues, or have determined that there are no significant system-level issues, you can move on to the next tuning level, application-level tuning.

Two types of system-level optimizations are available: changes to the application (to better match the application to the system) and changes to the system configuration (to better match the system to the application).  If you have complete control over the configuration of the system on which the application will eventually be used, then both types of optimizations are equally relevant.  If you have less control over the end user's system configuration, you should choose one or more test system configurations that represent the range of configurations on which your application will be run, then focus more on system-level optimizations involving changes to the application (and focus less on optimizations involving changes to the system configurations).

Operating system data can vary depending on the system configuration of the test system. Make sure to optimize your application for system configuration(s) that represent the system configurations used by the majority of your end-users.