1*a9643ea8Slogwang# F-Stack Quick Start Guide 2*a9643ea8Slogwang 3*a9643ea8Slogwang F-Stack is an open source high performance network framework based on DPDK. 4*a9643ea8Slogwang 5*a9643ea8Slogwang 6*a9643ea8Slogwang## System Requirements 7*a9643ea8Slogwang 8*a9643ea8SlogwangSee Intel DPDK [linux_gsg](http://dpdk.org/doc/guides/linux_gsg/index.html) 9*a9643ea8Slogwang 10*a9643ea8Slogwang## clone F-Stack 11*a9643ea8Slogwang 12*a9643ea8Slogwang mkdir /data/f-stack 13*a9643ea8Slogwang git clone https://github.com/F-Stack/f-stack.git /data/f-stack 14*a9643ea8Slogwang 15*a9643ea8Slogwang## Compile DPDK 16*a9643ea8Slogwang 17*a9643ea8SlogwangRead DPDK Quick Started Guide or run the command below 18*a9643ea8Slogwang 19*a9643ea8Slogwang cd /data/f-stack/dpdk/tools 20*a9643ea8Slogwang ./dpdk-setup.sh 21*a9643ea8Slogwang 22*a9643ea8SlogwangCompile with x86_64-native-linuxapp-gcc 23*a9643ea8Slogwang 24*a9643ea8Slogwang## Set hugepage 25*a9643ea8Slogwang 26*a9643ea8SlogwangFor a single-node system, the command to use is as follows (assuming that 1024 pages are required): 27*a9643ea8Slogwang 28*a9643ea8Slogwang echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages 29*a9643ea8Slogwang 30*a9643ea8SlogwangOn a NUMA machine, pages should be allocated explicitly on separate nodes: 31*a9643ea8Slogwang 32*a9643ea8Slogwang echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 33*a9643ea8Slogwang echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages 34*a9643ea8Slogwang 35*a9643ea8SlogwangOnce the hugepage memory is reserved, to make the memory available for DPDK use, perform the following steps: 36*a9643ea8Slogwang 37*a9643ea8Slogwang mkdir /mnt/huge 38*a9643ea8Slogwang mount -t hugetlbfs nodev /mnt/huge 39*a9643ea8Slogwang 40*a9643ea8SlogwangThe mount point can be made permanent across reboots, by adding the following line to the `/etc/fstab` file: 41*a9643ea8Slogwang 42*a9643ea8Slogwang nodev /mnt/huge hugetlbfs defaults 0 0 43*a9643ea8Slogwang 44*a9643ea8Slogwang## offload NIC 45*a9643ea8Slogwang 46*a9643ea8Slogwang modprobe uio 47*a9643ea8Slogwang insmod /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/build/kmod/igb_uio.ko 48*a9643ea8Slogwang insmod /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/build/kmod/rte_kni.ko 49*a9643ea8Slogwang python dpdk-devbind.py --status 50*a9643ea8Slogwang ifconfig eth0 down 51*a9643ea8Slogwang python dpdk-devbind.py --bind=igb_uio eth0 # assuming that use 10GE NIC and eth0 52*a9643ea8Slogwang 53*a9643ea8Slogwang## Compile lib 54*a9643ea8Slogwang 55*a9643ea8Slogwang cd ../../ 56*a9643ea8Slogwang cd lib 57*a9643ea8Slogwang make 58*a9643ea8Slogwang export FF_PATH=/data/f-stack 59*a9643ea8Slogwang export FF_DPDK=/data/f-stack/dpdk/x86_64-native-linuxapp-gcc 60*a9643ea8Slogwang 61*a9643ea8Slogwang### Compile Nginx 62*a9643ea8Slogwang 63*a9643ea8Slogwang cd ../ 64*a9643ea8Slogwang cd app/nginx-1.11.10 65*a9643ea8Slogwang ./configure --prefix=/usr/local/nginx_fstack --with-ff_module 66*a9643ea8Slogwang make 67*a9643ea8Slogwang make install 68*a9643ea8Slogwang cd ../../ 69*a9643ea8Slogwang ./start.sh -b /usr/local/nginx_fstack/sbin/nginx -c config.ini 70*a9643ea8Slogwang 71*a9643ea8Slogwang### Compile Redis 72*a9643ea8Slogwang 73*a9643ea8Slogwang cd app/redis-3.2.8/ 74*a9643ea8Slogwang make 75*a9643ea8Slogwang make install 76*a9643ea8Slogwang 77