[問題] 用python來測disk的速度

看板Python作者 (請多指教!!)時間13年前 (2012/02/10 17:03), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
因為計劃的關係 我需要知道disk的I/O速度 然後想用Python來寫一個benchmark 但是出現了很多問題 目前要測試 Read/Write的速度時 測Read 不管是一般的硬碟還是SSD我都會測到一樣的數據 測write SSD都大約是硬碟的兩倍 感覺上這很不合理 直覺猜測 觀測的時間並不是真實寫入到disk所花的時間 (資料可能還在記憶體就回傳結束的意思) write部分我有找到文章說 需要多加一個 os.fsync(dev)來確定把python的buffer清空往下送 但是資料可能還在os的記憶體還沒往下送 read的部分我就不知道該怎樣把記憶體的部分清空了 不知道有沒有人有類似的經驗 以下是我的code ======== def io_read(dev, dist_fn, timer=1, sector=8): count = 0 bound = 100000 pos = dist_fn(bound) start = time.time() while time.time() - start < timer: os.lseek(dev, pos.next(), 0) ret = os.read(dev, sector*512) os.fsync(dev) ret = None # update count count += sector*512 end = time.time() return compute(count, end-start) def io_write(dev,dist_fn, timer=1, sector=8): count = 0 bount = 1024 pos = dist_fn(bount) token = "".join( [ random.choice( string.letters) for n in range(sector*512) ] ) start = time.time() while time.time() - start < timer: # Shift the current pos os.lseek(dev, pos.next(), 0) # Get the write data and write to raw disk os.write(dev, token) os.fsync(dev) # update count count += sector*512 end = time.time() ======== -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.91.77

02/10 17:20, , 1F
不是有現成的hdparm?
02/10 17:20, 1F

02/10 17:20, , 2F
還是說一定要用python寫?
02/10 17:20, 2F

02/10 18:39, , 3F
就是想用python寫! 其實是想問問看有沒有辦法做到而已~
02/10 18:39, 3F

02/10 20:15, , 4F
write SSD 比 HD快不是很正常嗎
02/10 20:15, 4F

02/10 22:00, , 5F
資料再大點看看?CrystalDiskMark預設是 1G 5 次
02/10 22:00, 5F

02/10 22:00, , 6F
硬諜也有 buffer 搞不好還在那裡
02/10 22:00, 6F

02/10 22:33, , 7F
某些情況下 SSD會比HD慢喔~
02/10 22:33, 7F

02/11 00:08, , 8F
2329有類似的討論,不過解法和platform有關...
02/11 00:08, 8F

02/11 00:59, , 9F
他那種作法是讀檔案 不知道raw disk可不可以用= =?
02/11 00:59, 9F
文章代碼(AID): #1FDDr-Z2 (Python)
文章代碼(AID): #1FDDr-Z2 (Python)