發表文章

目前顯示的是 1月, 2015的文章

Netlink Performance 測試

這篇文章的由來在於客戶說的一句話:「Netlink 的效能似乎不太好」客戶口中的不太好指的是 Throughput 只有 10Mbps。本來嘛,我想之後才處理這件事情,但結果我的一個同事 York 抱著追根究底的精神進行了下面的實驗。首先,他用一支 user space 的程式來產生封包到 kernel space 的模組,模組收到以後就將封包打回 user space。簡單來講究是一個 echo 的行為。下面會列出這兩隻程式: 實驗平台:某平台 Kernel 版本:3.10 User Space: #include #include #include #include #include #include #include #include #include #define NETLINK_TEST 18 //#define MAX_PAYLOAD 1024 //#define MAX_PAYLOAD 2048 //#define MAX_PAYLOAD 4096 #define MAX_PAYLOAD 8192 #define MESSAGE_COUNT 1048576 struct sockaddr_nl src_addr, dest_addr; struct msghdr msg; struct nlmsghdr *nlh = NULL; struct iovec iov; int sock_fd; void main() { int _i = 0; time_t startTime = 0; time_t endTime = 0; sock_fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_TEST); memset(&src_addr, 0, sizeof(src_addr)); src_addr.nl_family = AF_NETLINK; src_addr.nl_pid = getpid(); src_addr.nl_groups = 0; bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr)); memset