I was recently profiling a script to see where the time went, and I ended up wanting to extract the profiles for just a single component. The structure of an analyzer experiment is that there's a single root directory (test.1.er) and inside that there's a single level of subdirectories representing all the child processes. Each subdirectory is a profile of a single process - these can all be loaded as individual experiments. Inside every experiment directory there is a log.xml file. This file contains a summary of what the experiment contains.
The name of the executable that was run is held on an xml "process" line. So the following script can extract a list of all the profiles of a particular application.
$ grep myapp `find test.1.er -name 'log.xml'`|grep process | sed 's/\:.*//' > myapp_profiles
Once we have a list of every time my application was run, I can now extract the times from that list, and sort them using the following line:
$ grep exit `cat <myapp_files`|sed 's/.*tstamp=\"//'|sed 's/\".*//'|sort -n
Once I have the list of times I can use then locate an experiment with a particular runtime - it's probably going to be the longest runtime:
$ grep exit `cat <myapp_files`|grep 75.9
No comments:
Post a Comment