測試程序分客戶端(client)及服務端(server). 服務端分別以select和epoll兩種I/O模型實現.
1.連接建立速度測試
某個時刻連續向server發起大量連接請求,比較兩種I/O模型下Server端的連接接收速度。在客戶端記錄下連接數完全建立后所花費的時間.
操作步驟:
I.啟動服務端程序.
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令: (./EpollServer 192.168.0.30 8000 1>/dev/null)
參數1(192.168.0.30)為server綁定的IP, 參數2(8000)為server監聽的端口號;
II.啟動客戶端程序
命令:./deadlink 192.168.0.30 8000 800
參數1(192.168.0.30)是server端的IP, 參數2(8000)是server監聽的端口,參數3(800)是你想要建立連接的數量.等連接全部建立完畢后程序會自動打印出所花費的時間及成功建立的連接數.每個連接數量記錄5組數據,去除一個最大及最小值后,取余下的3組數據的平均值作為最終結果.
2.數據傳輸性能測試
client端創建若干線程,每個線程與server建立一個連接。連接建立后向server發送取數據請求,然后讀取server端返回的數據.如此反復循環。每個client請求server返回的數據字節數為1K(1024bytes)大小.當連接全部建立后,系統穩定下來,記錄此時的服務程序對應的CPU占用率及內存使用率.每個連接數量記錄下12組數據供分析使用.分析結果中將除去一個最大值及最小值,取余下的10組數據的平均值作為最終結果。
操作步驟:
I啟動服務端
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令: (./EpollServer 192.168.0.30 8000 1>/dev/null)
參數1(192.168.0.30)為server綁定的IP, 參數2(8000)為server監聽的端口號;
II.啟動客戶端
命令: ./activelink 192.168.0.30 8000 800
參數1(192.168.0.30)是server端的IP, 參數2(8000)是server監聽的端口,參數3(800)是你想要建立的線程數(連接數).因為每個線程建立一個連接,所以此數量亦即建立的連接數。
III. netstat –la | grep “192.168.0.250” | wc –l 查看連接數量,等待建立完成.此處192.168.0.250為客戶端機器IP地址。
IV.連接全部建立后等待5-6分鐘,待系統穩定下來后top查看并記錄12 組Server 程序所占CPU/內存使用率.
1.2 測試平臺說明
Server機器配置
CPU(處理器) Intel(R) Pentium(R) 4 CPU 2.40GHz, L2 cache size: 512 KB
RAM(內存) 248384kb, 約為242M
OS(操作系統) Redhat Linux 9.0, kernel 2.6.16-20
NIC(網卡) Realtek Semiconductor RTL-8139/8139C/8139C+ (rev 10), work on negotiated 100baseTx-FD
client機器配置
CPU(處理器) Intel(R) Pentium(R) 4 CPU 2.0GHz, L2 cache size: 512 KB
RAM(內存) 222948kb, 約為218M
OS(操作系統) Redhat Linux 9.0, kernel 2.4.20-8
NIC(網卡) VIA Technologies VT6102 [Rhine-II] (rev 74)
1.3 測試工具說明
Server端程序:
源代碼文件:server.cpp (請用UE打開) ,運行make生成SelectServer 及 EpollServer可執行文件.
客戶端程序:
源代碼文件:deadlink.cpp, activelink.cpp(請用UE打開),運行make生成deadlink(接收連接速度測試客戶端),activelink(數據傳輸測試客戶端)
2 測試結果
2.1 接收連接速度測試結果
表 2 1接收連接速度測試結果
連接數\IO模型 SelectServer(單位 秒s) EpollServer(單位 秒s)
100 0s 0s
200 0s 0s
300 6s 0s
400 14s 0s
500 24s 0s
600 36s 0.3s
700 48s 0s
800 59s 0s
900 72s 0s
1000 84s 0s
2.2 數據傳輸性能測試
表 2 2數據傳輸性能測試結果
連接數\IO模型 SelectServer [cpu%, mem%] EpollServer [cpu%, mem%]
100 [28.06, 0.3] [21.74, 0.3]
200 [43.66, 0.3] [40.50, 0.3]
300 [47.09, 0.3] [42.73, 0.3]
400 [59.04, 0.3] [44.55, 0.3]
500 [54.44, 0.3] [51.00, 0.3]
600 [63.38, 0.3] [50.76, 0.3]
700 [65.77, 0.3] [51.47, 0.3]
800 [70.52, 0.3] [52.80, 0.3]