1、性能基础:读写延迟与吞吐量的核心概念,如何量化评判系统I/O性能

做性能优化这么多年,我越来越觉得——所有问题到最后都归结为两个数字:延迟和吞吐量。不管你调数据库、优化存储还是搞分布式系统,最终都要跟这两个指标打交道。今天咱们先把这两个概念彻底讲透。

1.1 延迟:系统要你等多久?

延迟是什么?说白了,就是你发一个读写请求,系统要多久才能给你回应。单位通常是微秒(μs)或毫秒(ms)。我个人习惯把延迟看作是系统的"反应速度",它直接决定了每次操作要等多久。

为什么会慢?从流程上看,延迟 = 排队延迟 + 服务延迟。请求到了系统,先排队等资源,然后才被处理。你想想看,高峰期去银行办业务,排队半小时,办业务5分钟——那半小时就是排队延迟。存储系统也是这个道理。

不同存储介质的延迟差别巨大,我列个表格给你看:

存储介质 随机读延迟 (4K) 顺序读带宽 典型IOPS (4K随机)
机械硬盘 10–20 ms ~200 MB/s 100–200
SATA SSD 0.1–0.2 ms ~500 MB/s 10K–50K
NVMe SSD 0.02–0.1 ms 3–7 GB/s 100K–1M+
内存 ~0.1 μs 10–50 GB/s 极高

我在项目中遇到过磁盘延迟从2 ms飙升到200 ms的情况。现象很简单——接口响应变慢,数据库连接池被打满。查了一圈才发现是磁盘队列堆积,大量请求在排队,服务延迟被拉高。那次之后我养成一个习惯:延迟不仅要看平均值,更要看分位值。

核心要点:延迟由排队延迟和服务延迟构成。不同介质延迟跨度从微秒到毫秒,选型时要心中有数。

1.2 吞吐量:系统能搬多少?

吞吐量衡量的是系统在单位时间内能处理多少I/O请求。两个常见的度量方式:IOPS 和 带宽。

IOPS 关注的是"次数"——每秒能执行多少次I/O操作。适合小数据块、高并发的场景,比如数据库OLTP。带宽关注的是"数据量"——每秒能传输多少字节。适合大数据块、流式传输的场景,比如视频转码、日志采集。

我记得有一次帮客户做数据库迁移,他们只盯着IOPS看。换了高性能SSD后,IOPS确实上去了,但带宽成了瓶颈,大查询依然慢。后来一测,顺序读带宽只有标称值的60%。你看,单一指标容易骗人。

小提示:IOPS和带宽是吞吐量的两个侧面。小数据块看IOPS,大数据块看带宽,混合场景两者都要看。

1.3 延迟与吞吐量的关系

这两个指标不是独立的。系统负载低时,延迟很稳定;随着负载增加,吞吐量上升,延迟也开始上升。到了某个点,吞吐量不再增加,延迟却急剧飙升。这个点就是性能拐点。

为什么会这样?因为系统资源是有限的。当并发请求超过系统的处理能力,请求就开始排队,排队时间越长,延迟越高。你想想看,高速公路上车少的时候跑得又快又顺畅,车一多就开始堵,速度直线下降。

下面这张图展示了读写性能的核心概念体系,帮你理清延迟、吞吐量以及它们之间的关系:

读写性能核心概念体系 延迟 (Latency) 吞吐量 (Throughput) 平均延迟 P99 / P999 最大延迟 IOPS 带宽 (MB/s) ← 上一章 📖 返回目录 下一章 →