单靠一次 uptime 命令无法反映15分钟内负载动态变化,因其输出是指数衰减加权平均值而非实时采样;需每30秒采集一次并绘制成时间序列折线图,结合1/5/15分钟负载关系判断波动类型。

单靠一次 uptime 命令只能看到当前三个时间窗口(1/5/15 分钟)的瞬时快照,无法反映“十五分钟内”的动态变化过程。要真正分析负载在 15 分钟尺度上的波动轨迹,必须持续采集、打上精确时间戳,并形成时间序列数据。
为什么不能只看一次 uptime?
uptime 输出的三个数字是指数衰减加权平均值:1 分钟负载响应最快,15 分钟负载最平滑。它们本身不是“过去 15 分钟每秒的平均”,而是系统内核按固定算法滚动计算的结果。想观察“15 分钟内的波动”,实际需要的是高频采样后绘制的折线图——比如每 30 秒记录一次 1 分钟负载值,连续采 30 次,就能覆盖完整 15 分钟窗口并看清起伏节奏。
用 shell 脚本做轻量级持续采集
无需安装额外软件,用基础命令组合即可稳定记录:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 推荐间隔设为 30 秒:比 1 分钟负载的更新周期更细,能捕捉短时尖峰;又不会因过密采样造成日志膨胀或调度干扰
- 命令示例(后台运行):
while true; do echo "$(date '+%Y-%m-%d %H:%M:%S'),$(uptime | awk -F'load average:' '{print $2}' | sed 's/ //g')" >> /var/log/load-15min.csv; sleep 30; done - 日志格式为 CSV:时间,1min,5min,15min(如
2026-04-30 01:20:30,0.87,0.62,0.55),方便后续绘图或导入 Excel - 采集 30 次即得 15 分钟完整轨迹;若需长期监控,可加
head -n 1800控制文件大小(保留最近 15 小时)
用 gnuplot 快速画出 15 分钟波动图
安装 gnuplot 后,一行命令生成清晰趋势图:
- 执行:
gnuplot -e "set xdata time; set timefmt '%Y-%m-%d %H:%M:%S'; set format x '%M:%S'; set xlabel 'Time (Last 15 min)'; set ylabel 'Load'; plot '/var/log/load-15min.csv' using 1:2 with lines title '1-min load'" - 关键点:
•set format x '%M:%S'让横轴只显示分秒,突出 15 分钟内节奏
•using 1:2表示取第 1 列(时间)和第 2 列(1 分钟负载)作图
• 图中若出现明显锯齿或阶梯状上升,说明有短时任务密集触发;若呈缓坡,则可能是后台服务逐步升温
结合三组数值判断波动性质
光看 1 分钟负载曲线不够,要同步观察它与 5/15 分钟值的关系:
- 尖峰型波动:1 分钟值突然跳高(如从 0.3 → 2.1),但 5/15 分钟值几乎不变 → 瞬时任务(如 cron 脚本、日志轮转),通常无需干预
- 爬升型波动:1 分钟 > 5 分钟 > 15 分钟,且三者差值持续扩大 → 负载正在积累,可能有内存泄漏、连接未释放或定时任务堆积
- 平台型波动:三值接近(如 1.8, 1.7, 1.6),且整体高于 CPU 核心数 → 系统已进入稳态高负载,需查 top 或 ps 看长时进程










