DrCCTProf
DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures. DrCCTProf (together with its predecessor CCTLib) won a numbe of paper awards, including ASPLOS'17 Highlight, ICSE'19 Distinguished Paper Award, SC'20 Best Paper Finalist.
Contents
Installation
Linux
1 Install dependencies
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.
2 Build
Use the following commands to get source code and build DrCCTProf:
$ git clone --recurse https://github.com/Xuhpclab/DrCCTProf.git
$ ./build.sh
Usage
Linux
To run DrCCTProf, one needs to use the following command:
1 Set the global environment variable
$ export drrun=/path/to/DrCCTProf/build/bin64/drrun
2 Run client tool
$ $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!"
$ $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 |
Support Platforms
The following platforms pass our tests.
Linux
CPU |
System |
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 |
Fujitsu A64FX |
CentOS 8.1 |
aarch64 |
Obtaining Help
Report an error case of building
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.
Report a bug
Please use the bug report.
License
DrCCTProf is released under the MIT License.
Related Publication
- Milind Chabbi, Xu Liu, and John Mellor-Crummey. 2014. Call Paths for Pin Tools. In Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO '14). ACM, New York, NY, USA, , Pages 76 , 11 pages. DOI=http://dx.doi.org/10.1145/2544137.2544164
- Milind Chabbi, Wim Lavrijsen, Wibe de Jong, Koushik Sen, John Mellor-Crummey, and Costin Iancu. 2015. Barrier elision for production parallel programs. In Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2015). ACM, New York, NY, USA, 109-119. DOI=http://dx.doi.org/10.1145/2688500.2688502
- Milind Chabbi and John Mellor-Crummey. 2012. DeadSpy: a tool to pinpoint program inefficiencies. In Proceedings of the Tenth International Symposium on Code Generation and Optimization (CGO '12). ACM, New York, NY, USA, 124-134. DOI=http://dx.doi.org/10.1145/2259016.2259033
- Shasha Wen, Xu Liu, Milind Chabbi, "Runtime Value Numbering: A Profiling Technique to Pinpoint Redundant Computations" The 24th International Conference on Parallel Architectures and Compilation Techniques (PACT'15), Oct 18-21, 2015, San Francisco, California, USA
- Shasha Wen, Milind Chabbi, and Xu Liu. 2017. REDSPY: Exploring Value Locality in Software. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '17). ACM, New York, NY, USA, 47-61. DOI: https://doi.org/10.1145/3037697.3037729
- Pengfei Su, Shasha Wen, Hailong Yang, Milind Chabbi, and Xu Liu. 2019. Redundant Loads: A Software Inefficiency Indicator. In Proceedings of the 41st International Conference on Software Engineering (ICSE '19). IEEE Press, Piscataway, NJ, USA, 982-993. DOI: https://doi.org/10.1109/ICSE.2019.00103
- Jialiang Tan, Shuyin Jiao, Milind Chabbi, Xu Liu. What Every Scientific Programmer Should Know About Compiler Optimizations? The 34th ACM International Conference on Supercomputing (ICS'20), Jun 29 - Jul 2, 2020, Barcelona, Spain.
- Xin You, Hailong Yang, Zhongzhi Luan, Depei Qian, Xu Liu. Zerospy: Exploring the Software Inefficiencies with Redundant Zeros, The International Conference for High Performance Computing, Networking, Storage and Analysis (SC'20), Nov 15-20, 2020, Atlanta, GA, USA.
- Qidong Zhao, Xu Liu, Milind Chabbi. DRCCTPROF: A Fine-grained Call Path Profiler for ARM-based Clusters, The International Conference for High Performance Computing, Networking, Storage and Analysis (SC'20), Nov 15-20, 2020, Atlanta, GA, USA.