看板 Python 關於我們 聯絡資訊
因為計劃的關係 我需要知道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
suzuke:不是有現成的hdparm? 02/10 17:20
suzuke:還是說一定要用python寫? 02/10 17:20
CMJ0121:就是想用python寫! 其實是想問問看有沒有辦法做到而已~ 02/10 18:39
nowar100:write SSD 比 HD快不是很正常嗎 02/10 20:15
darkgerm:資料再大點看看?CrystalDiskMark預設是 1G 5 次 02/10 22:00
darkgerm:硬諜也有 buffer 搞不好還在那裡 02/10 22:00
CMJ0121:某些情況下 SSD會比HD慢喔~ 02/10 22:33
angusj:2329有類似的討論,不過解法和platform有關... 02/11 00:08
CMJ0121:他那種作法是讀檔案 不知道raw disk可不可以用= =? 02/11 00:59