測試程序分客戶端(client)及服務(wù)端(server). 服務(wù)端分別以select和epoll兩種I/O模型實現(xiàn).
1.連接建立速度測試
某個時刻連續(xù)向server發(fā)起大量連接請求,比較兩種I/O模型下Server端的連接接收速度。在客戶端記錄下連接數(shù)完全建立后所花費的時間.
操作步驟:
I.啟動服務(wù)端程序.
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令: (./EpollServer 192.168.0.30 8000 1>/dev/null)
參數(shù)1(192.168.0.30)為server綁定的IP, 參數(shù)2(8000)為server監(jiān)聽的端口號;
II.啟動客戶端程序
命令:./deadlink 192.168.0.30 8000 800
參數(shù)1(192.168.0.30)是server端的IP, 參數(shù)2(8000)是server監(jiān)聽的端口,參數(shù)3(800)是你想要建立連接的數(shù)量.等連接全部建立完畢后程序會自動打印出所花費的時間及成功建立的連接數(shù).每個連接數(shù)量記錄5組數(shù)據(jù),去除一個最大及最小值后,取余下的3組數(shù)據(jù)的平均值作為最終結(jié)果.
2.數(shù)據(jù)傳輸性能測試
client端創(chuàng)建若干線程,每個線程與server建立一個連接。連接建立后向server發(fā)送取數(shù)據(jù)請求,然后讀取server端返回的數(shù)據(jù).如此反復(fù)循環(huán)。每個client請求server返回的數(shù)據(jù)字節(jié)數(shù)為1K(1024bytes)大小.當(dāng)連接全部建立后,系統(tǒng)穩(wěn)定下來,記錄此時的服務(wù)程序?qū)?yīng)的CPU占用率及內(nèi)存使用率.每個連接數(shù)量記錄下12組數(shù)據(jù)供分析使用.分析結(jié)果中將除去一個最大值及最小值,取余下的10組數(shù)據(jù)的平均值作為最終結(jié)果。
操作步驟:
I啟動服務(wù)端
Selectserver命令:(./SelectServer 192.168.0.30 8000 1>/dev/null)
EpollServer命令: (./EpollServer 192.168.0.30 8000 1>/dev/null)
參數(shù)1(192.168.0.30)為server綁定的IP, 參數(shù)2(8000)為server監(jiān)聽的端口號;
II.啟動客戶端
命令: ./activelink 192.168.0.30 8000 800
參數(shù)1(192.168.0.30)是server端的IP, 參數(shù)2(8000)是server監(jiān)聽的端口,參數(shù)3(800)是你想要建立的線程數(shù)(連接數(shù)).因為每個線程建立一個連接,所以此數(shù)量亦即建立的連接數(shù)。
III. netstat –la | grep “192.168.0.250” | wc –l 查看連接數(shù)量,等待建立完成.此處192.168.0.250為客戶端機器IP地址。
IV.連接全部建立后等待5-6分鐘,待系統(tǒng)穩(wěn)定下來后top查看并記錄12 組Server 程序所占CPU/內(nèi)存使用率.
1.2 測試平臺說明
Server機器配置
CPU(處理器) Intel(R) Pentium(R) 4 CPU 2.40GHz, L2 cache size: 512 KB
RAM(內(nèi)存) 248384kb, 約為242M
OS(操作系統(tǒng)) Redhat Linux 9.0, kernel 2.6.16-20
NIC(網(wǎng)卡) 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(內(nèi)存) 222948kb, 約為218M
OS(操作系統(tǒng)) Redhat Linux 9.0, kernel 2.4.20-8
NIC(網(wǎng)卡) VIA Technologies VT6102 [Rhine-II] (rev 74)
1.3 測試工具說明
Server端程序:
源代碼文件:server.cpp (請用UE打開) ,運行make生成SelectServer 及 EpollServer可執(zhí)行文件.
客戶端程序:
源代碼文件:deadlink.cpp, activelink.cpp(請用UE打開),運行make生成deadlink(接收連接速度測試客戶端),activelink(數(shù)據(jù)傳輸測試客戶端)
2 測試結(jié)果
2.1 接收連接速度測試結(jié)果
表 2 1接收連接速度測試結(jié)果
連接數(shù)\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 數(shù)據(jù)傳輸性能測試
表 2 2數(shù)據(jù)傳輸性能測試結(jié)果
連接數(shù)\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]