https://bugs.kde.org/show_bug.cgi?id=384633

            Bug ID: 384633
           Summary: Add a simple progress-reporting facility
           Product: valgrind
           Version: 3.14 SVN
          Platform: Other
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: jsew...@acm.org
          Reporter: jsew...@acm.org
  Target Milestone: ---

This is a proposal for a small enhancement to Valgrind's debugging output.

For long runs of Valgrind, I find it useful to have some rough indication as
to how the run is progressing.  This makes it possible, for example, to
guess when approximately the program will reach some desired state.

The attached patch adds a new command line flag, --progress-interval=number.
This causes V to print a 1-line summary of progress every |number| seconds.
For example, when starting Firefox with --progress-interval=10, I get lines
like this

--32411-- PROGRESS: U 110s, W 113s, 97.3% CPU, EvC 414.79M, TIn 616.7k, TOut
0.5k, #thr 67
--32411-- PROGRESS: U 120s, W 124s, 96.8% CPU, EvC 505.27M, TIn 636.6k, TOut
3.0k, #thr 64
--32411-- PROGRESS: U 130s, W 134s, 97.0% CPU, EvC 574.90M, TIn 657.5k, TOut
3.0k, #thr 63
--32411-- PROGRESS: U 140s, W 144s, 97.2% CPU, EvC 636.34M, TIn 659.9k, TOut
3.0k, #thr 62
--32411-- PROGRESS: U 150s, W 155s, 96.8% CPU, EvC 710.21M, TIn 664.0k, TOut
17.7k, #thr 61
--32411-- PROGRESS: U 160s, W 201s, 79.6% CPU, EvC 822.38M, TIn 669.9k, TOut
75.8k, #thr 60

Each line shows:
   U:    total user time
   W:    total wallclock time
   CPU:  overall average cpu use
   EvC:  number of event checks.  An event check is a backwards branch
         in the simulated program, so this is a measure of forward progress
         of the program
   TIn:  number of code blocks instrumented by the JIT
   TOut: number of instrumented code blocks that have been thrown away
   #thr: number of threads in the program

>From the progress of these, it is possible to observe:

* when the program is compute bound (TIn rises slowly, EvC rises rapidly)
* when the program is in a spinloop (TIn/TOut fixed, EvC rises rapidly)
* when the program is JIT-bound (TIn rises rapidly)
* when the program is rapidly discarding code (TOut rises rapidly)
* when the program is about to achieve some expected state (EvC arrives
  at some value you expect)
* when the program is idling (U rises more slowly than W)

I have found this very useful this past few months and would like to land it.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to