SOFA: SOFA (Swarm-Oriented Function Call Analysis) Authors: All the contributors of SOFA
- Run
./tools/prepare.sh
to install all the necessary packages and python packages. - [OPTIONAL] Run
./tools/empower-tcpdump.sh $(whoami)
to make network related events tracable in SOFA. After running this step, it is required to re-login to APPLY THE CHANGES!!!
Run the following simple tests to verify the permission settings of executing tcpdump under your permission.
tcpdump -w sofa.pcap
tcpdump -r sofa.pcap
- Simply run
./install.sh </PATH/TO/INSTALL>
to install SOFA on your system. Note thatsofa
will be appended to the path if the last directory is not sofa. - Then, run
source </PATH/TO/INSTALL>/sofa/tools/activate.sh
to activate SOFA running environment. (Need to be executed on each new shell.) - [ALTERNATIVE] Add
source </PATH/TO/INSTALL>/sofa/tools/activate.sh
in your~/.bashrc
to make this environment available on every shell.
Run bash </PATH/TO/INSTALL>/sofa/tools/uninstall.sh
to safely remove/uninstall files of SOFA.
SOFA supports serveral different usages, like how one can use perf.
- Profile your program by sampling involved CPUs:
sofa stat "wget http://www.bbc.com/news"
- Profile your program by sampling all CPUs:
sofa stat "wget http://www.bbc.com/news" --profile_all_cpus
sofa record "wget http://www.bbc.com/news"
sofa report
- Open browser with one of the following links for different visualizations
- Run
sofa record "wget http://www.bbc.com/news"
only once to record the events. - Run
sofa preprocess
only once to process raw performance data and generate immediate results. - Run
sofa analyze
performance statistics will be displayed on your console - Run
sofa viz --viz_port=8000
dynamic trace will be displayed on port 8000 (default)
SOFA provides options for configurations. Some examples are shown below. Please use sofa --help
to see more info.
sofa --cpu_filters="idle:black,tensorflow:orange" record "python tf_cnn_benchmarks.py"
sofa --gpu_filters="tensorflow:orange" record "python tf_cnn_benchmarks.py"
sofa record "python3.6 pytorch_dnn_example.py -a resnet50 /mnt/dataset/imagenet/mini-imagenet/raw-data --epochs=1 --batch-size=64"
sofa record "./scout dt-bench ps:resnet50 --hosts='192.168.0.100,192.168.0.101'"
sofa record "~/cuda_samples/1_Utilities/bandwidthTest/bandwidthTest"