作者CMJ0121 (請多指教!!)
看板Python
標題[問題] 用python來測disk的速度
時間Fri Feb 10 17:03:56 2012
因為計劃的關係 我需要知道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