IOPS vs 吞吐:买盘、看跑分,到底盯哪个数字
磁盘跑分里IOPS和MB/s两个数字,很多人只看大的那个。小够讲清两者的区别、分别对应什么场景,以及商家宣传时最爱拿哪个忽悠人。
我是小够。fio那篇讲了4K随机和顺序读写,这篇把另一个维度讲透:IOPS和吞吐(MB/s)到底是什么关系,看跑分时盯哪个。
两个数字,一种换算
吞吐(Throughput):单位时间搬了多少数据,MB/s。IOPS:单位时间完成了多少次IO操作,次/秒。两者换算公式:吞吐 = IOPS × 每次IO的大小。
所以4K随机读IOPS 10000,吞吐只有约40MB/s;1M顺序读IOPS 3000,吞吐能到3000MB/s。同一个盘,块越大,吞吐数字越好看,IOPS反而可能越低——这就是为什么商家宣传永远报大块顺序读:数字最大。
分场景看
- 建站/博客/数据库:小文件随机读写为主,盯IOPS(4K随机)。读IOPS过万是合格线,写IOPS更重要,数据库重度依赖随机写。
- 下载站/备份/传文件:大文件顺序读写,盯吞吐。1Gbps带宽也就125MB/s,盘的顺序读超过200MB/s就不会成为瓶颈。
- 系统盘:开机、装软件、日志写入,随机读写混合,IOPS优先。
一句话:日常用看IOPS,搬运看吞吐。商家只报吞吐不提IOPS的,多半是IOPS拿不出手。
看跑分的三个提醒
- 队列深度:fio的
iodepth=32和iodepth=1,IOPS能差几倍。对比两份跑分,参数必须一致。 - 读写混合:纯读IOPS最好看,
randrw(混合读写)更接近真实。只报纯读的,自动打七折看。 - 持续 vs 瞬时:有些盘前30秒IOPS爆表,之后掉一半(SLC缓存写满)。fio跑60秒以上、
time_based模式,才能看出持续性能。
一句话总结
IOPS是次数,吞吐是总量,块大小决定换算;建站盯IOPS,下载盯吞吐。看到商家报"3000MB/s"先别激动,问一句:4K随机IOPS多少?下一篇讲Speedtest数字和实际下载的差距:为什么测出来800M,下载只有50M?