Understanding and Enhancing Linux Kernel-based Packet Switching on WiFi Access Points
This github page provides all testbed scripts and detailed data analysis scripts for Understanding and Enhancing Linux Kernel-based Packet Switching on WiFi Access Points paper.
List the main components of this project:
-
testbed (performance matrix) : 1.The meassurement process conducted automatelly. 2.The data from different servers retrieved automatically. 3.Testbed runs the first check for data validation. 4.Testbed will restart the testbed from the endpoint or unfinished tests
-
Data_analysis: 1. Data analysis process find and use the valid time interval data. 2.Data analysis process will process the data for better visualization
-
Figures
- Clone the repository:
git clone https://github.com/SIOTLAB/wifi-packet-switching-analysis.git
- Navigate to the project directory:
cd wifi-packet-switching-analysis/testbed
- add configuration for all servers:
vim ssh.json # add necessary server ip and passwd
- start test.
python3 ./pipeline.py
- adjust the parameter of test if necessary
- Use perf to get the data of processor cycles
perf record -e cycles:k -C 0,1 sleep 10
- git clone Flamegraph
git clone https://github.com/brendangregg/FlameGraph # or download it from github
- get the flamegraph
perf script | ./FlameGraph/stackcollapse-perf.pl > out.perf-folded ./FlameGraph/flamegraph.pl out.perf-folded > perf.svg # view this graph in Firefox or chrome
-
set Processor CPU affinity
cat /proc/interrupts #check the IRQ number of ethernet or wireless sudo su echo 2 > /proc/irq/xx/smp_affinity
-
other configurations that we needed in test
sudo sysctl -w net.ipv4.ip_forward=1 sudo iw wlan0 set power_save off sudo tc qdisc add dev eth1 root fq_codel sudo ethtool -K eth1 generic-segmentation-offload off sudo ethtool -K eth1 generic-receive-offload off sudo ethtool -K wlan0 generic-segmentation-offload off sudo ethtool -K wlan0 generic-receive-offload off sudo sysctl -w net.core.netdev_budget=300 sudo sysctl -w net.core.netdev_budget_usecs=8000 sudo sysctl -w net.core.dev_weight=64
-
use perf for l1-dcache invalidation and content-switching
perf stat -e l1d-cache-invalidation -C 0,1 sleep 10 perf stat -e context-switches -C 0,1 sleep 10
Shiqi Zhang szhang9@scu.edu Mridul Gupta magupt@scu.edu Behnam Dezfouli bdezfouli@scu.edu