Profiling application resource usage

Inside View

Summary

Knowing your application is one of the keys to being able to improve it and, perhaps most importantly, being able to judge which architecture (or architectures) you should be using. Essentially, "knowing yourself" from an application perspective is very important in the current climate, where non-x86 processors are on the rise and where accelerators are also becoming more commonplace and diverse.

Two basic approaches are available to help you understand your application: profiling, which gathers summary data when an application is run, and tracing, which presents a history of events as a function of time when the application is executed.

I believe both tools can be used to gather information about your application so that you can begin to paint a picture of how your application behaves and how it interacts with the system.

In my opinion, application profiling or tracing is not enough: You also need to profile and trace the system while the application is running so you get a much more complete picture of what the application is doing and what the system is doing to support the application or in response to it.

I hope this article has given you some starting points in finding tools and techniques to learn more about your application. My advice is to not be overwhelmed with the choices; rather, pick one or two of the tools and start using them. Once you become adept at using the tools you will learn more about your application and can use the other tools to further develop a behavior profile. It will truly be worth the effort.

Infos

  1. ARM architecture: http://en.wikipedia.org/wiki/ARM
  2. Loonson: http://en.wikipedia.org/wiki/Loongson
  3. Godson-3B: http://www.theregister.co.uk/2012/11/26/godson_mips_chip_isscc_preview/
  4. AMD APU: http://www.amd.com/us/products/desktop/processors/a-series/Pages/a-series-pib.aspx
  5. Profiling and tracing: http://www.open-mpi.org/faq/?category=perftools#prof-vs-trace
  6. Performance analysis tools: http://en.wikipedia.org/wiki/List_of_performance_analysis_tools
  7. gprof: http://en.wikipedia.org/wiki/Gprof
  8. gprof tutorial: http://www.thegeekstuff.com/2012/08/gprof-tutorial/
  9. GNU profiler tutorial: http://www.ibm.com/developerworks/library/l-gnuprof.html
  10. gprof quick start: http://web.eecs.umich.edu/%7Esugih/pointers/gprof_quick.html
  11. Valgrind: http://valgrind.org/
  12. Cachegrind: http://valgrind.org/docs/manual/cg-manual.html
  13. Callgrind: http://valgrind.org/docs/manual/cl-manual.html
  14. Valgrind/callgrind tutorial: http://matt.eifelle.com/2009/04/07/profiling-with-valgrind/
  15. PAPI: http://icl.cs.utk.edu/papi/
  16. Linux-perfctr: http://user.it.uu.se/%7Emikpe/linux/perfctr/
  17. Linux-perfctr and kernel version: http://icl.cs.utk.edu/papi/faq/index.html#46
  18. perf tutorial: https://perf.wiki.kernel.org/index.php/Tutorial
  19. OProfile: http://oprofile.sourceforge.net/news/
  20. OProfile cheatsheet: http://oprofile.sourceforge.net/docs/
  21. OProfile GitHub tutorial: http://ssvb.github.com/2011/08/23/yet-another-oprofile-tutorial.html
  22. Visual OProfile: http://www.stlinux.com/devel/stw/oprofile
  23. Sysstat utilities: http://sebastien.godard.pagesperso-orange.fr/
  24. System monitoring with sar and ksar: http://www.howtoforge.com/system-monitoring-with-sar-and-ksar
  25. ksar: http://sourceforge.net/projects/ksar/
  26. Sysstat how-to: http://www.linux.com/learn/tutorials/33766-sysstat-howto-a-deployment-and-configuration-guide-for-linux-servers
  27. SarCheck: http://www.sarcheck.com/
  28. Monitor Your Nodes with collectl: http://www.admin-magazine.com/HPC/Articles/Monitor-Your-Nodes-with-collectl
  29. MPE: http://www.mcs.anl.gov/research/projects/perfvis/download/index.htm#MPE
  30. Paraver: http://www.bsc.es/computer-sciences/performance-tools/paraver
  31. Scalasca: http://www.scalasca.org/

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Profiling Is the Key to Survival

    Computing hardware is constantly changing, with new CPUs and accelerators, and the integration of both. How do you know which processors are right for your code?

comments powered by Disqus