最有效方式是直接对比挂载前后磁盘i/o表现:关注写入延迟下降幅度和块设备吞吐量提升程度,用iostat/iotop等系统命令采集数据,验证tmpfs是否生效并分析await、%util、吞吐量等指标变化。
直接对比挂载前后的磁盘 i/o 表现是最有效的方式。重点看两个指标:单位时间内的写入延迟下降幅度、以及块设备吞吐量提升程度。测试本身不依赖复杂工具,用系统自带命令就能完成闭环验证。
准备可复现的 I/O 压力场景
避免用随机写入或空跑测试,要模拟真实流水线中的高频临时文件操作:
- 在容器内运行一个循环脚本,持续向目标路径(如 /tmp 或 /app/build)写入小文件(1–10KB),每秒 50–200 次
- 使用 dd + sync 组合做同步写压测:
dd if=/dev/zero of=/tmp/testfile bs=4k count=10000 && sync,重复执行 10 次并统计耗时 - 若测试 CI 场景,可用轻量级构建命令替代,例如
npm pack或javac -d /tmp/classes *.java,它们天然触发大量中间文件读写
宿主机侧采集关键 I/O 数据
在容器运行的同时,在宿主机上运行以下命令抓取基线数据:
-
iostat -x 1 30:重点关注 %util(接近 100% 表示饱和)、await(平均 I/O 等待毫秒数)、w/s(每秒写入次数) -
iotop -oP -b -n 30 -d 1:过滤出活跃进程,确认是否是你的测试容器 PID 在主导写入 -
cat /proc/diskstats | awk '{print $4,$8}'(分别对应读完成数、写完成数),每秒采样,观察写计数增速变化
容器内验证 tmpfs 是否生效
进入容器后快速确认挂载配置和内存占用是否符合预期:
-
findmnt -t tmpfs:列出所有 tmpfs 挂载点,检查目标路径(如 /tmp)是否在其中,且参数含 size=xxx -
df -h /tmp:显示已用/总大小,确认它显示的是内存容量(如 “64M”),而非磁盘空间 -
mount | grep tmpfs:核对是否带 noexec,nosuid 等安全选项,防止误配导致绕过
对比分析与典型效果参考
同一压测脚本下,tmpfs 挂载后通常呈现以下趋势:
- await 值从 10–15ms 降至 1–2ms(SSD 场景)或从 30–50ms 降至 1–3ms(HDD 场景)
- %util 下降 40% 以上,尤其在并发写入时,其他容器或宿主机服务的 I/O 响应更稳定
-
写吞吐量(MB/s)提升 60%–90%,实测中
dd同步写 40MB 数据,tmpfs 耗时常为磁盘路径的 1/5–1/8 - 注意:若 free -h 显示可用内存未明显下降,说明 size 限制起效;若 OOMKilled 出现,则需调小 size 或检查应用是否真不需要持久化











