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