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