[abc] oopsla outline

From: Oege de Moor <Oege.de.Moor@comlab.ox.ac.uk>
Date: Wed Mar 01 2006 - 21:01:19 GMT

* deadline: March 18

* aim to have preliminary numbers for all
   entries of tables outlined below asap
>> These tables are the heart of the paper: <<
>> if they're ok, the paper will be fine. <<

* please comment, especially on issues
   in capitals and ??? issues

* Oxford authors meet 1:30pm in 005
   on March 2 to discuss this paper plan
   and who does what

Efficient trace monitoring
--------------------------

1. Introduction

- lots of proposals for trace monitoring
   concensus it's useful
- severe efficiency problems, and therefore
   hardly any practical implementations

contributions of this paper:
- we carefully investigate these problems
   through a representative set of benchmarks
- based on the benchmark results, we
   propose the following techniques for
   an improved implementation:
    * careful automaton generation
       (cf PQL: Julian's safeenum variation)
    * specialise code to automaton
       (cf J-Lo statemachine interpreter)
    * avoid memory leaks by pattern analysis
       (cf all other systems)
    * quickly find relevant bindings through
      indexing of partial solutions; the indexing
      scheme again determined by analysis of pattern
   all of these techniques are low-cost at
   compilation time, and only require careful
   analysis of the pattern, not whole-program
   analysis
- our experiments show these techniques are
   effective
- we also examine the relative cost of different
   features, in particular
    * cost of negative bindings
    * context-free properties
- finally, we discuss how more advanced
   analysis of the monitored program can
   yield even better results, and present
   some experiments where such optimisations
   have been applied by hand

2. Systems

2.1 Benchmarked systems [what's this all about?]

sketch of safe enum in Aspectj, J-Lo, tracematches
and PQL

WOULD BE NICE TO ALSO HAVE ALPHA, or HAWK.

2.2 Other systems [wow, this is a hot topic!]

comparative table with + and - to highlight differences
at a glance

rows: (in this order)

  aspectj,
  JLo: bodden&stolz,
  Hawk: havelund,
  us: tracematches,
  tracecuts: walker&viggers,
  pql: martin et al,
  ptql: goldsmith et al,
  jassco: De Fraine et al
  (calculi): douence et al,
             jagadeesan et al

columns (in this order, with subheadings)
  purpose
    - fault finding
    - functionality
  integration in Java
  patterns
    - free variables
    - filtering
    - contextfree
  implementation
    - semantics
    - indexing
    - leak busting
    - static matching

3. Experiments

3.1 General challenges
Attempt to identify the main difficulties.
Only one benchmark: safeenum on jhotdraw.

Aspectj:
     naive (hash table)
         tmbenches/jhotdraw/naiveaspects
     proper (weak refs)
         tmbenches/jhotdraw/aspects
     smart aspect (the gold standard for efficiency)_
         tmbenches/jhotdraw/handoptim
J-Lo
         tmbenches/jhotdraw/jlo
tracematch:
     without leakbusting [need switch for that!]
         tmbenches/jhotdraw/tracematches
     with leakbusting but without indexing
         tmbenches/jhotdraw/tracematches
     without leakbusting but with indexing
     with leakbusting and with indexing
         tmbenches/jhotdraw/tracematches
pql:
     plain
         ??? NOT CHECKED IN!! ???
     with Julian's variation
         ??? NOT CHECKED IN!! ???

Conclusion: further experiments with AspectJ,
             tracematches (4 versions)
             and PQL

3.2 Further experiments

for each (pattern, base program) combination
runtime numbers for 7 systems:
   no observer
   aspectj,
   tms (with indexing and leakbusting on and off),
   pql where available
also #lines for each of these
   (or some better metric of complexity?)
KSLOC for base program

pattern base program pql? where
------- ------------ --- -----
nulltracker certrevsim no tmbenches/nulltracker
hashcode aprove no tmbenches/aprove
observer ajhotdraw yes tmbenches/ajhotdraw/ajhotdraw-tm/ajhotdraw-0.3-src/src/aspects/observdrawchange
dbpooling artificial ?? tmbenches/dbpooling
locallocks jigsaw yes tmbenches/Jigsaw/{LockAspect.aj,ReducedThisJPLockTraceMatch.aj}
lor jigsaw ?? ??

[6*7 table not bad, however:

WOULD BE GOOD TO TRY NULLTRACKER AND HASHCODE ON SOME OTHER
EXAMPLES SUCH AS WEKA ...

more pql comparisons would be good, too]

3.3 What makes a good pattern?
Main issues:
- cost of negative bindings
- leaky patterns
- importance of restricting instrumentation points with "contains"
- context-free with regexps plus binding thisJP
- or with cflowdepth?

Discuss with all the different versions of Jigsaw [all 17 of them!]

3.4 Conclusions of experiments [ooh! how well abc did there!]

Main challenges in implementing trace monitoring features are:
- careful construction of state machine
- representing positive and negative bindings
- specialising code gen to pattern
- avoiding leaks
- quick look up of partial matches in index

4. Local optimisation techniques [how abc does it]
Rules of the game: only analyse monitor code, not
the base program
4.1 state machine
4.2 representing bindings
4.3 specialising codegen to pattern
4.4 detecting and avoiding leaks
4.5 indexing

5. Future work [Scope for interprocedural optims]
5.1 predicting paths and bindings
5.2 compile binding info to itds
     numbers for tmbenches/itds

6. Conclusions
Received on Wed Mar 01 21:01:21 2006

This archive was generated by hypermail 2.1.8 : Tue Mar 06 2007 - 16:13:27 GMT