1

What are some ways to help identify issues in a large multi-threaded c++ application that may be encumbered by access to storage I/O?

I can analyze an application to find specific slowdowns for specific runs but I cannot seem to simulate a slow I/O to help identify specific problem areas.

Performance can be a different when any of the main system components are tweaked (CPU, memory, and I/O) and I would think that it would be useful to see the difference in runs where this set of dependent components vary.

I am familiar with running tools such as VTune, if there is somewhere inside this analyzer that can do this I would like to know but I would be open to using other tools.

spellmansamnesty
  • 469
  • 4
  • 10
  • 2
    if your I/O concern is separated into a component, you could decorate it with delays – Dmitry Ledentsov Jul 30 '14 at 14:42
  • That is true. I may do this, although it may be tedious. There are many different ways that storage is hit. – spellmansamnesty Jul 30 '14 at 14:56
  • 1
    I would write a small application that reads and writes to the storage with controllable parameters for throughput and run it in parallel to your application effectively putting the desired stress to the system. This way you can check different scenarios and worloads – Sebastian Cabot Jul 30 '14 at 15:16
  • Never simulate when you can actually measure. Go to the storage room, find the oldest hard drive you can find, and write and read that. VTurne ect are great at identifying the hot spots in code you want to speed up, but they require debug code and take up resources themselves so they do a poor job at measuring actual performance. – IdeaHat Jul 30 '14 at 15:17

1 Answers1

0

You could create and mount a FUSE filesystem that just wraps regular filesystem calls in a delay: http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/

Aaron Altman
  • 1,705
  • 1
  • 14
  • 22