我试图估计在32位CentOS 6.2上运行的应用程序的IOPS要求。我开始在装有SATA磁盘的计算机上进行一些测量,但对SAR测量的IOPS和tps之间的差异感到非常困惑。
根据维基百科, SATA磁盘应执行75-100 IOPS。ioping实用程序似乎可以为随机访问测试确认这一点:
# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms
但是sar产生的tps值要高得多(/ dev / sda):
# iostat 1
avg-cpu: %user %nice %system %iowait %steal %idle
0.17 0.00 2.02 14.86 0.00 82.96
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 559.00 0.00 142600.00 0 142600
dm-0 18433.00 0.00 147464.00 0 147464
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0 0
它实际上并不介意此负载是顺序的(具有各种块大小的dd)还是随机访问的(ioping),值仍然相同。我以为tps实际上是IOPS,我希望它会随着更大的块传输而下降。
那么tps值到底是什么意思?以及它与IOPS有何关系?
2
我相信您会因为磁盘缓存而在TPS值中看到更高的IOPS。
—
ceejayoz
好的,我尝试通过dd用256kB块通过dd提取一个10GB的文件来实际填充缓存,并且〜90秒后,tps降至〜200,所以也许您是对的。但是80和200还是有很大的区别...读写IOPS是否可能不同?是否有任何方法可以从此值中找出所需的IOPS?
—
pystole 2013年
您能描述一下为什么要进行IOPS吗?读和写是一双完全不同的鞋子,它们被扔进了同一个锅里。
—
Nils 2013年
原因是我需要描述最低硬件要求。我有一台服务器,它通过网络接收数据(我们可以在这里假设恒定的比特率)并将接收到的数据写入磁盘。数据被顺序地写入文件,但是可以并行地有数百个(例如800个)。我已经发现,当客户数量达到一定程度时,我就会开始获得大量的iowait。我可以实现的实际磁盘吞吐量约为25MB / s,这是相当低的,具有较高比特率的客户端较少的可以达到35MB / s,纯顺序的约为130MB / s。所以我想IOPS在这里很重要...
—
pystole 2013年