作者EdisonX (卡卡獸)
看板C_and_CPP
標題[問題] CPU BenchMark 原理 / 實作
時間Sat Nov 9 18:11:49 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
windows
問題(Question):
前陣子工作是先要測 H.D.D. 在大檔的讀寫速度,(先行的效能瓶頸測試與改善)
我的做法是去 malloc 一大塊記憶體,填值進去,
再以 fwrite / fread 做計時,去算硬碟讀寫速度,
"平均下來" 其實和現有的 benchmark 測出來差不多,
只是不知道是不是因為磁頭硬碟需要 seek time 的關係,
所以測出來的標準差還蠻大的
( 結果還蠻飄的,最極端的例子是第一、二次測的時候是 10MB/s ,
接下來七、八次測的時候是 1xx MB/s ) ,
請問這屬正常情況?如果到時要實際應用的話,我可以先故意對 H.D 先寫一
個大檔做預熱?
----
後來再看其他的 benchmark,還會測 L1, L2, L3 cache latency ,
這點其實我很納悶,一開始初步的想法是,
for(int i = 0 ; i < ARY_SIZE ; ++i)
sum = sum + s[i];
對上述敘述做計時 ,不知道這種設計方式是否可行?
不過最讓我納悶的是,benchmark 測出的 cache latency 精度可以達到 xx ns ,
這點讓我存疑到底準不準,因目前眾所皆知, windows 計時器準度/穩定度有點
待議,目前 wins 最推的大概是 QueryPerformanceCounter , 我覺得要到 ns 有
點勉強," 在想 " 用 rdtsc 加上 SetThreadAffinityMask 不知道辦不辦得到?
另就算辦到了,不知 L1 cache latency / L2 cache latency / L3 cache latency
是怎分開測? source code 架構是否會不同?
---
綜合問題 ---
1. fwrite / fread 做為 硬碟讀寫速度測試 是否可行
2. cache latency 該如何測試
3. 如何設計測試 L1, L2, L3 cache latency
4. 高精度計時器能否使用 rdtsc + SetThreadAffinityMask 方式達成?
補一下,如果知道一些 benchmark 的 coding 技巧、概念,歡迎分享,
我會非常感激。
謝謝各位不吝指教 感激不盡。
--
就算把新鮮的肝拿回去,還是一樣寫碼到禿頭,加班到天亮,
永遠當老闆的傀儡 你是不是想這麼做?
是的話你就拿回去~ 拿啊!!
九世宅男 : 下輩子不要再讓我幹工程師了 ~
< Kuso 星爺語錄 >
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.74.188
※ 編輯: EdisonX 來自: 180.177.74.188 (11/09 18:14)
推 cobrasgo:cpu種類?不同的cpu技術不一樣,kernel支援的程度也不一 11/09 20:01
→ cobrasgo:樣。要不要列出你的cpu和kernel版本? 11/09 20:01
→ EdisonX:疑!進一步請教一下,若不同cpu技術不同的話,意指市面上的 11/09 20:05
→ EdisonX:benchmark也會有這問題? 因到時產品會連整個主機一起販售, 11/09 20:07
→ EdisonX:故我沒拿到主機, 要討論的話可暫以 i7-4770k 討論 11/09 20:08
→ cobrasgo:有些cpu不同core的L2 chache根本沒共用啊 11/09 20:09
→ cobrasgo:有共用和沒共用,測出來的結果肯定不一樣吧 11/09 20:10
→ cobrasgo:簡單的說在multi-core的狀況下,很多問題變的很複雜 11/09 20:10
→ EdisonX:原來如此,我以為和測 HDD 的方式一樣就過了 Orz 11/09 20:13
推 cobrasgo:基本上測HDD我們只是看到結果,其實這中間從上到下牽扯到 11/09 20:15
→ cobrasgo:OS層的disk cache實作方式,往下是OS對不同multi-core的 11/09 20:15
→ cobrasgo:支援程度,最後才是HDD讀寫速度 11/09 20:16
→ EdisonX:難怪,這樣看下來要測 cache 會複雜很多了..謝謝。 11/09 20:17
推 cobrasgo:如果你要比的話,os版本和cpu的版本固定可以拿來測 11/09 20:19
→ cobrasgo:但是不同os/cpu測出來的數據就不可以拿來比了,除非你很 11/09 20:20
→ cobrasgo:確定中間發生了什麼事 11/09 20:20