概览
之前有一个错误观点,认为 util 达到 100% 磁盘就已经完全繁忙了,其实并不是。
机械硬盘时代(比如15000转的盘),在物理层面是串行的,一个时间只能干一个活。虽然有各种级别的 concurrency ,但并不是真正的并行。SSD, RAID 则不同。他们可以真正在物理层面上并行执行多个IO。可以同时物理执行多个IO。
util 有一个简单的算法:
concurrency = (r/s + w/s) * (svctm / 1000)
util = concurrency * 100%
然而这个 concurrency 是个伪命题,因为 svctm 也是通过计算而来的,无论怎样请求,算出来的 concurrency 都是 1 左右,那么自然 util 出来就是100%。
基于此问题,本模型以 延迟(Latency)优先,结合 IOPS、带宽、队列深度、使用率与 SMART 健康信息,构建一个可量化、分级的“磁盘压力得分”(Disk Pressure Score)。
- 归一化:将各指标映射到 [0,1] 区间;
- 加权合成:对各归一化指标赋予权重,合成基础分数;
- SMART 风险调整:对介质健康与温度等 SMART 子指标映射为附加分;
- 分级告警:将最终得分映射至 “低/中/高/超压” 四档。
第一步:指标归一化
归一化必要性
我们要解决统一评分模型的两个问题:
- 不同指标(延迟 ms、带宽 MB/s、使用率 %)需在同一刻度下比较;
- 映射后可线性组合,简化计算;
而归一化算法提供给我们统一量纲和易于加权的两大优势,这样就能直接用起来。
归一化公式逻辑
将各指标统一映射到 [0,1],这里我们采用 Min–Max 饱和变体:
采用饱和变体的原因是:
- 在线性区间内:压力与指标值成正比。
- 可以提供饱和保护:避免极端值放大影响。
- 计算高效:仅需除法与最小值运算,适合秒级更新
指标归一化方法
将各项原始指标映射到区间 [0,1],记作 f_x,数值越大表示压力越高。
| 原始指标 | 归一化公式 | 说明 |
|---|---|---|
| 延迟 L | f_L = min(L / L_ref, 1) | 以参考延迟 L_ref(如 1 ms)为分母。 |
| IOPS I | f_I = min(I / I_max, 1) | I_max 可取设备峰值或 SLA 要求。 |
| 吞吐量 B (MB/s) | f_B = min(B / B_max, 1) | B_max 参考厂商规格或总线带宽上限。 |
| 队列深度 Q | f_Q = min(Q / Q_max, 1) | Q_max 可取 NVMe 最大队列深度。 |
| 使用率 U (%) | f_U = U / 100 | 高于 90% 时风险较大。 |
第二步:基础压力得分计算
采用线性加权模型将各归一化指标合成为基础压力得分 Score_base:
其中权重满足 。
权重示例
- 延迟:
- IOPS:
- 吞吐量:
- 队列:
- 使用率:
第三步:SMART 健康风险调整
SMART 子项反映磁盘健康。定义两个风险因子并映射为附加分 A:
-
剩余寿命风险
其中 (unit:%) 为剩余介质寿命。
-
温度风险
设 为安全温度(如 70 °C)、 为临界温度(如 80 °C)。
附加分:
例如 、。
最终总得分:
第四步:压力分级与告警
| 分值区间 | 级别 | 建议动作 |
|---|---|---|
| 0–30 | 低压 | 正常,持续秒级监控 |
| 30–60 | 中压 | 关注趋势,检查指标波动 |
| 60–80 | 高压 | 优化/扩容,检查热点 |
| 80–100 | 超压 | 紧急,SMART 告警,迁移或降载 |
实时应用与优化建议
-
EWMA 平滑
-
读写分离 分别计算读写延迟归一化,再按比例加权。
-
阈值自适应 定期调整 ,实现模型自校准。
-
多维告警 除综合得分外,单独监控延迟、温度阈值,保证极端情况不遗漏。
参考&引用
-
公式与时间常数关联
www.investopedia.com/articles/07… -
Min–Max 归一化变体
www.geeksforgeeks.org/ml-feature-… -
Feature Scaling 概览
en.wikipedia.org/wiki/Featur… -
NVMe 延迟对比
www.simplyblock.io/glossary/nv… -
SMART 监控系统
en.wikipedia.org/wiki/Self-M… -
IOPS 与吞吐关系
buffalotech.com/blog/iops-v… -
队列深度性能影响
serverfault.com/questions/4… -
PCIe 带宽参考
www.trentonsystems.com/en-gb/blog/… -
写密集型队列优化
www.snia.org/sites/defau… -
队列深度与吞吐示例
superuser.com/questions/8… -
SMART 温度与寿命映射
www.smartmontools.org/ -
SSD 健康监控实施
www.nagios.com/solutions/s… -
NVMe 规范概览
nvmexpress.org/wp-content/…