DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures. Please see our blog for more details.
In order to build you'll need the following packages:
- gcc (>= 4.8)
- binutils (>= 2.26)
- cmake (>= 3.7)
- perl
To avoid version conflicts with any packages, we recommend to use Spack to manage the above packages and create a virtual environment to build and run DrCCTProf.
Use the following commands to get source code and build DrCCTProf:
$ git clone --recurse https://github.com/Xuhpclab/DrCCTProf.git
$ ./build.sh
To run DrCCTProf, one needs to use the following command:
$ export drrun=/path/to/DrCCTProf/build/bin64/drrun
- x86_64
$ $drrun -t <client tool> -- <application> [apllication args]
e.g. The command below will start the client drcctlib_instr_statistics_clean_call to analyze echo "Hello World!".
$ $drrun -t drcctlib_instr_statistics_clean_call -- echo "Hello World!"
- aarch64
$ $drrun -unsafe_build_ldstex -t <client tool> -- <application> [apllication args]
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 |
See documentation for details.
The following platforms pass our tests.
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 |
Please use the build error report.
DrCCTProf is built atop DynamoRIO. If you get errors in building, you can also search the DynamoRIO's issues to get help.
Please use the bug report.
DrCCTProf is released under the MIT License.