實際測試下文件IO,有一個感性認識

環境(戴爾服務器):cpu:43.1GHZ 內存:4G

 

1.        寫文件速度測試結果(測試時間:10S)

環境:死循環進行寫文件,隨着循環輪詢每個文件,每次循環把內容寫入輪到的這個文件

條件(輪詢寫文件的個數)

結果(文件大小總和:單位G)

1

1.50

2

1.44

100

1.39

500

1.35

1000

1.31

2000

1.24

3000

1.20

5000

1.15

上面是單線程模式。後面又嘗試了一下多線程模式,發現數據差不多,沒有什麼區別。

結論:

1、  服務器文件IO速度大概是150M/S

2、  隨着寫文件數目的增多,IO速度減少。這裏是磁盤尋道時間在影響速度。

3、  單個線程即可使IO達到頂峯。說明CPU處理能夠遠比IO處理要快。

 

 

結論:隨着讀寫文件的增多,單位時間內寫的速度會降低

 

 

2.        tcp通信recvsend時間比較

環境:tcp服務器和客戶端(非阻塞) 每次發送和接受的緩衝爲1000字節

發包間隔

send函數執行時間(us)

recv函數執行時間(us)

usleep 50000

9

10

usleep 5000

7

6

usleep 0

1

2

 

結論:tcp發包執行時間與udp發包時間差不多,但是收包要比udp慢很多

 

tcprecv cpu時間較多。

 

 

3.        udp通信recvsend時間比較

環境:udp服務器和客戶端(非阻塞) 每次發送1000字節,接收爲4096字節

發包間隔

send函數執行時間(us)

recv函數執行時間(us)

usleep 50000

8

1

usleep 25000

8

1

usleep 5000

8

1

usleep 0

2

0

結論:通過上面發現,TCP的發包和UDP在時長上差別不大。但是在收包上要比udp慢。cpu消耗也大。


 

 

4.        寫文件時測試 fwrite函數執行時間

執行過程:文件打開後,連續fwrite20次,得到每次調用fwrite的時間

注意:(用我自己虛擬機測試,戴爾服務器測試過程中沒有出現)測試得到的結果有可能會全部時間爲0或者部分爲0,而且全部測試過程都有概率出現這種情況,

每次fwrite的字節數

規律(調用時間較長的是哪幾次)

500

1917

1000

1591317

2000

135791113151719

3000

12356791011131416171820

4000

每次調用時間都較長

5000

每次調用時間都較長

6000

每次調用時間都較長

 

結論:內核buf 4096,每次發送的數據超過4096時,每次發送調用的時間都較長

發佈了291 篇原創文章 · 獲贊 48 · 訪問量 158萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章