This report describes how to use the provided script to profile NFD performance on ONL (https://onl.wustl.edu/) using Callgrind. Assumptions =========== This report assumes that users have an ONL account. If you don't have an account yet, please refer to the ONL official website to apply. Experiment Steps ================ 1. Login on the onlusr machine: ssh -L 7070:onlsrv:7070 @onl.arl.wustl.edu 2. Run RLI Open the topology file, and make reservation; if it is not successful, change the reservation time, and try again When your reservation is ready, commit. 3. Experiment Environment setup ONL does not allow us to install programs, this section describes the process to compile NFD code on your experiment nodes. (1) git clone the latest ndn-cxx code and NFD code to your home directory. git clone http://gerrit.named-data.net/NFD git clone http://gerrit.named-data.net/ndn-cxx (2) In RLI, you can see the nodes name. Just choose one, and ssh to it. (3) Compile and install ndn-cxx in your home directory. And then the NFD code. For NFD, you need to compile using debug mode. You may need to specify the PKG_CONFIG_PATH of the ndn-cxx library, and CXXFLAGS to make it work. (4) script modification clone scripts: git clone https://github.com/WU-ARL/NFD_Performance_Testing_on_ONL.git Note that John's script is to do the NFD performance testing, not for profiling. So we have to do some modifications (this is just a note, we will provide the script latter): (A) create a script "start_rtr_nfd.sh" to launch callgrind, and let callgrind call nfd ex: valgrind --tool=callgrind /path/to/your/nfd --config nfd.conf \ >& /tmp/nfd.log & (B) modify the "start_nfd.sh", let it run the latest NFD, not the one installed on ONL, which is v0.1.0 ex: /path/to/your/nfd --config nfd.conf >& /tmp/nfd.log & (C) modify "server/config_server.sh", let it run the latest nfdc (D) same reason as (C), modify "client/config_client.sh" (E) modify "killAll.sh", switch “killall nfd” to "pkill callgrind” in the last line. NFD Testing =========== Do test as the README in John's scripts describes. Check Result ============ kcachegrind is the GUI tool for callgrind. After the test, callgrind will generate a output file named as "callgrind.out.". You may need to use the kcachegrind to open it. kcachegrind: http://kcachegrind.sourceforge.net/html/Home.html If you use MacOS, it is easier to install qcachegrind (already contained in kcachegrind tar file)