[問題] 用python來測disk的速度
因為計劃的關係 我需要知道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
02/10 17:20, 1F
→
02/10 17:20, , 2F
02/10 17:20, 2F
→
02/10 18:39, , 3F
02/10 18:39, 3F
推
02/10 20:15, , 4F
02/10 20:15, 4F
推
02/10 22:00, , 5F
02/10 22:00, 5F
→
02/10 22:00, , 6F
02/10 22:00, 6F
→
02/10 22:33, , 7F
02/10 22:33, 7F
推
02/11 00:08, , 8F
02/11 00:08, 8F
→
02/11 00:59, , 9F
02/11 00:59, 9F
Python 近期熱門文章
PTT數位生活區 即時熱門文章