[問題] CPU BenchMark 原理 / 實作

看板C_and_CPP (C/C++)作者 (卡卡獸)時間12年前 (2013/11/09 18:11), 編輯推噓3(3013)
留言16則, 2人參與, 最新討論串1/1
開發平台(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)

11/09 20:01, , 1F
cpu種類?不同的cpu技術不一樣,kernel支援的程度也不一
11/09 20:01, 1F

11/09 20:01, , 2F
樣。要不要列出你的cpu和kernel版本?
11/09 20:01, 2F

11/09 20:05, , 3F
疑!進一步請教一下,若不同cpu技術不同的話,意指市面上的
11/09 20:05, 3F

11/09 20:07, , 4F
benchmark也會有這問題? 因到時產品會連整個主機一起販售,
11/09 20:07, 4F

11/09 20:08, , 5F
故我沒拿到主機, 要討論的話可暫以 i7-4770k 討論
11/09 20:08, 5F

11/09 20:09, , 6F
有些cpu不同core的L2 chache根本沒共用啊
11/09 20:09, 6F

11/09 20:10, , 7F
有共用和沒共用,測出來的結果肯定不一樣吧
11/09 20:10, 7F

11/09 20:10, , 8F
簡單的說在multi-core的狀況下,很多問題變的很複雜
11/09 20:10, 8F

11/09 20:13, , 9F
原來如此,我以為和測 HDD 的方式一樣就過了 Orz
11/09 20:13, 9F

11/09 20:15, , 10F
基本上測HDD我們只是看到結果,其實這中間從上到下牽扯到
11/09 20:15, 10F

11/09 20:15, , 11F
OS層的disk cache實作方式,往下是OS對不同multi-core的
11/09 20:15, 11F

11/09 20:16, , 12F
支援程度,最後才是HDD讀寫速度
11/09 20:16, 12F

11/09 20:17, , 13F
難怪,這樣看下來要測 cache 會複雜很多了..謝謝。
11/09 20:17, 13F

11/09 20:19, , 14F
如果你要比的話,os版本和cpu的版本固定可以拿來測
11/09 20:19, 14F

11/09 20:20, , 15F
但是不同os/cpu測出來的數據就不可以拿來比了,除非你很
11/09 20:20, 15F

11/09 20:20, , 16F
確定中間發生了什麼事
11/09 20:20, 16F
文章代碼(AID): #1IVWffRh (C_and_CPP)
文章代碼(AID): #1IVWffRh (C_and_CPP)