Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
dolanzhao committed Aug 16, 2020
1 parent 86f63ff commit 04b2a86
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 11 deletions.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ paste output here

**Information on your system:**

- CPU Info: [eg. arch@aarch64 model_name@ThunderX2_99xx]
- System Version: [e.g. Ubuntu14.04]
- Depand Package Version: [e.g. [email protected], [email protected], [email protected], [email protected]]
- Application Version: [[email protected]]
Expand Down
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/build_error.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: Build error
about: Show an error case of build DrCCTProf
about: Report an error case of building DrCCTProf
title: "Build error: "
labels: "build-error"
---
Expand All @@ -21,6 +21,7 @@ paste output here

**Information on your system:**

- CPU Info: [eg. arch@aarch64 model_name@ThunderX2_99xx]
- System Version: [e.g. Ubuntu14.04]
- Depand Package Version: [e.g. [email protected], [email protected], [email protected], [email protected]]

Expand Down
105 changes: 95 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,110 @@
# DrCCTProf

## Instructions for building DrCCTProf
DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures. Please see our [blog](http://www.cs.wm.edu/~xl10/blog/drcctprof.html) for more details.

## Installation

### Linux

To build DrCCTProf on Linux, use the following commands as a guide. This builds 64-bit DrCCTProf in release mode:
#### Install Dependencies

```
# Install dependencies for Ubuntu 15+. Adjust this command as appropriate for
# other distributions (in particular, use "cmake3" for Ubuntu Trusty).
$ sudo apt-get install cmake g++ g++-multilib doxygen transfig imagemagick ghostscript git zlib1g-dev
# Get sources.
In order to build you'll need the following packages:

* gcc (at least version 4.8)
* binutils (at least version 2.26)
* [cmake](https://cmake.org/download/) (at least version 3.7)
* perl

To avoid conflicts with installed original version packages, we recommend that use [Spack](https://spack.io/) to manage the above packages and create a virtual environment to build and run DrCCTProf.

#### Build

Use the following commands to get sources and build DrCCTProf:

```console
$ git clone --recurse https://github.com/Xuhpclab/DrCCTProf.git
# Then, simply type "sh build.sh" This will configure, make, and check DrCCTProf.
```
```console
$ ./build.sh
```

### Android

Working in process...

## Usage

### Linux

To run DrCCTProf, one needs to issue the following command:

#### Set the global environment variable

```console
$ export drrun=/path/to/DrCCTProf/build/bin64/drrun
```
# drrun -t client -- application


#### Run client tool

* **x86_64**

```console
$ /path/to/DrCCTProf/build/bin64/drrun -t <client tool> -- <application> [apllication args]
```

drrun is installed at DrCCTProf/build/bin64 and clients are installed in DrCCTProf/build. The source code of clients based on DrCCTProf can be found in DrCCTProf/src/clients.
* **aarch64**

```console
$ DrCCTProf/build/bin64/drrun -unsafe_build_ldstex -t <client tool> -- <application> [apllication args]
```

## Client tools

### Internal client tools list

| Name | Features | Status |
|--------------------------------------|-----------------------------------------------------------------------------|---------|
| drcctlib_cct_only_clean_call | A tool that collects call path on each instruction. | release |
| drcctlib_instr_statistics_clean_call | A instruction counting tool that counts each instruction. | release |
| drcctlib_reuse_distance_client_cache | A reuse distance measurement tool. | release |
| drcctlib_cct_only | (Code cache mode)A tool that collects call path on each instruction. | beta |
| drcctlib_instr_statistics | (Code cache mode) A instruction counting tool that counts each instruction. | beta |
| drcctlib_reuse_distance | (Code cache mode) A reuse distance measurement tool. | beta |

### How to build your own custom tools?

See [documentation](doc/build_custom_client_tool.md) for details.

## Support Platforms

The following platforms have passed our tests.

### Linux

| CPU | Systems | Architecture |
|-----------------------------------|-----------------|--------------|
| Intel(R) Xeon(R) CPU E5-2699 v3 | Ubuntu 18.04 | x86_64 |
| Intel(R) Xeon(R) CPU E5-2650 v4 | Ubuntu 14.04 | x86_64 |
| Intel(R) Xeon(R) CPU E7-4830 v4 | Red Hat 4.8.3 | x86_64 |
| Arm Cortex A53(Raspberry pi 3 b+) | Ubuntu 18.04 | aarch64 |
| Arm Cortex-A57(Jetson Nano) | Ubuntu 18.04 | aarch64 |
| ThunderX2 99xx | Ubuntu 20.04 | aarch64 |
| AWS Graviton1 | Ubuntu 18.04 | aarch64 |
| AWS Graviton2 | Ubuntu 18.04 | aarch64 |

## Obtaining Help

### Report an error case of building

Please use the [build error report](https://github.com/Xuhpclab/DrCCTProf/issues/new?labels=build-error&template=build_error.md&title=Build+error).

DrCCTProf is built atop [DynamoRIO](https://github.com/DynamoRIO/dynamorio). If you get errors in building, you can also search the [DynamoRIO's issues](https://github.com/DynamoRIO/dynamorio/issues) to get help.

### Report a bug

Please use the [bug report](https://github.com/Xuhpclab/DrCCTProf/issues/new?labels=bug-report&template=bug_report.md&title=Bug+report).

## License

DrCCTProf is released under the [MIT License](http://www.opensource.org/licenses/MIT).
3 changes: 3 additions & 0 deletions doc/build_custom_client_tool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# How to build your own custom tools?

coming soon

0 comments on commit 04b2a86

Please sign in to comment.