作者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
1F:→ suzuke:不是有现成的hdparm? 02/10 17:20
2F:→ suzuke:还是说一定要用python写? 02/10 17:20
3F:→ CMJ0121:就是想用python写! 其实是想问问看有没有办法做到而已~ 02/10 18:39
4F:推 nowar100:write SSD 比 HD快不是很正常吗 02/10 20:15
5F:推 darkgerm:资料再大点看看?CrystalDiskMark预设是 1G 5 次 02/10 22:00
6F:→ darkgerm:硬谍也有 buffer 搞不好还在那里 02/10 22:00
7F:→ CMJ0121:某些情况下 SSD会比HD慢喔~ 02/10 22:33
8F:推 angusj:2329有类似的讨论,不过解法和platform有关... 02/11 00:08
9F:→ CMJ0121:他那种作法是读档案 不知道raw disk可不可以用= =? 02/11 00:59