├── nohz_full_rcu.sh ├── dpdk-profile.sh ├── README ├── tuned.conf └── Dockerfile /nohz_full_rcu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Moving all rcuo threads to core 0" 4 | for i in `pgrep rcuo` 5 | do taskset -pc 0 $i 6 | done 7 | echo "Done" 8 | -------------------------------------------------------------------------------- /dpdk-profile.sh: -------------------------------------------------------------------------------- 1 | export RTE_SDK=/root/dpdk-2.0.0 2 | export PKTGEN=/root/pktgen-dpdk-2.8.5-2 3 | export RTE_TARGET=x86_64-native-linuxapp-gcc 4 | alias menu='source $RTE_SDK/tools/setup.sh' 5 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Can you run Intel's Data-plane Development Kit (DPDK) in a container? Yep. 2 | 3 | http://developerblog.redhat.com/2015/06/02/can-you-run-intels-data-plane-development-kit-dpdk-in-a-docker-container-yep/ 4 | -------------------------------------------------------------------------------- /tuned.conf: -------------------------------------------------------------------------------- 1 | [main] 2 | include=network-latency 3 | 4 | [bootloader] 5 | # cmdline = audit=0 selinux=0 isolcpus=1-15 nosoftlockup mce=ignore_ce nohz_full=1-15 6 | 7 | # idle=poll takes precedence over force_latency=1 from network-latency profile 8 | # cmdline = audit=0 selinux=0 isolcpus=1-15 nosoftlockup mce=ignore_ce idle=poll nohz_full=1-15 9 | 10 | [script] 11 | script=/etc/tuned/dpdk/nohz_full_rcu.sh 12 | 13 | [sysctl] 14 | kernel.nmi_watchdog=0 15 | vm.stat_interval=10 16 | #vm.nr_hugepages=2048 17 | 18 | [sysfs] 19 | /sys/bus/workqueue/devices/writeback/cpumask = 1 20 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.access.redhat.com/rhel7/rhel-tools 2 | MAINTAINER jeder@redhat.com 3 | 4 | LABEL RUN docker run -it --privileged -v /sys/bus/pci/devices:/sys/bus/pci/devices -v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages -v /sys/devices/system/node:/sys/devices/system/node -v /dev:/dev --name NAME -e NAME=NAME -e IMAGE=IMAGE IMAGE" 5 | 6 | # Setup yum repos, or use subscription-manager 7 | 8 | # Install DPDK support packages. 9 | RUN yum install -y sudo libhugetlbfs-utils libpcap-devel \ 10 | kernel kernel-devel kernel-headers 11 | 12 | # Build DPDK and pktgen-dpdk for x86_64-native-linuxapp-gcc. 13 | WORKDIR /root 14 | COPY ./build_dpdk.sh /root/build_dpdk.sh 15 | COPY ./dpdk-profile.sh /etc/profile.d/ 16 | RUN /root/build_dpdk.sh 17 | 18 | # Defaults to a bash shell, you could put your DPDK-based application here. 19 | CMD ["/usr/bin/bash"] 20 | --------------------------------------------------------------------------------