Giter Site home page Giter Site logo

njoubert / pervert Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 27.83 MB

Performance Visualization and Error Remediation Toolkit

C++ 22.17% Objective-C 0.01% C 6.03% C# 0.03% Python 0.21% JavaScript 0.74% Perl 1.04% Shell 0.09% PHP 0.10% Assembly 0.97% Makefile 1.96% HTML 66.14% CSS 0.28% Roff 0.02% TeX 0.20% Batchfile 0.01% GDB 0.01% M 0.01% OpenEdge ABL 0.01% Limbo 0.01%

pervert's Introduction

PerVERT: Performance Visualization and Error Remediation Toolkit

Authors:

This is a class project for Prof. Jeff Heer's CS448B class at Stanford.

Paper Link

Abstract

Performance tuning is an important step in the development large software systems. Examples include web-servers which routinely handle thousands of simultaneous content requests, and petaflop su- percomputers which perform physical simulations that span tens of thousands of cpu cores. As improvements in clock frequency slow and hardware trends continue towards increased parallelism, the runtime performance of these and similar systems will become ever more a function of memory efficiency. Unfortunately, the ability to effectively reason about this phenomenon using existing tools such as valgrind [Nethercote and Seward 2007], gprof [Graham et al. 2004], or gdb [Stallman and Pesch 1991], through a text-based in- terface, is limited, and tedious at best.

We present PerVERT, an instrumentation framework for logging a process’s virtual memory traffic and a visualization suite for rea- soning about common memory performance bugs: Are memory accesses organized coherently in both spatial and temporal dimen- sions? To what extent do these patterns differ based on program inputs or changes in source code?

Running Code

The webserver is built in C/C++ on top of mongoose (included in this distribution).

First, compile the backend:

cd ./backend
make

To see one of our example analysis, you can run:

./debug_all

This will start up a backend server with many of our examples from /testdata loaded. Now point your web browser to:

http://localhost:8083/?exec=vector1

and hit the play button!

Code Organization

First, a pintool plugin instruments an arbitrary executable to trace its memory usage, and dumps out log files. These log files are consumed by the web backend, and published to the web frontend where the user is provided with a visualization of memory activity.

/Pintool

This is a plugin for the pintool binary analysis and instrumentation tool.

/Backend

This runs a mongoose webserver with a connect.js-like Layered Server Middleware layer. It serves the /frontend directory as static files.

The webserver backend reads the log files from our pintool plugin,

/Frontend

This contains all the client-side HTML, CSS and JavaScript that creates the interface for visualizing the results of a performance trace.

/Examples

Contains snippets of code we analyze for memory usage

/testdata

Contains the resulting pintool log files from analyzing the snippets of code in /examples

pervert's People

Contributors

eschkufz avatar njoubert avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.