Created
March 30, 2021 00:55
-
-
Save atoonk/04b65ce865135b16c6404a69778fda5c to your computer and use it in GitHub Desktop.
pktgen install
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
if [ `whoami` != 'root' ]; then | |
echo "Please run this as root..., don't worry about it..." | |
exit 1 | |
fi | |
echo "updating fstab" | |
r=`grep hugetlbfs /etc/fstab` | |
if [ $? -eq 1 ]; then | |
echo "huge /mnt/huge hugetlbfs defaults 0 0" >> /etc/fstab | |
fi | |
if [ ! -d /mnt/huge ]; then | |
mkdir /mnt/huge | |
chmod 777 /mnt/huge/ | |
fi | |
echo "Updating sysctl" | |
r=`grep nr_hugepages /etc/sysctl.conf` | |
if [ $? -eq 1 ]; then | |
echo "vm.nr_hugepages=256" >> /etc/sysctl.conf | |
# also make sure it is live on this run, in case fstab has been already updated | |
sysctl -w vm.nr_hugepages=256 | |
fi | |
echo "checking for iommu in GRUB" | |
r=`grep iommu=pt /etc/default/grub` | |
if [ $? -eq 1 ]; then | |
echo "iommu is missing from grub" | |
echo "please edit /etc/default/grub and make to append the below to GRUB_CMDLINE_LINUX" | |
echo "default_hugepagesz=1G hugepagesz=1G hugepages=8 iommu=pt intel_iommu=on pci=assign-busses" | |
echo 'example: GRUB_CMDLINE_LINUX="console=tty0 console=ttyS1,115200n8 biosdevname=0 net.ifnames=1 default_hugepagesz=1G hugepagesz=1G hugepages=8 iommu=pt intel_iommu=on pci=assign-busses"' | |
echo "after that run: update-grub && reboot" | |
echo "this will reboot your machine!" | |
echo "other things you may want to add are:" | |
echo "maxcpus=32" | |
echo "isolcpus=3-31" | |
exit 1 | |
fi | |
r=`grep intel_iommu=on /etc/default/grub` | |
if [ $? -eq 1 ]; then | |
echo "iommu is missing from grub" | |
echo "please edit /etc/default/grub and make to append the below to GRUB_CMDLINE_LINUX" | |
echo "default_hugepagesz=1G hugepagesz=1G hugepages=8 iommu=pt intel_iommu=on pci=assign-busses" | |
echo 'example: GRUB_CMDLINE_LINUX="console=tty0 console=ttyS1,115200n8 biosdevname=0 net.ifnames=1 default_hugepagesz=1G hugepagesz=1G hugepages=8 iommu=pt intel_iommu=on pci=assign-busses"' | |
echo "after that run: update-grub && reboot" | |
echo "this will reboot your machine!" | |
exit 1 | |
fi | |
echo "Going into /opt ..." | |
cd /opt | |
echo "Installing packages..." | |
apt-get -y update | |
apt-get -y upgrade | |
apt-get -y install python2.7 | |
apt-get -y install build-essential | |
apt-get -y install libnuma-dev | |
apt-get -y install pciutils | |
apt-get -y install libpcap-dev | |
apt-get -y install liblua5.3-dev | |
apt -y install libelf-dev | |
apt-get -y install linux-headers-`uname -r` || apt -y install linux-headers-generic | |
apt -y install meson python3-pyelftools git | |
git clone https://dpdk.org/git/dpdk | |
sudo rm -fr /usr/local/lib/x86_64-linux-gnu # DPDK changed a number of lib names and need to clean up | |
cd dpdk | |
meson build | |
ninja -C build | |
sudo ninja -C build install | |
sudo ldconfig # make sure ld.so is pointing new DPDK libraries | |
export PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-gnu/pkgconfig | |
git clone http://dpdk.org/git/apps/pktgen-dpdk | |
cd pktgen-dpdk | |
make | |
export RTE_SDK=/usr/local | |
export RTE_TARGET=x86_64-native-linux-gcc | |
echo 1 > /sys/class/net/eno1/device/sriov_numvfs | |
modprobe uio | |
modprobe vfio-pci | |
modprobe uio_pci_generic | |
dpdk-devbind.py -b uio_pci_generic 0000:03:02.0 | |
dpdk-devbind.py -s | |
./usr/local/bin/pktgen -- -T -P -m "2.[0]" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment