Steam內存測試工具【轉】

轉自:https://www.cnblogs.com/iouwenbo/p/14377478.html

Stream測試是內存測試中業界公認的內存帶寬性能測試基準工具。

Stream安裝

官方源碼地址:http://www.cs.virginia.edu/stream/FTP/Code/stream.c

配好軟件源,安裝編譯器:

yum -y install gcc

上傳Stream.c(stream.c版本爲5.9)到待測試機器。編譯:

gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream

編譯參數解釋:

  • -O3:指定最高編譯優化級別,即3
  • -fopenmp:啓用OpenMP,適應多處理器環境,更能得到內存帶寬實際最大值。開啓後,程序默認運行線程爲CPU線程數
  • -DN=2000000:指定測試數組a[]、b[]、c[]的大小(Array size)。該值對測試結果影響較大(5.9版本默認值2000000,。若stream.c爲5.10版本,參數名變爲-DSTREAM_ARRAY_SIZE,默認值10000000)。注意:必須設置測試數組大小遠大於CPU 最高級緩存(一般爲L3 Cache)的大小,否則就是測試CPU緩存的吞吐性能,而非內存吞吐性能。

推薦計算公式:

{最高級緩存X MB}×1024×1024×4.1×CPU路數/8,結果取整數

解釋:由於stream.c源碼推薦設置至少4倍最高級緩存,且STREAM_ARRAY_SIZE爲double類型=8 Byte。所以公式爲:最高級緩存(單位:Byte)×4.1倍×CPU路數/8

例如:測試機器是雙路CPU,最高級緩存32MB,則計算值爲32×1024×1024×4.1×2/8≈34393292

Stream測試原理

  • -DNTIMES=10:執行的次數,並從這些結果中選最優值。
  • stream.c:待編譯的源碼文件
  • stream:輸出的可執行文件名

其他參數:

  • -mtune=native -march=native:針對CPU指令的優化,此處由於編譯機即運行機器。故採用native的優化方法。更多編譯器對CPU的優化參考
  • -mcmodel=medium ;當單個Memory Array Size 大於2GB時需要設置此參數
  • -DOFFSET=4096 ;數組的偏移,一般可以不定義

Stream使用

使用命令指定運行線程爲X:
export OMP_NUM_THREADS=X

在編譯輸出的可執行文件(stream)所在目錄下運行:
./stream
Stream測試結果示例:

Stream測試結果示例

附stream.c v5.10源碼中的介紹:

附stream.c v5.10源碼中的介紹

參考:

內存性能的正確解讀

內存測試Stream程序分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章