Persisting Information Across Application Executions

Preview:

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

Determina, Inc.

Persisting Information Across Application Executions

Derek BrueningDetermina, Inc.

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

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

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

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

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

7Determina, Inc.

executable

Native Execution

library A library B

hardware platform

APPLICATION

8Determina, Inc.

Execute From Code Cache

hardware platform

code cache

EXECUTION ENGINE

executable library A library B

APPLICATION

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

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

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?

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

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

14Determina, Inc.

Per-Module Caches

hardware platform

cache exe cache libA cache libB

EXECUTION ENGINE

executable library A library B

APPLICATION

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

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

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