17
Determina, Inc. Persisting Information Across Application Executions Derek Bruening Determina, Inc.

Persisting Information Across Application Executions

  • Upload
    lionel

  • View
    18

  • Download
    0

Embed Size (px)

DESCRIPTION

Persisting Information Across Application Executions. Derek Bruening Determina, Inc. Dynamic vs. Static Program Analysis. Dynamic analysis has advantages: Access to entire app: libraries, generated code Visibility on exact use cases (data used and control flow followed) - PowerPoint PPT Presentation

Citation preview

Page 1: Persisting Information Across Application Executions

Determina, Inc.

Persisting Information Across Application Executions

Derek BrueningDetermina, Inc.

Page 2: Persisting Information Across Application Executions

2Determina, Inc.

Dynamic vs. Static Program Analysis

• Dynamic analysis has advantages:– Access to entire app: libraries, generated code– Visibility on exact use cases (data used and

control flow followed)– Applicable to any binary

• But…costly to do– Analysis cost is part of the runtime of the app– Analysis is applied every time the app is run

Page 3: Persisting Information Across Application Executions

3Determina, Inc.

Analysis Challenges

• Monitoring values of application variables is performance-intensive– Transparent instrumentation expensive on x86– May need to monitor more than just function

parameters

• Difficult to obtain enough data from short-lived applications

Page 4: Persisting Information Across Application Executions

4Determina, Inc.

Solution: Persistent Data

• Store results from prior application executions on disk

• Instrument different part of application in each run to keep costs down

• Combine results of each new run with stored data

• Once have enough data for analysis, send to central server

Page 5: Persisting Information Across Application Executions

5Determina, Inc.

Common Persistence Infrastructure

• Underlying execution engine can also benefit from persistence

• Can share the same validation and consistency models to ensure persisted state corresponds to current application code and behavior

Page 6: Persisting Information Across Application Executions

6Determina, Inc.

Managed Program Execution Engine

• Manipulate, at runtime, every instruction an arbitrary application executes, with:– Minimal performance penalty– Full transparency

• Exports interface for building custom tools

• No modifications to the hardware, operating system, or application

• Foundation of Determina Memory Firewall

Page 7: Persisting Information Across Application Executions

7Determina, Inc.

executable

Native Execution

library A library B

hardware platform

APPLICATION

Page 8: Persisting Information Across Application Executions

8Determina, Inc.

Execute From Code Cache

hardware platform

code cache

EXECUTION ENGINE

executable library A library B

APPLICATION

Page 9: Persisting Information Across Application Executions

9Determina, Inc.

basic block builder trace selectorSTART

dispatch

context switch

BASIC BLOCK CACHE

TRACE CACHE

non-control-flow instructions

non-control-flow instructions

indirect branch lookup

indirect branch stays on trace?

Managed Program Execution Engine

Page 10: Persisting Information Across Application Executions

10Determina, Inc.

Non-Amortized Overhead

• In steady-state, overhead is amortized• Overhead does show up in non-steady-state:

– Application start-up– Short-lived applications– Extensive new code execution

• Not an issue on servers (long-running apps)• A major issue on desktops

– Startup time is directly visible and perceived as a slowdown

Page 11: Persisting Information Across Application Executions

11Determina, Inc.

Traces

• Combine frequently executed sequences of basic blocks into traces– Superior code layout– Eliminate indirect branches

• Traces provide ~10% performance boost on longer-running applications

• Will they help startup performance, with its once-executed code?

Page 12: Persisting Information Across Application Executions

12Determina, Inc.

Solution: Persistent Code Cache

• Goals:– Improve start-up performance– Support process-shared code caches

• Challenges:– Re-design data structures to support persistence– Efficiently validate persisted files– Safely allow persistent file updates

Page 13: Persisting Information Across Application Executions

13Determina, Inc.

Prototype Implementation

• Supports both no-traces mode and trace building mode

• Persists at end of run to application-specific files, loaded in for the next run

• Does not support relocation

• Validates only the module base

Page 14: Persisting Information Across Application Executions

14Determina, Inc.

Per-Module Caches

hardware platform

cache exe cache libA cache libB

EXECUTION ENGINE

executable library A library B

APPLICATION

Page 15: Persisting Information Across Application Executions

15Determina, Inc.

Persistent Caches

hardware platform

cache exe cache libA cache libB

EXECUTION ENGINE

executable library A library B

APPLICATION

cache exe

cache libA

cache libB

PERSISTED CACHES

Page 16: Persisting Information Across Application Executions

16Determina, Inc.

Persistent Caches

hardware platform

cache exe cache libA cache libB

executable library A library B

APPLICATION

cache exe

cache libA

cache libB

PERSISTED CACHES

EXECUTION ENGINE

Page 17: Persisting Information Across Application Executions

17Determina, Inc.

Summary

• Persisting information across application executions has many advantages– Reduce overhead– Enable inter-process sharing– Enable accumulation of data from multiple runs

for broader view of application with less instrumentation or in presence of varying workloads

• Many challenges remain